汇编hook代码经验总结

2023-10-21 10:46:42 浏览数 (2)

整理自己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 人点赞