【发布时间】:2016-03-15 18:16:21
【问题描述】:
我正在尝试了解 PE 在 Windows 下的工作原理,因此我正在编写打包程序。 因此,我获取了指向 _mainCRTStartup 的入口点地址,并将其替换为指向“jmp _mainCRTStartup”的值。 当我在调试器下运行它时,我的程序运行良好,但如果我只是在没有调试器的情况下启动可执行文件,它会崩溃并且我无法在崩溃后附加调试器,调试器会说它无法附加到崩溃进程。
我想我的问题是:我的方法应该奏效吗?如果是这样,我可以尝试解决此问题吗?
谢谢,
最大
【问题讨论】:
-
OEP?您的意思是 AddressOfEntryPoint 字段?
-
没错,我认为OEP代表Origin Entry Point。
-
确保您使用的是相对于可执行文件的实际加载地址的值(通常是 ImageBase 值)。因此,如果内存中的实际入口点应该是 0x401570 而 ImageBase 是 0x400000,那么值应该是 0x1570。
-
是的,它使用了正确的相对地址,我不明白为什么它可以在调试器下工作,但不是没有...
标签: windows debugging assembly packer