[英]ASM to C - Can someone explain me what structure this is?
我有以下ASM代碼(OllyDbg),它應該包含在c中開發的結構。 有人能告訴我結構在c編程語言中是怎么樣的嗎? 也許稍微解釋一下你如何弄清楚結構中存儲的內容等等......
非常感謝你!
CPU Disasm
Address Hex dump Command Comments
6A27F058 /$ 68 E9A6286A PUSH 6A28A6E9 ; Entry point
6A27F05D |. 64:FF35 00000 PUSH DWORD PTR FS:[0]
6A27F064 |. 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
6A27F068 |. 896C24 10 MOV DWORD PTR SS:[ESP+10],EBP
6A27F06C |. 8D6C24 10 LEA EBP,[ESP+10]
6A27F070 |. 2BE0 SUB ESP,EAX
6A27F072 |. 53 PUSH EBX
6A27F073 |. 56 PUSH ESI
6A27F074 |. 57 PUSH EDI
6A27F075 |. A1 E067336A MOV EAX,DWORD PTR DS:[6A3367E0]
6A27F07A |. 3145 FC XOR DWORD PTR SS:[EBP-4],EAX
6A27F07D |. 33C5 XOR EAX,EBP
6A27F07F |. 50 PUSH EAX
6A27F080 |. 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
6A27F083 |. FF75 F8 PUSH DWORD PTR SS:[EBP-8]
6A27F086 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
6A27F089 |. C745 FC FEFFF MOV DWORD PTR SS:[EBP-4],-2
6A27F090 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
6A27F093 |. 8D45 F0 LEA EAX,[EBP-10]
6A27F096 |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX
6A27F09C \. C3 RETN
這是函數__SEH_prolog4
,它是用於設置每個函數異常處理程序的編譯器幫助程序。 這是庫中的列表(RunTmChk.lib / sehprolg4.obj):
.text:00000000 __SEH_prolog4 proc near
.text:00000000
.text:00000000 arg_4 = dword ptr 8
.text:00000000
.text:00000000 68 60 00 00 00 push offset __except_handler4
.text:00000005 64 FF 35 00 00 00+ push large dword ptr fs:0
.text:0000000C 8B 44 24 10 mov eax, [esp+8+arg_4]
.text:00000010 89 6C 24 10 mov [esp+8+arg_4], ebp
.text:00000014 8D 6C 24 10 lea ebp, [esp+8+arg_4]
.text:00000018 2B E0 sub esp, eax
.text:0000001A 53 push ebx
.text:0000001B 56 push esi
.text:0000001C 57 push edi
.text:0000001D A1 64 00 00 00 mov eax, ds:___security_cookie
.text:00000022 31 45 FC xor [ebp-4], eax
.text:00000025 33 C5 xor eax, ebp
.text:00000027 50 push eax
.text:00000028 89 65 E8 mov [ebp-18h], esp
.text:0000002B FF 75 F8 push dword ptr [ebp-8]
.text:0000002E 8B 45 FC mov eax, [ebp-4]
.text:00000031 C7 45 FC FE FF FF+ mov dword ptr [ebp-4], 0FFFFFFFEh
.text:00000038 89 45 F8 mov [ebp-8], eax
.text:0000003B 8D 45 F0 lea eax, [ebp-10h]
.text:0000003E 64 A3 00 00 00 00 mov large fs:0, eax
.text:00000044 C3 retn
.text:00000044 __SEH_prolog4 endp
有關詳細信息,請參見此處
這不是程序員編寫的代碼,你看錯了地方。
如果這確實是您的代碼,您可以通過右鍵單擊CPU窗口,進入“ Comments
子菜單並選擇“ Show source
,使OllyDbg顯示相應的C代碼。 要完成這項工作,您需要屬於可執行文件的pdb文件。
我不確定Olly1.X是否已經支持,但2.X版本肯定能夠這樣做。
我不完全確定,因為我看過C / ASM已經有一段時間了。 但是在看了一眼之后,這里有一些想法。 請記住,我不會過分依賴它,但它可能有所幫助。
看看ASM的這一部分:
6A27F07F |. 50 PUSH EAX
6A27F080 |. 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
6A27F083 |. FF75 F8 PUSH DWORD PTR SS:[EBP-8]
6A27F086 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
6A27F089 |. C745 FC FEFFF MOV DWORD PTR SS:[EBP-4],-2
6A27F090 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
6A27F093 |. 8D45 F0 LEA EAX,[EBP-10]
基於幀指針偏移,我猜測結構包含2個INT和1個LONG或DOUBLE。
不幸的是,我目前在X86中不夠流利,無法為您提供更好的說明。 同樣,我不會過分依賴這一點,因為我可能完全錯了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.