替换入口点地址 windows 仅在调试器下有效

Replacing Address of entry point windows works only under a debugger

我试图了解 PE 在 windows 下是如何工作的,因此我打算编写一个打包程序。 所以我获取了指向 _mainCRTStartup 的入口点地址,并将其替换为指向 "jmp _mainCRTStartup" 的值。 当我 运行 它在调试器下时,我的程序 运行 很好,但是如果我只是在没有调试器的情况下启动可执行文件,它会崩溃并且我无法附加调试器 post 崩溃,调试器说它无法附加到崩溃的进程。

我想我的问题是:我的方法应该有效吗?如果是这样,我可以尝试如何解决这个问题?

谢谢,

最大

事实证明一切正常,我忘记处理反调试例程中的异常,如果它不在调试器中 运行 会使 exe 崩溃。