反汇编引擎
反汇编引擎就是将二进制程序代码还原成汇编代码的这样一种工具。因为程序编译完成之后,是以二进制存在的。二进制犹如天书,很难读懂。因此,可以使用反汇编引擎将二进制还原成可以阅读的汇编指令。在实际的HOOK,逆向,调试等方面,会经常使用到反汇编引擎。常见的反汇编引擎有:
XDE
BeaEngine(X32/x64)
Libdasm
下面这段代码,就是调用XDE反汇编引擎中的函数xde_disasm()将指针p所指内存中的二进制代码进行反汇编,还原成汇编指令的过程:
struct xde_instr instr;
while (totalLength < 5)
{
length = xde_disasm(p+ totalLength, &instr);
if (length == 0)
{
return STATUS_UNSUCCESSFUL;
}
totalLength += length;
}
它的作用就是在p所指的位置,找到连续的汇编指令,使得这些指令长度之和大于等于5个字节,以便能容纳一条jmp 指令(5个字节),从而实现HOOK的指令替换。