这是 Windows XP 的 NTDLL 内部函数之一的开头:
MOV EDI,EDI
PUSH EBP
MOV EBP,ESP
...
我正在阅读的关于逆向工程的书(Eldad Eilam - Reversing: Secrets of Reverse Engineering)对第一行说:
它本质上是由编译器作为占位符放置的死代码,以防有人想要捕获此函数。Trapping 是指某个外部组件添加了一条 JMP 指令,每当调用被捕获的函数时,该指令用作通知。
你能告诉我如何在实践中使用诱捕吗?我假设陷阱只是在另一个函数内部调用一个带有陷阱指令的函数,但我没有意识到外部函数如何获得关于调用的“通知”......作者是否可能指的是“一些外部组件”调试器?这是有道理的,因为如果我为一些奇怪的汇编指令设置断点,例如MOV EDI, EDI,我将到达被困函数所在的位置......