Funktionsanfang finden?
-
Hallo
Ich habe eine Adresse die in einer Funktion für etwas zuständig ist. Wie kann ich den Anfang der Funktion finden?
Danke im Voraus
-
Es tut mir leid für den Doppelpost.
Ich habe vergessen zu erwähnen das ich mit Olly Debugger arbeite.
Danke
-
Zu wenig Information. Was hast Du denn genau vor?
Ansonsten:
Lubu schrieb:
Wie kann ich den Anfang der Funktion finden?
Indem Du den Code liest und versuchst zu verstehen, was da gemeint ist...
-
START:
PUSH EBP
.......
.......
.......
RETN 4
END:Beispiel:
0065522F 55 PUSH EBP 00655230 894C24 10 MOV DWORD PTR SS:[ESP+10],ECX 00655234 895C24 14 MOV DWORD PTR SS:[ESP+14],EBX 00655238 FF15 D0E17700 CALL DWORD PTR DS:[<&KERNEL32.EnterCriti>; ntdll.RtlEnterCriticalSection 0065523E 68 38147900 PUSH Client.00791438 ; ASCII "Post_Send" 00655243 8D4D 3C LEA ECX,DWORD PTR SS:[EBP+3C] 00655246 FF15 ACE27700 CALL DWORD PTR DS:[<&MSVCP80.??4?$basic_>; MSVCP8_1.??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z 0065524C 8345 1C 01 ADD DWORD PTR SS:[EBP+1C],1 00655250 389E CC000000 CMP BYTE PTR DS:[ESI+CC],BL 00655256 0F85 28010000 JNZ Client.00655384 0065525C 399E BC000000 CMP DWORD PTR DS:[ESI+BC],EBX 00655262 0F8E 1C010000 JLE Client.00655384 00655268 8B8E C0000000 MOV ECX,DWORD PTR DS:[ESI+C0] 0065526E 8B96 B4000000 MOV EDX,DWORD PTR DS:[ESI+B4] 00655274 8386 BC000000 FF ADD DWORD PTR DS:[ESI+BC],-1 0065527B 8D0449 LEA EAX,DWORD PTR DS:[ECX+ECX*2] 0065527E 83C1 01 ADD ECX,1 00655281 3B8E B8000000 CMP ECX,DWORD PTR DS:[ESI+B8] 00655287 8D0482 LEA EAX,DWORD PTR DS:[EDX+EAX*4] 0065528A 898E C0000000 MOV DWORD PTR DS:[ESI+C0],ECX 00655290 75 06 JNZ SHORT Client.00655298 00655292 899E C0000000 MOV DWORD PTR DS:[ESI+C0],EBX 00655298 8B50 04 MOV EDX,DWORD PTR DS:[EAX+4] 0065529B 57 PUSH EDI 0065529C 8B38 MOV EDI,DWORD PTR DS:[EAX] 0065529E 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8] 006552A1 C686 CC000000 01 MOV BYTE PTR DS:[ESI+CC],1 006552A8 899E E4000000 MOV DWORD PTR DS:[ESI+E4],EBX 006552AE 899E E8000000 MOV DWORD PTR DS:[ESI+E8],EBX 006552B4 899E EC000000 MOV DWORD PTR DS:[ESI+EC],EBX 006552BA 899E F4000000 MOV DWORD PTR DS:[ESI+F4],EBX 006552C0 899E F8000000 MOV DWORD PTR DS:[ESI+F8],EBX 006552C6 899E 00010000 MOV DWORD PTR DS:[ESI+100],EBX 006552CC 889E F0000000 MOV BYTE PTR DS:[ESI+F0],BL 006552D2 889E F1000000 MOV BYTE PTR DS:[ESI+F1],BL 006552D8 33C9 XOR ECX,ECX 006552DA 898E D0000000 MOV DWORD PTR DS:[ESI+D0],ECX 006552E0 898E D4000000 MOV DWORD PTR DS:[ESI+D4],ECX 006552E6 894424 28 MOV DWORD PTR SS:[ESP+28],EAX 006552EA 8D86 D0000000 LEA EAX,DWORD PTR DS:[ESI+D0] 006552F0 8948 08 MOV DWORD PTR DS:[EAX+8],ECX 006552F3 8948 0C MOV DWORD PTR DS:[EAX+C],ECX 006552F6 8948 10 MOV DWORD PTR DS:[EAX+10],ECX 006552F9 8B4E 18 MOV ECX,DWORD PTR DS:[ESI+18] 006552FC 0196 C8000000 ADD DWORD PTR DS:[ESI+C8],EDX 00655302 83F9 FF CMP ECX,-1 00655305 897C24 1C MOV DWORD PTR SS:[ESP+1C],EDI 00655309 895424 18 MOV DWORD PTR SS:[ESP+18],EDX 0065530D C786 E4000000 03>MOV DWORD PTR DS:[ESI+E4],3 00655317 89BE F4000000 MOV DWORD PTR DS:[ESI+F4],EDI 0065531D 74 64 JE SHORT Client.00655383 0065531F 53 PUSH EBX 00655320 50 PUSH EAX 00655321 53 PUSH EBX 00655322 8D5424 20 LEA EDX,DWORD PTR SS:[ESP+20] 00655326 52 PUSH EDX 00655327 6A 01 PUSH 1 00655329 8D4424 2C LEA EAX,DWORD PTR SS:[ESP+2C] 0065532D 50 PUSH EAX 0065532E 51 PUSH ECX 0065532F FF15 78E67700 CALL DWORD PTR DS:[<&WS2_32.WSASend>] ; WS2_32.WSASend 00655335 83F8 FF CMP EAX,-1 00655338 75 49 JNZ SHORT Client.00655383 0065533A FF15 E4E67700 CALL DWORD PTR DS:[<&WS2_32.#111>] ; WS2_32.WSAGetLastError 00655340 3D E5030000 CMP EAX,3E5 00655345 74 3C JE SHORT Client.00655383 00655347 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14] 0065534A 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10] 0065534E 51 PUSH ECX 0065534F 50 PUSH EAX 00655350 68 00147900 PUSH Client.00791400 ; ASCII "Post_Send() WSASend got a error [ %d ] on NetID %u (B) " 00655355 52 PUSH EDX 00655356 E8 E5FF0A00 CALL Client.00705340 0065535B 8B4C24 20 MOV ECX,DWORD PTR SS:[ESP+20] 0065535F 8B01 MOV EAX,DWORD PTR DS:[ECX] 00655361 8B56 14 MOV EDX,DWORD PTR DS:[ESI+14] 00655364 8B40 2C MOV EAX,DWORD PTR DS:[EAX+2C] 00655367 83C4 10 ADD ESP,10 0065536A 52 PUSH EDX 0065536B FFD0 CALL EAX 0065536D 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10] 00655371 57 PUSH EDI 00655372 81C1 84020000 ADD ECX,284 00655378 889E CC000000 MOV BYTE PTR DS:[ESI+CC],BL 0065537E E8 CDD4FFFF CALL Client.00652850 00655383 5F POP EDI 00655384 8345 1C FF ADD DWORD PTR SS:[EBP+1C],-1 00655388 68 12597A00 PUSH Client.007A5912 0065538D 8D4D 3C LEA ECX,DWORD PTR SS:[EBP+3C] 00655390 FF15 ACE27700 CALL DWORD PTR DS:[<&MSVCP80.??4?$basic_>; MSVCP8_1.??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z 00655396 55 PUSH EBP 00655397 FF15 D4E17700 CALL DWORD PTR DS:[<&KERNEL32.LeaveCriti>; ntdll.RtlLeaveCriticalSection 0065539D 5E POP ESI 0065539E 5D POP EBP 0065539F 5B POP EBX 006553A0 83C4 1C ADD ESP,1C 006553A3 C2 0400 RETN 4
Nur so als Info, falls du OllyDBG benutzen drück "Analyze code".. dann wird er dir so anfang / ende darstellen.
-
Danke dir
Ja, das mit "Analyze Code" habe ich erst nach meiner Frage gesehn, trotzdem danke für das antworten