sebastienbro
Messages postés246Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention 5 août 2004
-
18 juil. 2003 à 01:17
sebastienbro
Messages postés246Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention 5 août 2004
-
18 juil. 2003 à 19:05
Bonjour,
j'aurais voulus savoir s'il était possible d'intercepter l'appel d'un api, un peu comme un breakpoint dans softice, ou dans n'importe quel débuggueur. Ca doit etre possible, vu qu'ils le font, mais comment dois-je faire ?
Merci d'avance pour ceux qui m'aideront ou me guideront dans la bonne direction
sebastienbro
Messages postés246Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention 5 août 20042 18 juil. 2003 à 12:13
Merci, et après, comment je peux faire pour savoir quand un programme appel un api en particulier ?
\* -- Seb [[mailto:sebastienbro@aol.com Mail]] [Web] -- */
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 juil. 2003 à 17:17
ben oui, tout cela est possible. Sur win 32 on peut quasi tout faire mais c'est pas toujoours evident au 1er abord.
Pour ton exemple un simple hook systeme sysmsgproc suffirait presque. Si c'est plus general, recupere le code a l'adresse de la func API, colle lui l'equivalent ASM qui renverra a l'adresse de la tienne(pour cela qu'il faut injecter une dll dans le processus) de func dans dll, tu traites et tu vois ensuite. Y a encore d'autres facteurs, params possibles a depiler etc...
BruNews, ciao...
sebastienbro
Messages postés246Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention 5 août 20042 18 juil. 2003 à 17:59
Je crois avoir compris, merci beaucoup de ton aide, je vais faire des recherche, par exemple, pour injecter une dll dans un processus.
Si j'ai bien tout compris, if 'suffit' de détourner l'appel de la fonction dans le programme principal, vers la fonction que j'aurais créé. Est ce bien cela ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 juil. 2003 à 18:11
On reprend:
tu fais une dll dans laquelle tu exportes une fonction pour hook qui te permettra de lui faire un mappage interprocessus.
Quand cette dll se charge, DLL_PROCESS_ATTACH, c'est la que tu dois calculer les adresses et changer le code qui te renvoyer vers une fonction de CETTE dll car le code ne sera accessible que s'il se trouve dans le processus appelant l'API surveillee.
BruNews, ciao...
sebastienbro
Messages postés246Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention 5 août 20042 18 juil. 2003 à 18:31
Je devien surement énervant, mais bon. Je comprend pas tout. Tu pourrais faire simple stp.
Quand ma dll se charge, j'envoie mon code dans le programme principal, pour que dès que celui ci appel l'api, il appel en faite ma fonction exporté. Est ce bien cela ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 juil. 2003 à 18:39
quand ta dll se charge, et cela se produit une fois pour CHAQUE processus, dans le DllMain tu dois calculer les adresses et proceder au detournement vers une adresse de d'une fonction de cette dll("C" __stdcall ira mieux).
Bien entendu c'est ton prog qui declenche ce mappage mais c'est ensuite le systeme qui ira en loger une copie dans l'espace memoire de chaque processus concerne par le hook.
OK ?
BruNews, ciao...
sebastienbro
Messages postés246Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention 5 août 20042 18 juil. 2003 à 18:49
Mouais, pas trop, mais c'est pas grave ! Y'aurait pas moyen que tu me fasse un exemple tout simple, ou mm un début, histoire que je vois un peu comment ca marche
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 juil. 2003 à 19:01
j'ai mis un source sur limitation de fenetres IE, tu auras le mode de lancement de la dll. Pour ce qui est du code interne de la dll va voir si tu peux trouver sur des sites de hacker ou autre mais je ne le mettrai pas ici. Dans tous les cas, enregistre bien ce que tu as en cours quand tu procedes aux essais car va tres vite a mettre un systeme en l'air, XP compris.
Tu devrais aussi lire Richter pour la prog systeme sur win32:
http://perso.wanadoo.fr/persans-brunews/ tu prends JR4.zip et JR4Sources.zip
le chapitre 22 devrait t'interesser.
BruNews, ciao...