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 4Nur 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