nytro, nu sunt programator, insa uite cum functioneaza chestiile astea de api hooking: marea majoritate a apiurilor din dll-urile windowsului(cel putin XP) incep prin: mov edi,edi push ebp mov ebp, esp win98 parca avea doar push ebp mov ebp,esp si poate ca si de aceea api hookurile nu merg pe win98. POATE. in fine, toate 3 instructiunile se intind pe 5 bytes in total cand se face hooking, aceste 3 instructiuni sunt suprascrise de o apelare a procedurii cu care faci hookul (in care vei spiona parametrii pasati). in acea procedura de hook, dupa ce vei lua parametrii, vei face un apel catre adevaratul API pe care l-a solicitat programul caruia ii faci hook. la intoarcerea din acel API, ai din nou controlul, ceea ce iti permite sa spionezi rezultatul APIului. apoi vei face saritura in codul programului tinta pt a-si continua executia in mod normal. chestia asta cu interceptarea apiurilor se poate face prin injectarea unui dll, care sa faca chestiile alea de le-am, explicat mai sus. debuggerele lucreaza in felul urmator: daca pui un breakpoint pe un API, debuggerul suprascrie prima instructiune a apiului cu int 03, iar cand aceasta instructiune este atinsa, debuggerul opreste aplicatia. deci primele instructiuni din api-uri sunt cele mai tintite de debuggere si hookere o metoda de a trece peste aceste api-hooking este asa-numita 'trambulina' in ce consta: programul nu face apel direct la API, ci va solicita executia codului dupa cele 3 instructiuni de la inceputul apiurilor. cele 3 instructiuni nu sunt neglijate, ele se vor emula in cadrul programului, dupa pasarea parametrilor. apoi se urca pe stiva adresa de intoarcere (care in cazul apelarii apiului direct este urcata implicit), iar apoi se va face saritura la urmatoarele instructiuni din api. uite un exemplu in masm la messagebox: mov eax, MessageBox ; tabela de import mov eax, [eax+2] ; .idata (luam decat adresa, nu si jumpul) mov eax, [eax] ; adresa de start a procedurii messagebox add eax, 5 ; sarim peste primele 3 instructiuni (5 bytes in total) push 0 ;parametrii push offset titlu push offset unhooked push 0 push intoarcerea ;urcam pe stiva adresa unde ne intoarcem dupa apelarea apiului ;mov edi, edi ; emularea primei instructiuni, deoarece nu face nimic o putem ignora push ebp ; emulam a doua instructiune mov ebp, esp ; emulam a treia instructiune jmp eax ; sarim la messagebox+5 (adica apelam messagebox nu de la inceputul ei, ci dupa cele 3 instructiuni de la inceput intoarcerea: ;aici windowsul va reveni dupa ce ne afiseaza mesageboxul am facut si un foarte mic program-test: test.rar incercati sa-i faceti hook la messagebox. puteti incerca cu debuggere sau programuri de genul hooking -testat pe win xp