....
LEA EAX, DWORD PTR DS:[0x404212]
MOV DWORD PTR SS:[EBP-0x3CC], EAX
PUSH DWORD PTR SS:[EBP-0x3CC]
...
...
...
LEA EAX, DWORD PTR DS:[0x404213]
MOV DWORD PTR SS:[EBP-0x3D0], EAX
PUSH DWORD PTR SS:[EBP-0x3D0]
...
...
所以,我问自己如何将这段代码翻译成C之类的高级语言?还是伪C语言?
但是,对于这两个块,我有以下内容:
UNKNOWNTYPE *eax_pointer_1; //points to 00404212
UNKNOWNTYPE *eax_pointer_2; //points to 00404213
在ollydbg中,我看到了地址00404212有以下一行:
ADD BYTE PTR DS:[EAX], DH
,在地址00404213处有:
XOR BYTE PTR DS:[EAX], AL
所以我的问题是:这是正确的转换吗?您是否知道如何将00404212和00404213中的指令转换为伪C语言的一部分?
#1 楼
在ollydbg中,我看到在地址
00404212
上有以下行:ADD BYTE PTR DS:[EAX], DH
在地址
00404213
上有:XOR BYTE PTR DS:[EAX], AL
我不认为这些是代码,而是变量,它们在代码/执行部分中吗?
评论
不,它们不在代码/执行部分中。我只能通过在ollydbg上单击鼠标右键,然后单击“转到->表达式”来跳转到这两个地址。
–user3097712
2014年8月31日23:13
好吧,这使我之前的评论无效。检查此时的数据以猜测指针的类型。
–杂件
2014年9月1日下午6:33
这两行是参数指向的数据段,它毫无用处,无法将em转换为asm指令!
– Abr001am
2015年9月4日在4:47
#2 楼
看起来正在获取某物(也许是数组元素)的地址,并且该地址正被用来建立调用框架以供以后使用。大致类似的东西:void f(void){
void *x = &someMemory;
void *y = &someMemory2;
g(y,x);
}
凹形吊环。
评论
如果确定这些指针指向函数(而不是数据),则UNKNOWNTYPE *是函数指针。要“使它们成为整个代码的一部分”,请将指向的指令也转换为单独的函数。好的,谢谢您的回答。