首页
社区
课程
招聘
修改text段后,为什么无法正确进入OEP?

我将OEP地址修改到了一个新节区,同时再将.text节区全部进去修改。当我将这个修改后的软件放入OD,发现OD没办法定位到设定好的新的OEP。
AddressOfEntryPoint和ImageBase分别为6000与4000000,理论上我难度不应该在加载该文件时跳转至406000么?
但当我试着将它丢进OD,发现软件停在了7725B46B的地方,且没办法顺利往下调试。
请问,这是为什么?以及PE文件装载器是如何定位到OEP的(因为我发现即便设定了一个新的OEP,它也并没有跳转过去)?

收藏
2条回答
ffashi 2021-5-5

用stud看清楚先。

回复
小白iii 2021-6-6

因为没有图片展示修改后拖入OD的代码,所以下面的内容纯属个人猜测:

  1. 从地址上可以看出,代码位于地址 0x7XXXXXXX ,通常这个地址保存的都是系统模块,而程序在处于被调试状态的时候,会默认设置一个断点,使程序中断在 ntdll!LdrpDoDebuggerBreak 位置,有没有可能断下的是这个位置?验证方法,再次按下 F9,如果程序二次中断,基本就能确定了。
  2. 添加区段的时候有没有为区段添加可执行的属性,如果没有添加,程序在进入 OEP 时,由于不可执行,会产生异常,最终也可能中断在一个 0x7XXXXXXX 的地址上。
  3. 如果上面的两个都不是,那么请补充和问题相关的更多信息,例如修改后的 pe 文件,或拖入 OEP 后显示的代码内容。
回复
JsonBourne: 你说的有道理!
回复 2022-6-14