| 
注册时间2015-5-19
阅读权限20
最后登录1970-1-1UID90629 以武会友  
 
 TA的每日心情|  | 开心 2015-12-12 14:28
 | 
|---|
 签到天数: 1 天 [LV.1]初来乍到 | 
 
| 本帖最后由 bbaa987 于 2017-4-3 10:31 编辑 
 仿照Aheadlib做的64位的版本。 由于默认vs编译器不支持x64的内联汇编。所以使用了obj文件。
 obj文件源码是obj.asm文件。
 写个例子 说下 转发的原理:
 1.原始是call [0x405000];
 2.进入劫持函数 void MyFunc() { AsmFunc1(); AsmFunc2((INT64)RealFuncAddr); }
 //这里只是保存一下第一个参数到rax AsmFunc1: mov rax,rcx retn
 //让rax指向真正的 eip(rcx是第一个参数) 还原第一个参数,跳到原始函数执行 AsmFunc2: xchg rax,rcx jmp rax
 返回的时候是先返回到 AsmFunc2 下面 再返回到 原始调用处的下面
 实际情况自己找个DLL劫持下走一遍就清晰了。
 64位版本的很少,这个是从古歌搜索到的。这里是源码。哪位大牛研究研究源码看看能否写出来更好的工具。
 
 
 | 
 评分
查看全部评分
 |