|
You last visited: Today at 03:37
Advertisement
Parameter und Calling Convention finden
Discussion on Parameter und Calling Convention finden within the C/C++ forum part of the Coders Den category.
08/19/2014, 11:38
|
#1
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
Parameter und Calling Convention finden
Hey,
habe in einem Spiel mit ollydbg eine Funktion gefunden, von der ich glaube, dass sie Text auf dem Bildschirm ausgibt:
Code:
Address Hex dump Command Comments
013CDB28 F30F1085 6CFFFF MOVSS XMM0,DWORD PTR SS:[EBP-94] ; FLOAT 42.00000
013CDB30 8D85 78FFFFFF LEA EAX,[EBP-88]
013CDB36 F30F5805 5850CE ADDSS XMM0,DWORD PTR DS:[1CE5058] ; FLOAT 20.00000 (y coord?)
013CDB3E D985 70FFFFFF FLD DWORD PTR SS:[EBP-90] ; FLOAT 1760.00000 (x coord?)
013CDB44 83C4 08 ADD ESP,8
013CDB47 8B0D A8A80602 MOV ECX,DWORD PTR DS:[206A8A8]
013CDB4D 50 PUSH EAX ; ASCII "Ping(ms): 500" (text to display)
013CDB4E 83EC 08 SUB ESP,8
013CDB51 8D85 74FFFFFF LEA EAX,[EBP-8C]
013CDB57 68 AC9BDE01 PUSH OFFSET 01DE9BAC
013CDB5C 50 PUSH EAX
013CDB5D 83EC 0C SUB ESP,0C
013CDB60 F30F114424 08 MOVSS DWORD PTR SS:[ESP+8],XMM0 ; FLOAT 6.236526e-22 (???)
013CDB66 D95C24 04 FSTP DWORD PTR SS:[ESP+4] ; FLOAT 1760.0000000000000000
013CDB6A E8 918C0900 CALL 01466800
Wie kann ich nun rausfinden, welche calling convention verwendet wurde und welche Parameter in welcher Reihenfolge übergeben werden müssen, wenn ich die Funktion mit einer dll aufrufen möchte?
|
|
|
08/19/2014, 12:12
|
#2
|
elite*gold: 20
Join Date: Aug 2005
Posts: 652
Received Thanks: 189
|
Poste mal die gecallte Funktion, da steht das relevante Zeugs drin.
Oder du nutzt einfach IDA.
|
|
|
08/19/2014, 12:31
|
#3
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Poste die Funtion, die deine Funktion aufruft. Das erkennt man am Funktionsaufruf.
Du kannst auch einfach Hexrays nutzen, dann lernst du's aber nicht selbst zu sehen.
Wie auch immer, deine "erkannten" Parameter werden so wahrscheinlich nicht ganz stimmen.
Quote:
|
013CDB36 F30F5805 5850CE ADDSS XMM0,DWORD PTR DS:[1CE5058] ; FLOAT 20.00000 (y coord?)
|
Ziemlich unwahrscheinlich. Übrigens solltest du wohl auch mal auf den Stack gucken.
|
|
|
08/19/2014, 12:44
|
#4
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
Hier ist der Anfang der Funktion
Code:
CPU Disasm
Address Hex dump Command Comments
018E9370 55 PUSH EBP
018E9371 8BEC MOV EBP,ESP
018E9373 83E4 F8 AND ESP,FFFFFFF8
018E9376 6A FF PUSH -1
018E9378 68 E55CB001 PUSH OFFSET 01B05CE5
018E937D 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
018E9383 50 PUSH EAX
018E9384 64:8925 0000000 MOV DWORD PTR FS:[0],ESP
018E938B 81EC C0080000 SUB ESP,8C0
018E9391 53 PUSH EBX
018E9392 8BD9 MOV EBX,ECX
018E9394 C74424 08 00000 MOV DWORD PTR SS:[ESP+8],0
018E939C 56 PUSH ESI
018E939D 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
018E93A0 8BCE MOV ECX,ESI
018E93A2 57 PUSH EDI
018E93A3 8B83 94000000 MOV EAX,DWORD PTR DS:[EBX+94]
018E93A9 83E0 FC AND EAX,FFFFFFFC
018E93AC 895C24 14 MOV DWORD PTR SS:[ESP+14],EBX
018E93B0 83C0 08 ADD EAX,8
018E93B3 8A10 MOV DL,BYTE PTR DS:[EAX]
018E93B5 3A11 CMP DL,BYTE PTR DS:[ECX]
018E93B7 75 1A JNE SHORT 018E93D3
018E93B9 84D2 TEST DL,DL
018E93BB 74 12 JE SHORT 018E93CF
018E93BD 8A50 01 MOV DL,BYTE PTR DS:[EAX+1]
018E93C0 3A51 01 CMP DL,BYTE PTR DS:[ECX+1]
018E93C3 75 0E JNE SHORT 018E93D3
018E93C5 83C0 02 ADD EAX,2
018E93C8 83C1 02 ADD ECX,2
018E93CB 84D2 TEST DL,DL
018E93CD ^ 75 E4 JNE SHORT 018E93B3
018E93CF 33C0 XOR EAX,EAX
018E93D1 EB 05 JMP SHORT 018E93D8
018E93D3 1BC0 SBB EAX,EAX
018E93D5 83C8 01 OR EAX,00000001
018E93D8 85C0 TEST EAX,EAX
018E93DA 75 22 JNE SHORT 018E93FE
018E93DC F683 92000000 0 TEST BYTE PTR DS:[EBX+92],01
018E93E3 75 19 JNE SHORT 018E93FE
018E93E5 32C0 XOR AL,AL
018E93E7 8B8C24 CC080000 MOV ECX,DWORD PTR SS:[ESP+8CC]
018E93EE 64:890D 0000000 MOV DWORD PTR FS:[0],ECX
018E93F5 5F POP EDI
018E93F6 5E POP ESI
018E93F7 5B POP EBX
018E93F8 8BE5 MOV ESP,EBP
018E93FA 5D POP EBP
018E93FB C2 0C00 RETN 0C
018E93FE 8A43 41 MOV AL,BYTE PTR DS:[EBX+41]
018E9401 81A3 90000000 F AND DWORD PTR DS:[EBX+90],FFFEFFFF
018E940B 84C0 TEST AL,AL
018E940D 74 26 JE SHORT 018E9435
018E940F 0FB6C0 MOVZX EAX,AL
018E9412 8D0C83 LEA ECX,[EAX*4+EBX]
018E9415 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9417 FF50 10 CALL DWORD PTR DS:[EAX+10]
018E941A 8BC8 MOV ECX,EAX
018E941C 8B10 MOV EDX,DWORD PTR DS:[EAX]
018E941E 8B42 60 MOV EAX,DWORD PTR DS:[EDX+60]
018E9421 FFD0 CALL EAX
018E9423 84C0 TEST AL,AL
018E9425 74 0E JE SHORT 018E9435
018E9427 838B 90000000 0 OR DWORD PTR DS:[EBX+90],00000002
018E942E C64424 0D 01 MOV BYTE PTR SS:[ESP+0D],1
018E9433 EB 07 JMP SHORT 018E943C
018E9435 8A45 0C MOV AL,BYTE PTR SS:[EBP+0C]
018E9438 884424 0D MOV BYTE PTR SS:[ESP+0D],AL
018E943C 85F6 TEST ESI,ESI
018E943E 74 10 JE SHORT 018E9450
018E9440 8BCE MOV ECX,ESI
018E9442 8D51 01 LEA EDX,[ECX+1]
018E9445 8A01 MOV AL,BYTE PTR DS:[ECX]
018E9447 41 INC ECX
018E9448 84C0 TEST AL,AL
018E944A ^ 75 F9 JNE SHORT 018E9445
018E944C 2BCA SUB ECX,EDX
018E944E EB 02 JMP SHORT 018E9452
018E9450 33C9 XOR ECX,ECX
018E9452 51 PUSH ECX
018E9453 56 PUSH ESI
018E9454 8D8B 94000000 LEA ECX,[EBX+94]
018E945A E8 D1CEF9FF CALL 01886330
018E945F 807C24 0D 00 CMP BYTE PTR SS:[ESP+0D],0
018E9464 74 0C JE SHORT 018E9472
018E9466 818B 90000000 0 OR DWORD PTR DS:[EBX+90],00001000
018E9470 EB 0A JMP SHORT 018E947C
018E9472 81A3 90000000 F AND DWORD PTR DS:[EBX+90],FFFFEFFF
018E947C 8BBB 94000000 MOV EDI,DWORD PTR DS:[EBX+94]
018E9482 8B83 90000000 MOV EAX,DWORD PTR DS:[EBX+90]
018E9488 83E7 FC AND EDI,FFFFFFFC
018E948B 83C7 08 ADD EDI,8
018E948E C1E8 03 SHR EAX,3
018E9491 897C24 2C MOV DWORD PTR SS:[ESP+2C],EDI
018E9495 C64424 0F 00 MOV BYTE PTR SS:[ESP+0F],0
018E949A C64424 0E 00 MOV BYTE PTR SS:[ESP+0E],0
018E949F A8 01 TEST AL,01
018E94A1 0F85 95030000 JNE 018E983C
018E94A7 8B43 10 MOV EAX,DWORD PTR DS:[EBX+10]
018E94AA 8B48 08 MOV ECX,DWORD PTR DS:[EAX+8]
018E94AD 8D4424 5C LEA EAX,[ESP+5C]
018E94B1 50 PUSH EAX
018E94B2 83C1 08 ADD ECX,8
018E94B5 E8 4639A6FF CALL 0134CE00
018E94BA C78424 D4080000 MOV DWORD PTR SS:[ESP+8D4],0
018E94C5 8B7424 5C MOV ESI,DWORD PTR SS:[ESP+5C]
018E94C9 85F6 TEST ESI,ESI
018E94CB 0F84 3A030000 JE 018E980B
018E94D1 8A43 50 MOV AL,BYTE PTR DS:[EBX+50]
018E94D4 D0E8 SHR AL,1
018E94D6 A8 01 TEST AL,01
018E94D8 75 1A JNE SHORT 018E94F4
018E94DA 8D4424 58 LEA EAX,[ESP+58]
018E94DE 8BCB MOV ECX,EBX
018E94E0 50 PUSH EAX
018E94E1 E8 7AB2FCFF CALL 018B4760
018E94E6 C74424 10 01000 MOV DWORD PTR SS:[ESP+10],1
018E94EE 8B00 MOV EAX,DWORD PTR DS:[EAX]
018E94F0 8B00 MOV EAX,DWORD PTR DS:[EAX]
018E94F2 EB 05 JMP SHORT 018E94F9
018E94F4 B8 168FC201 MOV EAX,OFFSET 01C28F16
018E94F9 50 PUSH EAX
018E94FA 8D8C24 8C000000 LEA ECX,[ESP+8C]
018E9501 E8 CAFDFFFF CALL 018E92D0
018E9506 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],1
018E950E F64424 10 01 TEST BYTE PTR SS:[ESP+10],01
018E9513 74 09 JE SHORT 018E951E
018E9515 8D4C24 58 LEA ECX,[ESP+58]
018E9519 E8 9232C8FF CALL 0156C7B0
018E951E 807C24 0D 00 CMP BYTE PTR SS:[ESP+0D],0
018E9523 0F84 0B010000 JE 018E9634
018E9529 8B06 MOV EAX,DWORD PTR DS:[ESI]
018E952B 8BCE MOV ECX,ESI
018E952D FF50 04 CALL DWORD PTR DS:[EAX+4]
018E9530 A8 01 TEST AL,01
018E9532 0F85 FC000000 JNE 018E9634
018E9538 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E953E 53 PUSH EBX
018E953F 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9541 FF50 3C CALL DWORD PTR DS:[EAX+3C]
018E9544 50 PUSH EAX
018E9545 8D4C24 34 LEA ECX,[ESP+34]
018E9549 E8 923CCAFF CALL 0158D1E0
018E954E 33C0 XOR EAX,EAX
018E9550 C74424 18 01000 MOV DWORD PTR SS:[ESP+18],1
018E9558 C74424 1C 00000 MOV DWORD PTR SS:[ESP+1C],0
018E9560 894424 20 MOV DWORD PTR SS:[ESP+20],EAX
018E9564 894424 24 MOV DWORD PTR SS:[ESP+24],EAX
018E9568 894424 28 MOV DWORD PTR SS:[ESP+28],EAX
018E956C 8D4424 18 LEA EAX,[ESP+18]
018E9570 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],3
018E9578 50 PUSH EAX
018E9579 8D4424 34 LEA EAX,[ESP+34]
018E957D 8BCB MOV ECX,EBX
018E957F 50 PUSH EAX
018E9580 E8 CB0C0000 CALL 018EA250
018E9585 8B83 90000000 MOV EAX,DWORD PTR DS:[EBX+90]
018E958B 8BCB MOV ECX,EBX
018E958D 8BBB 80000000 MOV EDI,DWORD PTR DS:[EBX+80]
018E9593 C1E8 04 SHR EAX,4
018E9596 24 01 AND AL,01
018E9598 884424 10 MOV BYTE PTR SS:[ESP+10],AL
018E959C 8D4424 18 LEA EAX,[ESP+18]
018E95A0 50 PUSH EAX
018E95A1 8D4424 34 LEA EAX,[ESP+34]
018E95A5 50 PUSH EAX
018E95A6 E8 95050000 CALL 018E9B40
018E95AB 50 PUSH EAX
018E95AC 6A 00 PUSH 0
018E95AE FF7424 20 PUSH DWORD PTR SS:[ESP+20]
018E95B2 51 PUSH ECX
018E95B3 FF7424 44 PUSH DWORD PTR SS:[ESP+44]
018E95B7 8BCF MOV ECX,EDI
018E95B9 E8 123B0600 CALL 0194D0D0
018E95BE 8B83 80000000 MOV EAX,DWORD PTR DS:[EBX+80]
018E95C4 8D8C24 B8080000 LEA ECX,[ESP+8B8]
018E95CB 51 PUSH ECX
018E95CC 8B48 08 MOV ECX,DWORD PTR DS:[EAX+8]
018E95CF E8 CCCB0400 CALL 019361A0
018E95D4 8B06 MOV EAX,DWORD PTR DS:[ESI]
018E95D6 8BCE MOV ECX,ESI
018E95D8 FF50 04 CALL DWORD PTR DS:[EAX+4]
018E95DB D1E8 SHR EAX,1
018E95DD A8 01 TEST AL,01
018E95DF 74 0C JE SHORT 018E95ED
018E95E1 8D8C24 B8080000 LEA ECX,[ESP+8B8]
018E95E8 E8 5332FBFF CALL 0189C840
018E95ED 8B8424 B8080000 MOV EAX,DWORD PTR SS:[ESP+8B8]
018E95F4 8D8C24 88000000 LEA ECX,[ESP+88]
018E95FB 898424 88000000 MOV DWORD PTR SS:[ESP+88],EAX
018E9602 8B06 MOV EAX,DWORD PTR DS:[ESI]
018E9604 51 PUSH ECX
018E9605 8BCE MOV ECX,ESI
018E9607 FF50 08 CALL DWORD PTR DS:[EAX+8]
018E960A C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],2
018E9612 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E9618 FF7424 1C PUSH DWORD PTR SS:[ESP+1C]
018E961C 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E961E FF50 30 CALL DWORD PTR DS:[EAX+30]
018E9621 8D4C24 30 LEA ECX,[ESP+30]
018E9625 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],1
018E962D E8 1E3CCAFF CALL 0158D250
018E9632 EB 2B JMP SHORT 018E965F
018E9634 57 PUSH EDI
018E9635 8D8C24 8C000000 LEA ECX,[ESP+8C]
018E963C E8 2FFCFFFF CALL 018E9270
018E9641 807C24 0D 00 CMP BYTE PTR SS:[ESP+0D],0
018E9646 74 08 JE SHORT 018E9650
018E9648 808C24 94000000 OR BYTE PTR SS:[ESP+94],04
018E9650 8B06 MOV EAX,DWORD PTR DS:[ESI]
018E9652 8D8C24 88000000 LEA ECX,[ESP+88]
018E9659 51 PUSH ECX
018E965A 8BCE MOV ECX,ESI
018E965C FF50 08 CALL DWORD PTR DS:[EAX+8]
018E965F 8A8C24 94000000 MOV CL,BYTE PTR SS:[ESP+94]
018E9666 8AC1 MOV AL,CL
018E9668 24 01 AND AL,01
018E966A 884424 0E MOV BYTE PTR SS:[ESP+0E],AL
018E966E 0F84 7F010000 JE 018E97F3
018E9674 F6C1 02 TEST CL,02
018E9677 0F84 1B010000 JE 018E9798
018E967D 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E9683 53 PUSH EBX
018E9684 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9686 FF50 3C CALL DWORD PTR DS:[EAX+3C]
018E9689 50 PUSH EAX
018E968A 8D4C24 64 LEA ECX,[ESP+64]
018E968E E8 4D3BCAFF CALL 0158D1E0
018E9693 33C0 XOR EAX,EAX
018E9695 C74424 30 01000 MOV DWORD PTR SS:[ESP+30],1
018E969D C74424 34 00000 MOV DWORD PTR SS:[ESP+34],0
018E96A5 894424 38 MOV DWORD PTR SS:[ESP+38],EAX
018E96A9 894424 3C MOV DWORD PTR SS:[ESP+3C],EAX
018E96AD 894424 40 MOV DWORD PTR SS:[ESP+40],EAX
018E96B1 8D4424 30 LEA EAX,[ESP+30]
018E96B5 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],5
018E96BD 50 PUSH EAX
018E96BE 8D4424 64 LEA EAX,[ESP+64]
018E96C2 8BCB MOV ECX,EBX
018E96C4 50 PUSH EAX
018E96C5 E8 860B0000 CALL 018EA250
018E96CA 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E96D0 53 PUSH EBX
018E96D1 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E96D3 FF50 3C CALL DWORD PTR DS:[EAX+3C]
018E96D6 C74424 18 00000 MOV DWORD PTR SS:[ESP+18],0
018E96DE C74424 1C 00000 MOV DWORD PTR SS:[ESP+1C],0
018E96E6 C74424 20 00000 MOV DWORD PTR SS:[ESP+20],0
018E96EE 894424 24 MOV DWORD PTR SS:[ESP+24],EAX
018E96F2 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],6
018E96FA 8B83 90000000 MOV EAX,DWORD PTR DS:[EBX+90]
018E9700 BB 60B6C501 MOV EBX,OFFSET 01C5B660
018E9705 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14]
018E9709 C1E8 04 SHR EAX,4
018E970C 24 01 AND AL,01
018E970E 884424 10 MOV BYTE PTR SS:[ESP+10],AL
018E9712 8B8424 A8080000 MOV EAX,DWORD PTR SS:[ESP+8A8]
018E9719 85C0 TEST EAX,EAX
018E971B 8BB9 80000000 MOV EDI,DWORD PTR DS:[ECX+80]
018E9721 0F45D8 CMOVNE EBX,EAX
018E9724 8D4424 30 LEA EAX,[ESP+30]
018E9728 50 PUSH EAX
018E9729 8D4424 64 LEA EAX,[ESP+64]
018E972D 50 PUSH EAX
018E972E E8 0D040000 CALL 018E9B40
018E9733 50 PUSH EAX
018E9734 8D4424 24 LEA EAX,[ESP+24]
018E9738 50 PUSH EAX
018E9739 FF7424 20 PUSH DWORD PTR SS:[ESP+20]
018E973D 51 PUSH ECX
018E973E 53 PUSH EBX
018E973F 8BCF MOV ECX,EDI
018E9741 E8 2A3A0600 CALL 0194D170
018E9746 837C24 1C 00 CMP DWORD PTR SS:[ESP+1C],0
018E974B 8B5C24 14 MOV EBX,DWORD PTR SS:[ESP+14]
018E974F 76 0C JBE SHORT 018E975D
018E9751 8D4424 18 LEA EAX,[ESP+18]
018E9755 8BCB MOV ECX,EBX
018E9757 50 PUSH EAX
018E9758 E8 23D0FFFF CALL 018E6780
018E975D 8D4C24 18 LEA ECX,[ESP+18]
018E9761 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],5
018E9769 E8 828CCAFF CALL 015923F0
018E976E C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],4
018E9776 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E977C FF7424 34 PUSH DWORD PTR SS:[ESP+34]
018E9780 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9782 FF50 30 CALL DWORD PTR DS:[EAX+30]
018E9785 8D4C24 60 LEA ECX,[ESP+60]
018E9789 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],1
018E9791 E8 BA3ACAFF CALL 0158D250
018E9796 EB 56 JMP SHORT 018E97EE
018E9798 8B83 80000000 MOV EAX,DWORD PTR DS:[EBX+80]
018E979E 8D4C24 14 LEA ECX,[ESP+14]
018E97A2 6A 00 PUSH 0
018E97A4 51 PUSH ECX
018E97A5 8D4C24 18 LEA ECX,[ESP+18]
018E97A9 51 PUSH ECX
018E97AA 8B48 08 MOV ECX,DWORD PTR DS:[EAX+8]
018E97AD E8 EEC80400 CALL 019360A0
018E97B2 FF7424 10 PUSH DWORD PTR SS:[ESP+10]
018E97B6 8B8B 80000000 MOV ECX,DWORD PTR DS:[EBX+80]
018E97BC E8 DF85CAFF CALL 01591DA0
018E97C1 FF7424 14 PUSH DWORD PTR SS:[ESP+14]
018E97C5 8B8B 80000000 MOV ECX,DWORD PTR DS:[EBX+80]
018E97CB E8 3086CAFF CALL 01591E00
018E97D0 8B8424 A8080000 MOV EAX,DWORD PTR SS:[ESP+8A8]
018E97D7 B9 60B6C501 MOV ECX,OFFSET 01C5B660
018E97DC 85C0 TEST EAX,EAX
018E97DE 0F45C8 CMOVNE ECX,EAX
018E97E1 51 PUSH ECX
018E97E2 51 PUSH ECX
018E97E3 8B8B 80000000 MOV ECX,DWORD PTR DS:[EBX+80]
018E97E9 E8 323A0600 CALL 0194D220
018E97EE C64424 0F 01 MOV BYTE PTR SS:[ESP+0F],1
018E97F3 8D8C24 88000000 LEA ECX,[ESP+88]
018E97FA C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],0
018E9802 E8 698BCAFF CALL 01592370
018E9807 8B7C24 2C MOV EDI,DWORD PTR SS:[ESP+2C]
018E980B C78424 D4080000 MOV DWORD PTR SS:[ESP+8D4],-1
018E9816 85F6 TEST ESI,ESI
018E9818 74 17 JE SHORT 018E9831
018E981A 6A FF PUSH -1
018E981C 8D46 04 LEA EAX,[ESI+4]
018E981F 50 PUSH EAX
018E9820 FF15 A8B3B301 CALL DWORD PTR DS:[1B3B3A8]
018E9826 48 DEC EAX
018E9827 75 08 JNE SHORT 018E9831
018E9829 8B06 MOV EAX,DWORD PTR DS:[ESI]
018E982B 8BCE MOV ECX,ESI
018E982D 6A 01 PUSH 1
018E982F FF10 CALL DWORD PTR DS:[EAX]
018E9831 807C24 0E 00 CMP BYTE PTR SS:[ESP+0E],0
018E9836 0F85 5E010000 JNE 018E999A
018E983C 807C24 0D 00 CMP BYTE PTR SS:[ESP+0D],0
018E9841 0F84 22010000 JE 018E9969
018E9847 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E984D 53 PUSH EBX
018E984E 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9850 FF50 3C CALL DWORD PTR DS:[EAX+3C]
018E9853 50 PUSH EAX
018E9854 8D4C24 64 LEA ECX,[ESP+64]
018E9858 E8 8339CAFF CALL 0158D1E0
018E985D C78424 D4080000 MOV DWORD PTR SS:[ESP+8D4],7
018E9868 33C0 XOR EAX,EAX
018E986A C74424 30 01000 MOV DWORD PTR SS:[ESP+30],1
018E9872 C74424 34 00000 MOV DWORD PTR SS:[ESP+34],0
018E987A 894424 38 MOV DWORD PTR SS:[ESP+38],EAX
018E987E 894424 3C MOV DWORD PTR SS:[ESP+3C],EAX
018E9882 894424 40 MOV DWORD PTR SS:[ESP+40],EAX
018E9886 8D4424 30 LEA EAX,[ESP+30]
018E988A C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],8
018E9892 50 PUSH EAX
018E9893 8D4424 64 LEA EAX,[ESP+64]
018E9897 8BCB MOV ECX,EBX
018E9899 50 PUSH EAX
018E989A E8 B1090000 CALL 018EA250
018E989F 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E98A5 53 PUSH EBX
018E98A6 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E98A8 FF50 3C CALL DWORD PTR DS:[EAX+3C]
018E98AB C74424 18 00000 MOV DWORD PTR SS:[ESP+18],0
018E98B3 C74424 1C 00000 MOV DWORD PTR SS:[ESP+1C],0
018E98BB C74424 20 00000 MOV DWORD PTR SS:[ESP+20],0
018E98C3 894424 24 MOV DWORD PTR SS:[ESP+24],EAX
018E98C7 C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],9
018E98CF 8A43 41 MOV AL,BYTE PTR DS:[EBX+41]
018E98D2 84C0 TEST AL,AL
018E98D4 74 14 JE SHORT 018E98EA
018E98D6 0FB6C0 MOVZX EAX,AL
018E98D9 8D0C83 LEA ECX,[EAX*4+EBX]
018E98DC 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E98DE FF50 10 CALL DWORD PTR DS:[EAX+10]
018E98E1 8BC8 MOV ECX,EAX
018E98E3 8B10 MOV EDX,DWORD PTR DS:[EAX]
018E98E5 FF52 5C CALL DWORD PTR DS:[EDX+5C]
018E98E8 EB 02 JMP SHORT 018E98EC
018E98EA 33C0 XOR EAX,EAX
018E98EC 8D4C24 30 LEA ECX,[ESP+30]
018E98F0 51 PUSH ECX
018E98F1 8D4C24 64 LEA ECX,[ESP+64]
018E98F5 51 PUSH ECX
018E98F6 50 PUSH EAX
018E98F7 8D4424 24 LEA EAX,[ESP+24]
018E98FB 50 PUSH EAX
018E98FC 8B83 90000000 MOV EAX,DWORD PTR DS:[EBX+90]
018E9902 C1E8 04 SHR EAX,4
018E9905 24 01 AND AL,01
018E9907 0FB6C0 MOVZX EAX,AL
018E990A 50 PUSH EAX
018E990B 51 PUSH ECX
018E990C 8B8B 80000000 MOV ECX,DWORD PTR DS:[EBX+80]
018E9912 57 PUSH EDI
018E9913 E8 B8370600 CALL 0194D0D0
018E9918 837C24 1C 00 CMP DWORD PTR SS:[ESP+1C],0
018E991D 76 0C JBE SHORT 018E992B
018E991F 8D4424 18 LEA EAX,[ESP+18]
018E9923 8BCB MOV ECX,EBX
018E9925 50 PUSH EAX
018E9926 E8 55CEFFFF CALL 018E6780
018E992B 8D4C24 18 LEA ECX,[ESP+18]
018E992F C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],8
018E9937 E8 B48ACAFF CALL 015923F0
018E993C C68424 D4080000 MOV BYTE PTR SS:[ESP+8D4],7
018E9944 8B0D E8AD0602 MOV ECX,DWORD PTR DS:[206ADE8]
018E994A FF7424 34 PUSH DWORD PTR SS:[ESP+34]
018E994E 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9950 FF50 30 CALL DWORD PTR DS:[EAX+30]
018E9953 8D4C24 60 LEA ECX,[ESP+60]
018E9957 C78424 D4080000 MOV DWORD PTR SS:[ESP+8D4],-1
018E9962 E8 E938CAFF CALL 0158D250
018E9967 EB 31 JMP SHORT 018E999A
018E9969 8BBB 80000000 MOV EDI,DWORD PTR DS:[EBX+80]
018E996F 8B77 08 MOV ESI,DWORD PTR DS:[EDI+8]
018E9972 8BCE MOV ECX,ESI
018E9974 E8 576A0400 CALL 019303D0
018E9979 FF76 18 PUSH DWORD PTR DS:[ESI+18]
018E997C 8BCE MOV ECX,ESI
018E997E FF76 1C PUSH DWORD PTR DS:[ESI+1C]
018E9981 6A 01 PUSH 1
018E9983 6A FF PUSH -1
018E9985 FF7424 3C PUSH DWORD PTR SS:[ESP+3C]
018E9989 E8 929D0400 CALL 01933720
018E998E 8B07 MOV EAX,DWORD PTR DS:[EDI]
018E9990 8BCF MOV ECX,EDI
018E9992 68 06010000 PUSH 106
018E9997 FF50 04 CALL DWORD PTR DS:[EAX+4]
018E999A 8B83 80000000 MOV EAX,DWORD PTR DS:[EBX+80]
018E99A0 8B88 A4000000 MOV ECX,DWORD PTR DS:[EAX+0A4]
018E99A6 85C9 TEST ECX,ECX
018E99A8 74 2C JE SHORT 018E99D6
018E99AA 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E99AC 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
018E99AF FFD0 CALL EAX
018E99B1 84C0 TEST AL,AL
018E99B3 75 21 JNE SHORT 018E99D6
018E99B5 8BB3 80000000 MOV ESI,DWORD PTR DS:[EBX+80]
018E99BB 8B4E 08 MOV ECX,DWORD PTR DS:[ESI+8]
018E99BE E8 6DC80400 CALL 01936230
018E99C3 8B8E A4000000 MOV ECX,DWORD PTR DS:[ESI+0A4]
018E99C9 3941 20 CMP DWORD PTR DS:[ECX+20],EAX
018E99CC 76 08 JBE SHORT 018E99D6
018E99CE 6A 00 PUSH 0
018E99D0 50 PUSH EAX
018E99D1 E8 6ABA0500 CALL 01945440
018E99D6 8A43 41 MOV AL,BYTE PTR DS:[EBX+41]
018E99D9 84C0 TEST AL,AL
018E99DB 74 2E JE SHORT 018E9A0B
018E99DD 0FB6C0 MOVZX EAX,AL
018E99E0 8D0C83 LEA ECX,[EAX*4+EBX]
018E99E3 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E99E5 FF50 10 CALL DWORD PTR DS:[EAX+10]
018E99E8 8BC8 MOV ECX,EAX
018E99EA 8B10 MOV EDX,DWORD PTR DS:[EAX]
018E99EC 8B42 60 MOV EAX,DWORD PTR DS:[EDX+60]
018E99EF FFD0 CALL EAX
018E99F1 84C0 TEST AL,AL
018E99F3 74 16 JE SHORT 018E9A0B
018E99F5 8B83 80000000 MOV EAX,DWORD PTR DS:[EBX+80]
018E99FB 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
018E99FE F640 20 01 TEST BYTE PTR DS:[EAX+20],01
018E9A02 74 07 JE SHORT 018E9A0B
018E9A04 8BCB MOV ECX,EBX
018E9A06 E8 C5E9FFFF CALL 018E83D0
018E9A0B 807D 10 00 CMP BYTE PTR SS:[EBP+10],0
018E9A0F 74 19 JE SHORT 018E9A2A
018E9A11 8A43 41 MOV AL,BYTE PTR DS:[EBX+41]
018E9A14 84C0 TEST AL,AL
018E9A16 74 12 JE SHORT 018E9A2A
018E9A18 0FB6C0 MOVZX EAX,AL
018E9A1B 8D0C83 LEA ECX,[EAX*4+EBX]
018E9A1E 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9A20 FF50 10 CALL DWORD PTR DS:[EAX+10]
018E9A23 8BC8 MOV ECX,EAX
018E9A25 8B10 MOV EDX,DWORD PTR DS:[EAX]
018E9A27 FF52 7C CALL DWORD PTR DS:[EDX+7C]
018E9A2A 807C24 0F 00 CMP BYTE PTR SS:[ESP+0F],0
018E9A2F 74 07 JE SHORT 018E9A38
018E9A31 8BCB MOV ECX,EBX
018E9A33 E8 C8ADFFFF CALL 018E4800
018E9A38 818B 90000000 0 OR DWORD PTR DS:[EBX+90],00002000
018E9A42 8BCB MOV ECX,EBX
018E9A44 E8 97EFFCFF CALL 018B89E0
018E9A49 8BF0 MOV ESI,EAX
018E9A4B 68 00040000 PUSH 400
018E9A50 8BCE MOV ECX,ESI
018E9A52 E8 19E3FAFF CALL 01897D70
018E9A57 8D56 14 LEA EDX,[ESI+14]
018E9A5A 8088 98000000 0 OR BYTE PTR DS:[EAX+98],01
018E9A61 833A 00 CMP DWORD PTR DS:[EDX],0
018E9A64 75 1A JNE SHORT 018E9A80
018E9A66 81E6 00F0FFFF AND ESI,FFFFF000
018E9A6C 8B4E 0C MOV ECX,DWORD PTR DS:[ESI+0C]
018E9A6F 83C1 20 ADD ECX,20
018E9A72 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9A74 8902 MOV DWORD PTR DS:[EDX],EAX
018E9A76 894A 04 MOV DWORD PTR DS:[EDX+4],ECX
018E9A79 8B01 MOV EAX,DWORD PTR DS:[ECX]
018E9A7B 8950 04 MOV DWORD PTR DS:[EAX+4],EDX
018E9A7E 8911 MOV DWORD PTR DS:[ECX],EDX
018E9A80 8B8C24 CC080000 MOV ECX,DWORD PTR SS:[ESP+8CC]
018E9A87 B0 01 MOV AL,1
018E9A89 5F POP EDI
018E9A8A 5E POP ESI
018E9A8B 64:890D 0000000 MOV DWORD PTR FS:[0],ECX
018E9A92 5B POP EBX
018E9A93 8BE5 MOV ESP,EBP
018E9A95 5D POP EBP
018E9A96 C2 0C00 RETN 0C
Warum muss man sich die Funktion angucken? Müssen nicht die Parameter vorher auf den Stack geschoben werden oder schon in irgendwelchen Registern liegen? Ich dachte daran könnte man das erkennen...
€: Hab die komplette Funktion in den Spoiler gepackt
|
|
|
08/19/2014, 12:59
|
#5
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Was davor passiert ist fast uninteressant, wenn du uns nicht die gesamte Funktion zeigst und was nach dem call passiert.
Code:
013CDB47 8B0D A8A80602 MOV ECX,DWORD PTR DS:[206A8A8]
sieht nach __thiscall aus, aber kann ich mit dem bissel Schnippsel da oben nicht sagen.
|
|
|
08/19/2014, 13:41
|
#6
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
Hab den Rest der Funktion oben reineditiert... Kannst du mir sagen, wie du anhand von dem Schnipsel auf __thiscall kommst?
Heißt
Code:
018E9A96 C2 0C00 RETN 0C
dass es __stdcall ist, weil der Stackpointer beim return zurückgesetzt wird?
|
|
|
08/19/2014, 14:01
|
#7
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Wenn die Datei mit MSVC++ compiled wurde, handelt es sich ziemlich sicher um einen __thiscall
Soweit ich weiß, ist der einzige Unterschied zwischen __stdcall und __thiscall (bei MSVC++), dass davor eben der MOV in ECX ausgeführt wird, wobei der 'this'-Pointer in ECX gemoved wird und damit an die Funktion übergeben wird. Die aufgerufene Funktion bereinigt mit deinem Return noch den Stack -> ergo __thiscall
Du kannst aber auch (wie buFFy! schon gesagt hat) einfach IDA + Decompiler verwenden, die haben ne recht hohe Trefferquote
Padmak
|
|
|
08/19/2014, 21:37
|
#8
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Quote:
Originally Posted by .Infinite
Hab den Rest der Funktion oben reineditiert... Kannst du mir sagen, wie du anhand von dem Schnipsel auf __thiscall kommst?
Heißt
Code:
018E9A96 C2 0C00 RETN 0C
dass es __stdcall ist, weil der Stackpointer beim return zurückgesetzt wird?
|
Aufrufkonvention ? Wikipedia
Quote:
|
Beim Microsoft Visual C++ Compiler wird der this-Zeiger im ECX-Register übergeben und die aufgerufene Funktion bereinigt den Stack, es wird also wie bei der stdcall Aufrufkonvention verfahren. Werden hingegen variable Argumentlisten verwendet bereinigt die aufrufende Funktion den Stack (also wie bei cdecl).
|
Wohl bemerkt nur bei MSVC++
|
|
|
08/20/2014, 17:14
|
#9
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
Hab mir jetzt IDA runtergeladen und die Funktion in Pseudocode anzeigen lassen. Jetzt funktionierts
Ich weiß zwar immer noch nicht wie man sicher die calling convention rausfindet, aber wenn IDA mir das so einfach macht ist das vielleicht auch garnicht nötig...
|
|
|
08/20/2014, 17:47
|
#10
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Wie wir schon sagten, du musst dir ansehen wie die Parameter übegeben werden und was der Stack macht. Mithilfe der vorher verlinkten Wiki-Page kannst du dann die calling convention rausfinden. Oder eben IDA, was wesentlich angenehmer ist :P
Padmak
|
|
|
08/21/2014, 10:22
|
#11
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Generell ist zu sagen, dass man nicht alles wissen muss.
Jedoch auch wenn IDA mehr oder weniger zuverlässig ist, sind Menschen in der Regel zuverlässiger.
Es ist nicht unwahrscheinlich, dass dir IDA früher oder später eine Funktion wirft bei der die Analyse nicht ganz so verlaufen ist, wie sie hätte verlaufen sollen.
Es ist sinnvoll immer IDA zu nehmen, aber gleichzeitig in der Lage zu sein, IDA's Analyse auf ihre Richtigkeit überprüfen zu können.
|
|
|
08/21/2014, 13:11
|
#12
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Tipp: wenn IDA einen __stdcall mit 'nem int-Parameter am Anfang zeigt, ist in dem int-Parameter höchstwahrscheinlich 'this' versteckt und es entspricht eigentlich 'nem __thiscall
Padmak
|
|
|
08/21/2014, 13:18
|
#13
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Quote:
Originally Posted by Padmak
Tipp: wenn IDA einen __stdcall mit 'nem int-Parameter am Anfang zeigt, ist in dem int-Parameter höchstwahrscheinlich 'this' versteckt und es entspricht eigentlich 'nem __thiscall
Padmak
|
die neuste ida version macht das nurnoch so. der param heißt dann einfach this.
btw meinst du __fastcall? bei stdcall sollte das eigentlich nich sein. __fastcall hat ersten params in ecx und edx, rest von rechts->links aufm stack
|
|
|
08/21/2014, 14:11
|
#14
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
IDA 6.1 zeigt manchmal __stdcalls, wie z.B. hier:
Code:
char __stdcall sub_44AF40(void *a1)
a1 wird aber als this verwendet in der Funktion.
__fastcall hab ich bei IDA persönlich noch nie gesehen^^
Aber egal, der TE scheint ja seine Antwort bekommen zu haben :P
Padmak
|
|
|
08/21/2014, 18:11
|
#15
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
__userpurge bringt IDA auch gerne mal damit durcheinander, besonders wenn Float-Zahlen im Spiel sind.
|
|
|
Similar Threads
|
[HOW TO] Spawner finden , Diamanten Finden
01/03/2012 - Minecraft - 4 Replies
wie findet man spawner schnell, wo kann man sie finden und was sind zeichen das ein spawner in der nähe ist?
wie findet man schnell diamanten und wo?
|
Wrong Calling Convention! (Run-Time Check Failure #0)
01/11/2010 - General Coding - 4 Replies
Greetings,
hijax
|
Games Convention, wer kommt?
08/09/2008 - Off Topic - 22 Replies
Nach Screenys vergeblichen versuch leute auf der Blizzcon zu finden suche ich mal welche auf der GC :P
wer kommt?
Können uns ja treffen oder so und so boxen dann!
|
games convention
07/05/2006 - Off Topic - 6 Replies
hio kann mir wer nen link geben wo man convention tickets vorbestellen kann?
irgendwie is der link von saturn down >.<
|
[WoW] Games Convention mit WoW und Blizzard!
08/17/2004 - User Submitted News - 5 Replies
Somit hab ich auch fast nen Grund da hinzufahren :D Wer fährt von euch alles hin??
|
All times are GMT +1. The time now is 03:37.
|
|