猛牛哥
记录网络点滴生活

汇编hook代码经验总结

整理自己hook汇编代码的经验。

1、现场的保存和恢复

之前是逐条push和pop,后来在网上看到更简洁的方法:pushad(机器码是:0x60),popad(机器码是0x61),一次性保存和恢复所有寄存器。

2、跳转

有3种方式,一种是call 偏移量,这种方式占5byte,但是需要计算偏移量,本人懒,不到不得已,不想采用此方式。

第二种,call [地址],这种方式占6byte,机器码是:FF 15 地址,实际要call的地址是保存在[地址]这个内存里面的。

第三种,mov eax,地址,call eax,这种方式占7byte。

第四种,mov eax,地址,jmp eax。这种方式占用7byte。使用这种方式时,需要找到一处原代码正好是7byte的指令(可以是多条),跳转后再跳回来之前一定要补上被占用的原代码。

其中,第二种方式用起来较为方便。

赞(0) 打赏
猛牛哥原创:猛牛哥的博客 » 汇编hook代码经验总结

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏