uall@ogc hat folgendes geschrieben: |
ohne das du mich jetzt steinigst ich habs mir nicht angeguckt werfe aber einfach aml was in den raum
.text:100034DA retn 18h
18h = 24 div 4 = 6 parameter? |
Interessantes Argument. Allerdings kann man sich bei heutigen Compilern schwerlich auf dieses Argument verlassen, da die den Stackpointer jederzeit mal nach gusto modifizieren. Man müßte also zum Nachweis dieses Arguments alle Zugriffe auf ESP überprüfen.
Aber wäre immerhin möglich.
Ich nehme jedoch eher an, daß es sich um die Stackbereinigung nach den beiden C-Funktionen free() handelt. Es gibt zwar bereits das "add esp, 20h", aber man müßte eben mit einem Rechner durchgehen und die ESP-Werte notieren. Da IDA das für mich macht und anzeigt, falls mit dem Stackpointer was nicht stimmt, bin ich zuversichtlich, daß dies nur eine Optimierung seitens des Compilers ist:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| .text:100034BF mov edi, ds:free .text:100034C5 push ecx ; void * .text:100034C6 call edi ; free .text:100034C8 push esi ; void * .text:100034C9 call edi ; free .text:100034CB add esp, 20h .text:100034CE mov al, 1 .text:100034D0 pop edi .text:100034D1 pop esi .text:100034D2 pop ebp .text:100034D3 pop ebx .text:100034D4 add esp, 6B4h .text:100034DA retn 18h .text:100034DA YMSG12_ScriptedMind_Encrypt endp |
uall@ogc hat folgendes geschrieben: |
bei stdcall ist es doch immer so das RET die anzahl der parameter zurückgibt oder sehe ich das falsch? (und über stdcall sind wir uns soch einig assarbad) |
Jupp, sind wir
