能力值:
( LV2,RANK:10 )
|
-
-
2 楼
用反汇编引擎, 直接看看楚狂人说的吧: 下面的任务是拷贝代码。我们前面得到的jmp指令为7个字节。就是说我们至少要拷贝出7个字节的代码。我们不能只拷贝7字节。指令长度不定,这可能把一条指令分成两段。我们只好逐条执行进行反汇编。当得到的总的字节数达到或者超过7个字节的时候,大功告成。下面假设IofCallDriver的开始地址为start_address.
size_t length,total_length = 0;
struct xde_instr code_instr={0};
byte_t *start_address = (byte_t *)MmGetSystemRoutineAddress(…);
while(total_length < 7)
{
length = xde_disasm(start_address ,&code_instr); // 反汇编一条指令
if(length == 0) // 如果有指令解析失败,就直接返回失败
return false;
total_length += length; // 计算已经反汇编的指令的总长度
} xde_disasm是一个反汇编引擎,可以从附件
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢了fmicromath
|
|
|