首页
社区
课程
招聘
[求助]如何计算出x86指令的大小
发表于: 2009-7-2 00:25 5780

[求助]如何计算出x86指令的大小

2009-7-2 00:25
5780
如何计算出x86指令的大小 , 我是想好hook api ,把前面的几个代码移入myhook函数

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 203
活跃值: (10)
能力值: ( 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是一个反汇编引擎,可以从附件
上传的附件:
2009-7-2 12:49
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢了fmicromath
2009-7-2 22:58
0
游客
登录 | 注册 方可回帖
返回
//