J'essaie de trouver le symbole connect
dans le fichier libcrypto.so
en utilisant dlsym() et je veux remplacer ce connect
par ma méthode.Comment changer la valeur du pointeur de retour dlsym()
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){
**
***********
***************
**********
}
Mon mon application se est écrasé avec l'erreur
is not NULL
Fatal signal 11 (SIGSEGV), code 2, fault addr 0xb6e4755d in tid 7909
-ce que je fais quelque chose de mal.
Pourquoi android est-il balisé? – Zarwan
Veuillez corriger l'indentation de votre code. Vous devez utiliser des pointeurs de fonction. Un 'unsigned *' n'est pas un pointeur de fonction valide. – RedX
1. Vous ne pouvez pas faire cela 2. Ce code n'a pas de sens même si vous pouviez le faire. – hobbs