小编Chu*_*ski的帖子

在这种情况下,OllyDbg和Assembler中的EBP + 8是什么意思?

我正在学习OllyDbg中的汇编程序和调试技巧,以学习如何使用未记录的函数.现在我遇到以下问题:

我有以下代码部分(来自OllyDbg):

MOV EDI,EDI
PUSH EBP
MOV EBP,ESP
MOV EAX, DWORD PTR SS:[EBP+8]
XOR EDX,EDX
LEA ECX, DWORD PTR DS:[EAX+4]
MOV DWORD PTR DS:[EAX], EDX
MOV DWORD PTR DS:[ECX+4],ECX
MOV DWORD PTR DS:[ECX],ECX
MOV DWORD PTR DS:[EAX+C],ECX
MOV ECX, DWORD PTR SS:[EBP+C]
Run Code Online (Sandbox Code Playgroud)

这是函数的开始,目标是查找数据结构.所以我发现它首先将EBP推入堆栈,然后将ESP(当前堆栈指针)移动到EBP,我认为它现在定义了该函数的堆栈帧.现在教程说在流行的布局中,第一个参数位于[EBP + 8],第二个参数位于[EBP + C]

这是我不明白的.我怎么知道第一个参数放在EBP + 8?

希望有人可以帮助我!谢谢!

assembly stack-frame ollydbg

5
推荐指数
1
解决办法
9380
查看次数

ASM到C - 有人可以解释一下这是什么结构吗?

我有以下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 …
Run Code Online (Sandbox Code Playgroud)

c assembly structure

2
推荐指数
1
解决办法
3713
查看次数

标签 统计

assembly ×2

c ×1

ollydbg ×1

stack-frame ×1

structure ×1