IDA Pro vs. OllyDebugger
-
Hallo ich hab gerade die StdOut Funktion von MASM mir im Disassembler angeschaut.
IDA erstellt folgendes:
text:00401054 push ebp .text:00401055 mov ebp, esp .text:00401057 add esp, 0FFFFFFF8h .text:0040105A push 0FFFFFFF6h ; nStdHandle .text:0040105C call GetStdHandle .text:00401061 mov [ebp+hFile], eax .text:00401064 push 7 ; dwMode .text:00401066 push [ebp+hFile] ; hConsoleHandle .text:00401069 call SetConsoleMode .text:0040106E push 0 ; lpOverlapped .text:00401070 lea eax, [ebp+NumberOfBytesRead] .text:00401073 push eax ; lpNumberOfBytesRead .text:00401074 push [ebp+nNumberOfBytesToRead] ; nNumberOfBytesToRead .text:00401077 push [ebp+lpBuffer] ; lpBuffer .text:0040107A push [ebp+hFile] ; hFile .text:0040107D call ReadFile .text:00401082 mov eax, [ebp+NumberOfBytesRead] .text:00401085 leave .text:00401086 retn 8
OllyDebugger erstellt das hier:
0040108C /$ 55 PUSH EBP 0040108D |. 8BEC MOV EBP,ESP 0040108F |. 83C4 F4 ADD ESP,-0C 00401092 |. 6A F5 PUSH -0B ; /DevType = STD_OUTPUT_HANDLE 00401094 |. E8 6D000000 CALL <JMP.&kernel32.GetStdHandle> ; \GetStdHandle 00401099 |. 8945 FC MOV [LOCAL.1],EAX ; kernel32.BaseThreadInitThunk 0040109C |. FF75 08 PUSH [ARG.1] 0040109F |. E8 2C000000 CALL console.004010D0 004010A4 |. 8945 F4 MOV [LOCAL.3],EAX ; kernel32.BaseThreadInitThunk 004010A7 |. 6A 00 PUSH 0 ; /pOverlapped = NULL 004010A9 |. 8D45 F8 LEA EAX,[LOCAL.2] ; | 004010AC |. 50 PUSH EAX ; |pBytesWritten = kernel32.BaseThreadInitThunk 004010AD |. FF75 F4 PUSH [LOCAL.3] ; |nBytesToWrite = 0 004010B0 |. FF75 08 PUSH [ARG.1] ; |Buffer = 7FFDB000 004010B3 |. FF75 FC PUSH [LOCAL.1] ; |hFile = 7FFDB000 004010B6 |. E8 5D000000 CALL <JMP.&kernel32.WriteFile> ; \WriteFile 004010BB |. 8B45 F8 MOV EAX,[LOCAL.2] ; kernel32.777F1114 004010BE |. C9 LEAVE 004010BF \. C2 0400 RETN 4
Bei IDA Pro wird die Funktion: ReadFile aufgerufen und bei Olly steht dort WriteFile.
Eigentlich müsste ja an der Stelle WriteFile richtig sein da ja Text ausgeben werden soll.
Bei IDA Pro steht am Ende RETN 8 und bei Olly RETN 4.
Kann mir wer erklären warum ich zwei so verschiedene Ausgaben erhalte?
-
Sry mein Fehler ...
Meinen Fehler erkennt man an den Offset Adressen. Ich hab in IDA ausversehen bei der falschen Funktion geguckt.
xD
-
MASM hat keine StdOut Funktion!
Den Quelltext dieser Funktion findest du im MASM32 SDK.