我正在尝试反转 PE 可执行文件(挑战教程)。我在程序的第一条指令的入口点处放置了一个断点。之前没有执行任何操作。
运行程序时出现软件断点异常。我认为这是一个调试器检测系统。但是我不知道抛出这个异常的代码在哪里,因为我还没有到达我的程序入口点。
异常抛出ntdll.dll
我想了解如何ntdll.dll
在二进制文件的入口点之前执行代码
谢谢
我正在尝试反转 PE 可执行文件(挑战教程)。我在程序的第一条指令的入口点处放置了一个断点。之前没有执行任何操作。
运行程序时出现软件断点异常。我认为这是一个调试器检测系统。但是我不知道抛出这个异常的代码在哪里,因为我还没有到达我的程序入口点。
异常抛出ntdll.dll
我想了解如何ntdll.dll
在二进制文件的入口点之前执行代码
谢谢
在入口点之前运行的一件事是TLS 回调,所以检查你的二进制文件是否有它们。
无意冒犯,但这个问题表明对 windows 如何加载用户模式进程、如何构建用户模式代码和可执行文件的一些基本缺乏了解。
我将列出一些缺失的部分:
int main(int argc, char* argv[])
. 编译器有一个包装函数,它是 PE 的入口点指向的地方,而 main 仅由它调用。我建议您阅读Peering Inside the PE,因为它非常深入地描述了这些过程。