Я пытаюсь найти connect
символ в файле libcrypto.so
с помощью dlsym() и хочу заменить этот connect
моим методом.Как изменить dlsym() return pointer value
void * lib_orig_tols = dlopen(libcrypto.so, RTLD_GLOBAL);
void * p_orig_connectOriginal;
p_orig_connectOriginal = (void*)dlsym(lib_orig_tols, "connect");
if (p_orig_connectOriginal != NULL)
{
LOGI(" is not NULL");
void *p_orig_connect = (void*)*((unsigned *)p_orig_connectOriginal);
*((unsigned *)p_orig_connectOriginal) = (unsigned)(my_crypto_connect);
}
int my_crypto_connect(int , const struct sockaddr , socklen_t){
**
***********
***************
**********
}
Мое мое приложение получило разбилось с ошибкой
is not NULL
Fatal signal 11 (SIGSEGV), code 2, fault addr 0xb6e4755d in tid 7909
делать я делаю что-то неправильно.
Почему android отметил? – Zarwan
Исправьте код вашего кода. Вы должны использовать указатели на функции. «Unsigned *» не является допустимым указателем функции. – RedX
1. Вы не можете этого сделать. 2. Этот код не имеет смысла, даже если вы можете это сделать. – hobbs