Bonjour,
J'ai suivis ce tutoriel pour comprendre l'injection de bibliothèque sous Linux : https://tiger-222.fr/?d=2013/04/09/1...random-crackme
Voici le code de mon hook qui est le même que sur le site :
Je bloque donc à l'étape 4. Quand il s'agit de lancer le crackme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #define _GNU_SOURCE #include <stdio.h> #include <dlfcn.h> int strcmp(const char *str1, const char *str2) { printf("[Hook strcmp] str1 = %s\n", str1); printf(" str2 = %s\n", str2); typeof(strcmp)* function; function = dlsym(RTLD_NEXT, "strcmp"); return (*function)(str1, str2); }
J'obtiens l'erreur suivante :
ERROR: ld.so: object '/tmp/libstrcmp.so' from LD_PRELOAD cannot be preloaded: ignored.
Pourtant, j'ai bien lancer la commande : export LD_PRELOAD=/tmp/libstrcmp.so
Par contre, quand je fais la commande : ls /tmp
Mon hook semble fonctionner, car j'obtiens les printf contenus dans le code précédent.
J'ai également fais un autre programme en C pour tester mon hook :
Quand je lance ce code, je n'ai aucun message d'erreurs, et j'obtiens tout le temps "Test2", sans pour autant avoir les printf de mon hook.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include<stdio.h> #include<stdlib.h> int main(){ if(strcmp("test", "test")){ printf("Test1\n"); } else{ printf("Test2\n"); } return 0; }
J'ai aussi fais un autre hook sur la fonction printf :
Qui ne fonctionne pas non plus...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> int printf(const char *format, ...){ exit(0); }
Si quelqu'un pouvait m'éclaircir, je débute sur le sujet.







Répondre avec citation
Partager