Oeil_de_taupe
Messages postés150Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 février 2009
-
7 avril 2005 à 18:00
cs_tigzy
Messages postés2Date d'inscriptionvendredi 22 octobre 2010StatutMembreDernière intervention 4 novembre 2010
-
4 nov. 2010 à 16:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_tigzy
Messages postés2Date d'inscriptionvendredi 22 octobre 2010StatutMembreDernière intervention 4 novembre 2010 4 nov. 2010 à 16:41
Super, mais ça aurait été bien de commenter le code...
hzocm
Messages postés8Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention28 mai 2007 28 mai 2007 à 14:40
salut,
Super ton code, merci bc.
Sinon, sais tu pourquoi si je compile le programme en mode DEBUG, Notepad crash lorsque la boite de dialog affiche?
Est_ce qu'on peut utiliser le meme code pour remplacer la méthode LoadResource, FindResource? Sinon, il y a quoi à modifier? Peux tu commenter un peu ton code s'il te plait?
Merci beaucoup
HeoU
Merci
thunderx
Messages postés13Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention21 septembre 2006 12 mai 2006 à 14:49
Merci.
En tout cas je viens de faire pas mal de test, je n'ai pas eu de plantage.
Demarche tres interessante en tout cas.
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 12 mai 2006 à 11:27
C'est tout simplement celle de ma DLL.
thunderx
Messages postés13Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention21 septembre 2006 12 mai 2006 à 11:26
Et la lib incluse , elle contient quoi ?
Msgbox
Messages postés67Date d'inscriptionlundi 1 juillet 2002StatutMembreDernière intervention 1 septembre 2006 2 juin 2005 à 20:35
Ah oui c'est vrai !
Vachement astucieux de se passer de CreateRemoteThread :-D. 10/10
Dommage qu'on peut pas exploiter cette methode sans dll.
++
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 31 mai 2005 à 22:32
SetWindowsHookEx sert à s'injecter dans les process mémoire des programmes que Windows a.
Msgbox
Messages postés67Date d'inscriptionlundi 1 juillet 2002StatutMembreDernière intervention 1 septembre 2006 31 mai 2005 à 22:06
Ta source est vachement interessante, bien trouve le coup du JMP, n'empeche j'aurais qqs questions la dessus :S
A quoi servent les fonctions SetWindowsHookEx, CallNextHook ?
J'ai remarque qu'en les enlevant (et en enlevant le if(!...) du Lanceur, le programme ne fonctionne plus, la meme chose quand on quitte le programme (ca crash).
Bon pour le le crash j'ai compri en debuggant, c'est assez logique vu que le notepad fait des "pop" alors que la pile est vide ou un truc du genre, mais comment ces deux fonctions font pour empecher ce bug ????? C'est de la magie haut nivo ? lol
Personellement j'ai essaye de faire sans, c'est a dire un WriteProcessMemory qui insere un JMP vers une DLL chargee sur le notepad. Ca marche mais, juste apres le detournement de l'API, ca crash (pile en vrac).
QQun pourrait m'eclairer la-dessus ?
++
mirlaine
Messages postés32Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention24 août 2005 14 avril 2005 à 19:31
salut ymca2003 a raison:
1 lister toute les thread du process avec ntquerysysteminformation
2 metre toute les thread en suspen
3 injecter le code
4 puis tout resume
a+
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 13 avril 2005 à 10:40
LordBob> j'ai regardé, on peut effectivement enlever le header winsock, ca compile et ca tourne sans problemes... il doit s'agir d'un résidu d'un autre projet
a+
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 13 avril 2005 à 09:48
ha ben j'ai trouvé pour mon problème, il faut pas oublier de dire que MyMessageBoxW est __stdcall (ca y est partout sauf a cet endroit ...)
a+
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 12 avril 2005 à 18:33
dite j'ai une question j'ai regarder le code de la dll, je constaste que on inclut le header winsock ?
ce header est-il vraiment nécessaire et si oui pourquoi?
Dihangel
Messages postés6Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention 5 juin 2005 12 avril 2005 à 18:02
<quote>
Pas mal,
mais quand je lance le programme puis le notepad, puis je ferme le programme ça quitte le notepad quand je veux revenir à une boîte de dialogue de base (c'est normal?, on peut éviter ça?)...
</quote>
J'avais ce même probléme quand je m'amusais avec les hooks, je crois que ca vient du fait que l'adresse hooker en mémoire n'est pas correctement remplacé quand tu decharge la dll. Donc le programme ne trouve plus l'adresse de la fonction, donc ca plante...
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 11 avril 2005 à 15:23
salut,
perso en ayant recompilé ce code, ca detourne bien le MessageBoxW du notepad, mais celui plante en fermant, alors que pas de pb avec l'exe qui etait direct dans la source.
il faut compiler avec certaines options??
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 9 avril 2005 à 16:08
le reverse engineering concerne plutot la transformation de l'exe en code assembleur.
par contre, le but final pour l'API hook et le reverse code est quand meme de comprendre le fonctionnement du programme.
Mais alors ca c'est formidable; vraiment formidable.
Ca ouvre un immense champ de possibilités...
Sinon y'avait un rapport avec le reverse code ?
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 9 avril 2005 à 13:49
salut,
les programmeurs assembleur se sont pas mal interessés aux api hook et autres méthodes de reverse code, il y a d'autres techniques d'API Hook expliquées sur le site de Elicz. ( recherche google )
si le sujet t'interresse, j'ai déposé une source du nom de tracelog ( sur www.asmfr.com )
il permet le log des api en temps réel par traçage de l'application a l'aide des exceptions.
il y a aussi un exemple de hook de la fonction SendMessage afin de logger ses paramètres.
J'ha-lu-ci-ne !!!!!
Je savais pas du tout qu'on pouvait hooker des applications. Je considérais le hook comme un truc permettant seulement la capture d'évenements (clavier, souris, etc...).
Bravo, bien joué !
A part ça, c'est un peu du piratage ca ! :-)
Ta fonction peut ne connaitre aucune limite dans le code ?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 avril 2005 à 19:41
LoOl le screen, t'aurais quand meme pu nous faire un jolie cercle (:
Sinon le code est vraiment pas mal.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 7 avril 2005 à 18:38
En ce qui concerne ta technique elle est assez risquée car la modification des premiers octets en jmp ne se fait pas en 1 instruction ASM mais en plusieurs => le thread qui fait ça peut être interrompu au milieu et un autre thread peut faire un appel à la fct hookée et boom.
Sinon en utilisant WriteProcessmemory, il n'y a pas besoin de modifier les protections des pages.
Oeil_de_taupe
Messages postés150Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 février 2009 7 avril 2005 à 18:00
Pas mal,
mais quand je lance le programme puis le notepad, puis je ferme le programme ça quitte le notepad quand je veux revenir à une boîte de dialogue de base (c'est normal?, on peut éviter ça?)...
4 nov. 2010 à 16:41
28 mai 2007 à 14:40
Super ton code, merci bc.
Sinon, sais tu pourquoi si je compile le programme en mode DEBUG, Notepad crash lorsque la boite de dialog affiche?
Est_ce qu'on peut utiliser le meme code pour remplacer la méthode LoadResource, FindResource? Sinon, il y a quoi à modifier? Peux tu commenter un peu ton code s'il te plait?
Merci beaucoup
HeoU
Merci
12 mai 2006 à 14:49
En tout cas je viens de faire pas mal de test, je n'ai pas eu de plantage.
Demarche tres interessante en tout cas.
12 mai 2006 à 11:27
12 mai 2006 à 11:26
2 juin 2005 à 20:35
Vachement astucieux de se passer de CreateRemoteThread :-D. 10/10
Dommage qu'on peut pas exploiter cette methode sans dll.
++
31 mai 2005 à 22:32
31 mai 2005 à 22:06
A quoi servent les fonctions SetWindowsHookEx, CallNextHook ?
J'ai remarque qu'en les enlevant (et en enlevant le if(!...) du Lanceur, le programme ne fonctionne plus, la meme chose quand on quitte le programme (ca crash).
Bon pour le le crash j'ai compri en debuggant, c'est assez logique vu que le notepad fait des "pop" alors que la pile est vide ou un truc du genre, mais comment ces deux fonctions font pour empecher ce bug ????? C'est de la magie haut nivo ? lol
Personellement j'ai essaye de faire sans, c'est a dire un WriteProcessMemory qui insere un JMP vers une DLL chargee sur le notepad. Ca marche mais, juste apres le detournement de l'API, ca crash (pile en vrac).
QQun pourrait m'eclairer la-dessus ?
++
14 avril 2005 à 19:31
1 lister toute les thread du process avec ntquerysysteminformation
2 metre toute les thread en suspen
3 injecter le code
4 puis tout resume
a+
13 avril 2005 à 10:40
a+
13 avril 2005 à 09:48
a+
12 avril 2005 à 18:33
ce header est-il vraiment nécessaire et si oui pourquoi?
12 avril 2005 à 18:02
Pas mal,
mais quand je lance le programme puis le notepad, puis je ferme le programme ça quitte le notepad quand je veux revenir à une boîte de dialogue de base (c'est normal?, on peut éviter ça?)...
</quote>
J'avais ce même probléme quand je m'amusais avec les hooks, je crois que ca vient du fait que l'adresse hooker en mémoire n'est pas correctement remplacé quand tu decharge la dll. Donc le programme ne trouve plus l'adresse de la fonction, donc ca plante...
Un article qui mérite d'être cité, tout y est expliqué avec même du code a l'appui:
http://www.codeproject.com/system/hooksys.asp
11 avril 2005 à 15:23
perso en ayant recompilé ce code, ca detourne bien le MessageBoxW du notepad, mais celui plante en fermant, alors que pas de pb avec l'exe qui etait direct dans la source.
il faut compiler avec certaines options??
9 avril 2005 à 16:08
par contre, le but final pour l'API hook et le reverse code est quand meme de comprendre le fonctionnement du programme.
9 avril 2005 à 15:41
Ca ouvre un immense champ de possibilités...
Sinon y'avait un rapport avec le reverse code ?
9 avril 2005 à 13:49
les programmeurs assembleur se sont pas mal interessés aux api hook et autres méthodes de reverse code, il y a d'autres techniques d'API Hook expliquées sur le site de Elicz. ( recherche google )
si le sujet t'interresse, j'ai déposé une source du nom de tracelog ( sur www.asmfr.com )
il permet le log des api en temps réel par traçage de l'application a l'aide des exceptions.
il y a aussi un exemple de hook de la fonction SendMessage afin de logger ses paramètres.
@++
8 avril 2005 à 15:39
Je savais pas du tout qu'on pouvait hooker des applications. Je considérais le hook comme un truc permettant seulement la capture d'évenements (clavier, souris, etc...).
Bravo, bien joué !
A part ça, c'est un peu du piratage ca ! :-)
Ta fonction peut ne connaitre aucune limite dans le code ?
7 avril 2005 à 19:41
Sinon le code est vraiment pas mal.
7 avril 2005 à 18:38
http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip
En ce qui concerne ta technique elle est assez risquée car la modification des premiers octets en jmp ne se fait pas en 1 instruction ASM mais en plusieurs => le thread qui fait ça peut être interrompu au milieu et un autre thread peut faire un appel à la fct hookée et boom.
Sinon en utilisant WriteProcessmemory, il n'y a pas besoin de modifier les protections des pages.
7 avril 2005 à 18:00
mais quand je lance le programme puis le notepad, puis je ferme le programme ça quitte le notepad quand je veux revenir à une boîte de dialogue de base (c'est normal?, on peut éviter ça?)...