为什么OD代码与IDA代码不一样(OD自己增加了代码)
IDA找到关键代码,当我准备在OD中调试时,通过地址转换后,发觉相同位置的代码居然不一样,经过仔细搜索查找和人工对比,发现OD等调试器的反汇编代码比IDA反汇编代码多,不知道为什么OD要自动插入这些代码,我又用X64dbg和C32Asm打开对比,发现OD和x64dgb一致,IDA和C32Asm一致,请教各位这是为什么?如果遇到这种情况,添加代码后的地址如何在OD和IDA之间进行转换?IDA反汇编代码:
c32asm反汇编代码:
OD反汇编代码:(蓝色框为OD自动添加的代码)
X32dbg反汇编代码:(蓝色框为x32dbg自动添加的代码)
fanvalen 发表于 2021-3-20 13:46
大概是载入内存与否的区别,
主要原因是load pe
程序不是按文件连续结构压入内存
pe装载时按段载入,修改导入表,从内存布局看这段代码位于.text段,和导入表也没关系,为什么载入后.text段的代码被修改了呢?请指教! fanvalen 发表于 2021-3-20 13:46
大概是载入内存与否的区别,
主要原因是load pe
程序不是按文件连续结构压入内存
我知道的是分段映射到内存中,段的起始地址与文件起始地址不一致,但为何段中间的代码会不一致呢? 好东西啊,谢谢分享
没遇到过,用16进制编辑器,找到地方看原文件,看看到底是谁加了还是谁减了 其达到的效果是一样的。
只不过写法不太一样。 winddyj 发表于 2021-3-20 13:02
没遇到过,用16进制编辑器,找到地方看原文件,看看到底是谁加了还是谁减了
用c32asm的“对应HEX编辑”,显示与他的反汇编一致,应该是OD类调试器增加的。 白如雪 发表于 2021-3-20 13:10
其达到的效果是一样的。
只不过写法不太一样。
效果不一样,多了蓝框部分的调用,从代码看应该增加了对某个对象成员函数的调用 大概是载入内存与否的区别,
主要原因是load pe
程序不是按文件连续结构压入内存
程序是把文件分成几类结构压入内存
具体结构去看od || dbg内存布局
用ida调试呢 coolkids1988 发表于 2021-3-20 15:11
用ida调试呢
IDA调试加载很慢,后半段代码反编译没成功,从前面部分看和OD类似,增加了代码。
页:
[1]
2