|
发表于 2012-8-21 16:33:17
|
显示全部楼层
本帖最后由 biackese 于 2012-8-21 16:34 编辑
= =不是LS说的那些
因为 HOOK就是 把他要调用函数的时候 先跳到自己的
然后 过程就简单了
比如 执行API
push 参数 了
然后call ffffffff= =函数
= =就是这么个意思 然后
我们要做的 是先要把这个跳到 我们的函数 处理过里面的参数 在去调用原来的API
所以 我们要把call 函数 改成 jmp 我们自己的函数 参数压到堆栈就先调自己的函数 去处理参数 或实现其他一些
所以 地址计算 是 自己的函数-真正的函数-5
call 地址 一共占5个字节
比如 call的地址 4E0000
我们的 4F0000
然后 写的话 JMP实际跳转的是偏移
就是 4E0000 到 4F0000的偏移
就是这条指令 到我们的假的 中间的差在减5 为什吗减5呢 因为真的 那个callXXX占了5个字节
其实 是从callXX后一条指令到我们假的 值就是偏移
然后就是 fffb
然后写进去的内存就是 call xxx被写成我们的例子 jmp 0000fffb
当然 OD里看到了 就是jmp 4F0000= =因为OD都是把偏移的 计算到实际位置的 方便人的观看
|
评分
-
查看全部评分
|