chess8
Messages postés1Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention31 octobre 2004 31 oct. 2004 à 19:45
Quelques problemes. Le code d'origine ne marche pas. Pour etre plus précis, l'injection se fait théoriquement bien (message depuis injector.exe correct).
Une précision, je suis sur win2k, sp4.
J'ai fais quelques modifs sur injector pour avancer un peu plus :
- injector n'est plus console mais un prog win, cela marche visiblement mieux.
- J'utilise LoadLibraryA (au lieu de W). Avant cette modif, le message box placé juste aprés le case DLL_PROCESS_ATTACH de hooker ne s'affichait pas.
Le code s'arrete maintenant sur while (pITDAddr->u1.Function !0). En fait, il ne rentre pas dans la boucle donc pITDAddr->u1.Function 0.
Voila. Sinon, j'ai trouvé un code trés ressemblant à hooker.c ici :
http://www.xeberon.net/view.php?id=100&page=0 Il a l'avantage d'etre trés commenté concernant les structures utilisées (entres autres). En revanche, il n'y a pas d'injecteur.
J'essaye de continuer d'avancer. Merci pour le code.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 23:29
C Runtime
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 23:28
CRT = C Runtime Library, les dépendances à MSVCRT.DLL des fichiers générés par MinGW... Mais çà ne venait pas de là, je ne vois pas ce qui cloche chez notre ami vecchio :-/
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 9 oct. 2004 à 23:26
chez moi, les deux exe marche(pas compilé: ceux du zip) . Je vois pas pourquoi il y aurais une différence, j'ai codé le même truc chez moi avec Dev-Cpp et MingW et çà marche impec le pb est surrement autre par comme un paramètre faculatatif qui n'a pas la même valeur par défaut sur les deux compilos(comme les pragma peut-être) .
Pour info, modifier ton code pour le rendre plus propre n'est pas dur, il suffit de remplacer les constante de texte par des variable et d'en faire une fonction .
C'est quoi CRt ????
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 22:13
Ah... Ben là je vois pas :-/ Tu me permets de t'envoyer deux binaires sans CRT ? Je serais pas étonné que çà vienne encore de celle là...
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 22:11
Peu importe, j'utilise TES executables
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 22:09
Quelle version de GCC / binutils / mingw-runtime / w32api tu as donc ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 22:07
Version GCC marche pas, désolé.
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 22:04
vecchio > les deux marchent chez moi... ne me dis pas que tu as encore un problème ? :s
Pamaury > c'est sûr que ce serait mieux, mais là je voulais surtout comprendre comment marchait le truc, ce qui implique un truc simple dans un premier temps ;)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 22:02
Et la version MinGW marche aussi chez toi?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 21:59
AlexMAN> J'ai juste changé 2 ou 3 trucs dans SHELL32.DLL, pas de quoi s'alarmer ;)
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 9 oct. 2004 à 21:50
intéressant, j'ai fait le même mais j'ai fait un truc de plus qui est très util si on veux hacker un exe jusqu'au bout : intercepté :
->Les API loadée dynamiquement(avec un GetProcAddress)
->Les API appelée depuis une dll chargée dans le processus(ex: prog.exe appèle TrucMachin dans machin.dll qui appèle MessageBoxA)
Voilà, sinon c'est vrai que c'est assez crade et surtout, il faudrait faire une fonction qui permet de hacker UNE FONCTION SPECIFIQUE dans UNE DLL SPECIFIQUE d'un EXE ou DLL SPECIFIQUE
ex(tiré de mon code):
int HookAPIEx(LPTSTR lpszModule,LPTSTR lpszDll,LPTSTR lpszApi,LPVOID lpNewApi,LPVOID *lpOldApi)
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 9 oct. 2004 à 21:38
Chez moi ca passe sous WinXP SP2 !
Si ca marche pas chez vecchio, c normal, il touche a tt, et fait nimporte koi...;)
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 21:00
Je viens de mettre la source à jour (MinGW 3.4.2 et Visual C++ 2003). Merci vecchio au passage :)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 20:00
BruNews> T'as recompilé avec vs? Parce que moi avec vs ca marche, mais quand je compile avec MinGW ca marche pas, en particulier avec les binaires de Nebula.
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 18:23
Donc cela vient de la DLL... Une MessageBox(NULL, TEXT("in shell32"), TEXT(""), MB_OK) à la ligne 51 de hooker.c et une autre MessageBox(NULL, TEXT("in ShellAbout"), TEXT(""), MB_OK) à la ligne 58, çà donne quoi ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 18:10
il me donne le bon truc (chemin exact de la dll)
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 18:00
Hum, peut-être que c'est ma génération du chemin vers la DLL qui merde... Que donne un print(TEXT("[%1!s!]%n"), szModuleName) à la ligne 54 ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 17:51
Je remarque que le programme se comporte de la même manière, que hooker.dll soit présente ou pas.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 16:36
ShellAboutW of course
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 15:53
Un doute me vient : votre Notepad importe bien ShellAboutW et pas ShellAboutA (ce qui serait étonnant sous XP mais bon) ?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 9 oct. 2004 à 15:44
Désolé pour les 2 posts identiques.
J'ai bien un message me disant "hook installé" mais il ne marche pas.
Shell
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 15:19
Shell > la console se ferme mais la dll reste chargée, normalement... le about du notepad a changé ou pas ?
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 15:16
vecchio > oui
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 9 oct. 2004 à 15:15
vecchio> Shell ou DeAtHCrAsH , c'est comme tu veux.
Nebula> Moi il ne marche carement pas. Une fenetre MS-DOS s'ouvre et se referme aussi tot.
Shell
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 15:14
Pas grave pour ce qu'elle affiche, c'est vrai que j'aurais pu mettre un read mais bon... Merci de confirmer que çà marche ailleurs que chez moi ! :)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 15:13
Moi aussi se referme illico, mais lance dans un cmd.exe
Le principe est bien le suivant?
-Lancer notepad
-Lancer hooker.exe
-Faire a propos dans notepad...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 9 oct. 2004 à 15:11
Va bon sur 2 XP SP2 et 1 Server 2003.
Par contre rien a lire, la console se referme illico.
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 15:01
Alors là... Faudrait essayer de mettre des msgbox dans le code aux étapes importantes, parce que je vois pas du tout d'où çà pourrait bien venir :-/
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 14:21
Bianaires du zip, pas de bouclage...
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 14:19
Que le grand cric me croque, je n'y comprend rien... Il nous fait pas une boucle infinie des fois (à 100% du CPU utilisé), j'ai eu çà durant la mise au point de la DLL ?
Et c'est avec les binaires du zip, ou tu les as recompilés ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 14:12
Non, il écrit ca:
Handle de notepad: 0x000007E8
Handle du thread: 0x000007F4
Le hook est installé !
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 14:03
Bizarre, j'ai testé sur trois PC XP différents (deux SP2 et un SP1) et il fonctionne convenablement... Il sort pas d'erreur ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 13:53
(J'ai le même problème que DeAtHCrAsH ou Shell)
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 9 oct. 2004 à 13:33
Shell > je suis sous XP Pro SP2... c'est quoi qui merde ?
Matt67 > la source originale est ici http://www.cppfrance.com/code.aspx?ID=25603 - et le code est "relativement" crade, mais pas trop non plus... enfin autant qu'un code nocturne quoi lol
vecchio56 > arf j'y avais même pas pensé... je reviens, le temps d'aller me frapper la tête contre un mur !
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 12:42
Salut,
Je suis d'accord avec les remarques précédentes
J'ai un peu regardé le code, et dans injector.c, pour trouver Notepad, autant faire
DWORD dwNotepad = 0;
HWND hNotepad;
if(hNotepad = FindWindow("Notepad", 0))
GetWindowThreadProcessId(hNotepad, &dwNotepad);
// dwNotepad contient 0 ou ID Process
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 9 oct. 2004 à 11:11
31 oct. 2004 à 19:45
Une précision, je suis sur win2k, sp4.
J'ai fais quelques modifs sur injector pour avancer un peu plus :
- injector n'est plus console mais un prog win, cela marche visiblement mieux.
- J'utilise LoadLibraryA (au lieu de W). Avant cette modif, le message box placé juste aprés le case DLL_PROCESS_ATTACH de hooker ne s'affichait pas.
Le code s'arrete maintenant sur while (pITDAddr->u1.Function !0). En fait, il ne rentre pas dans la boucle donc pITDAddr->u1.Function 0.
Voila. Sinon, j'ai trouvé un code trés ressemblant à hooker.c ici :
http://www.xeberon.net/view.php?id=100&page=0
Il a l'avantage d'etre trés commenté concernant les structures utilisées (entres autres). En revanche, il n'y a pas d'injecteur.
J'essaye de continuer d'avancer. Merci pour le code.
9 oct. 2004 à 23:29
9 oct. 2004 à 23:28
9 oct. 2004 à 23:26
Pour info, modifier ton code pour le rendre plus propre n'est pas dur, il suffit de remplacer les constante de texte par des variable et d'en faire une fonction .
C'est quoi CRt ????
9 oct. 2004 à 22:13
9 oct. 2004 à 22:11
9 oct. 2004 à 22:09
9 oct. 2004 à 22:07
9 oct. 2004 à 22:04
Pamaury > c'est sûr que ce serait mieux, mais là je voulais surtout comprendre comment marchait le truc, ce qui implique un truc simple dans un premier temps ;)
9 oct. 2004 à 22:02
9 oct. 2004 à 21:59
9 oct. 2004 à 21:50
->Les API loadée dynamiquement(avec un GetProcAddress)
->Les API appelée depuis une dll chargée dans le processus(ex: prog.exe appèle TrucMachin dans machin.dll qui appèle MessageBoxA)
Voilà, sinon c'est vrai que c'est assez crade et surtout, il faudrait faire une fonction qui permet de hacker UNE FONCTION SPECIFIQUE dans UNE DLL SPECIFIQUE d'un EXE ou DLL SPECIFIQUE
ex(tiré de mon code):
int HookAPIEx(LPTSTR lpszModule,LPTSTR lpszDll,LPTSTR lpszApi,LPVOID lpNewApi,LPVOID *lpOldApi)
9 oct. 2004 à 21:38
Si ca marche pas chez vecchio, c normal, il touche a tt, et fait nimporte koi...;)
9 oct. 2004 à 21:00
9 oct. 2004 à 20:00
9 oct. 2004 à 18:23
9 oct. 2004 à 18:10
9 oct. 2004 à 18:00
9 oct. 2004 à 17:51
9 oct. 2004 à 16:36
9 oct. 2004 à 15:53
9 oct. 2004 à 15:44
J'ai bien un message me disant "hook installé" mais il ne marche pas.
Shell
9 oct. 2004 à 15:19
9 oct. 2004 à 15:16
9 oct. 2004 à 15:15
Nebula> Moi il ne marche carement pas. Une fenetre MS-DOS s'ouvre et se referme aussi tot.
Shell
9 oct. 2004 à 15:14
9 oct. 2004 à 15:13
Le principe est bien le suivant?
-Lancer notepad
-Lancer hooker.exe
-Faire a propos dans notepad...
9 oct. 2004 à 15:11
Par contre rien a lire, la console se referme illico.
9 oct. 2004 à 15:01
9 oct. 2004 à 14:21
9 oct. 2004 à 14:19
Et c'est avec les binaires du zip, ou tu les as recompilés ?
9 oct. 2004 à 14:12
Handle de notepad: 0x000007E8
Handle du thread: 0x000007F4
Le hook est installé !
9 oct. 2004 à 14:03
9 oct. 2004 à 13:53
9 oct. 2004 à 13:33
Matt67 > la source originale est ici http://www.cppfrance.com/code.aspx?ID=25603 - et le code est "relativement" crade, mais pas trop non plus... enfin autant qu'un code nocturne quoi lol
vecchio56 > arf j'y avais même pas pensé... je reviens, le temps d'aller me frapper la tête contre un mur !
9 oct. 2004 à 12:42
Je suis d'accord avec les remarques précédentes
J'ai un peu regardé le code, et dans injector.c, pour trouver Notepad, autant faire
DWORD dwNotepad = 0;
HWND hNotepad;
if(hNotepad = FindWindow("Notepad", 0))
GetWindowThreadProcessId(hNotepad, &dwNotepad);
// dwNotepad contient 0 ou ID Process
9 oct. 2004 à 11:11
Shell