C/C++ x64 Inline Hook 代码封装】的更多相关文章

原始函数是这样的 kernel32!CreateProcessInternalW: 00000000`7738e750 4c8bdc          mov     r11,rsp 00000000`7738e753 53              push    rbx 00000000`7738e754 56              push    rsi 00000000`7738e755 57              push    rdi 00000000`7738e756 41…
概念 inline hook是一种通过修改机器码的方式来实现hook的技术. 原理 对于正常执行的程序,它的函数调用流程大概是这样的: 0x1000地址的call指令执行后跳转到0x3000地址处执行,执行完毕后再返回执行call指令的下一条指令. 我们在hook的时候,可能会读取或者修改call指令执行之前所压入栈的内容.那么,我们可以将call指令替换成jmp指令,jmp到我们自己编写的函数,在函数里call原来的函数,函数结束后再jmp回到原先call指令的下一条指令.如图: 通过修改机器…
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/75200800 一.序言 在前面的博客中,已经分析过了Android Hook框架adbi源码的具体实现,Android Hook框架adbi的实现主要分为两部分,一部分是root权限下的Android跨进程的so注入,一部分是基于Android系统的inline Hook.只要搞清楚了Android系统的跨进程so注入和基于Android系统的inline Hook这两个知识点,…
前言 我在之前研究文明6的联网机制并试图用Hook技术来拦截socket函数的时候,熟悉了简单的Inline Hook方法,但是由于之前的方法存在缺陷,所以进行了深入的研究,总结出了一些有关Windows下x86和x64架构程序的Inline Hook方法. 本文使用的方法并非最优,也没有保证安全,但是用较少的代码实现了所需的功能,非常适合用来学习Inline Hook的基本原理和一般的使用方法. 由于本文是在Windows平台下的,所以你需要对Windows系统的机制需要有一定的了解:同时本文…
Tips : 这篇文章的主题是x86及x64 windows系统下的inline hook实现部分. 32位inline hook 对于系统API的hook,windows 系统为了达成hotpatch的目的,每个API函数的最前5个字节均为: 8bff   move edi,edi 55     push ebp 8bec  mov ebp,esp 其中move edi,edi这条指令是为了专门用于hotpatch而插入的,微软通过将这条指令跳转到一个short jmp,然后一个long jm…
Inline Hook NtQueryDirectoryFile 首先声明这个是菜鸟—我的学习日记,不是什么高深文章,高手们慎看. 都总是发一些已经过时的文章真不好意思,几个月以来沉迷于游戏也是时候反省了,我真的几个月没写博客了,怎么办~怎么办~我要补充自己的博客,但真想不到写什么了,唯有将自己以前写的一些Demo写上来. 当初我其实是不会这样做的,看了一篇关于"怎么inline hook NtDeviceIoControlFile隐藏端口"的文章后有启发,于是自己试着用在隐藏文件这个…
最近终于沉下心来对着书把hook跟注入方面的代码敲了一遍,打算写几个博客把它们记录下来. 第一次介绍一下我感觉难度最大的inline hook,实现代码参考了腾讯GAD的游戏安全入门. inline hook的大致流程如下: 首先将目标指令替换为跳转指令,跳转地址为一段我们自己编写的汇编代码,这段汇编代码先是执行用户指定的代码,如修改寄存器的值,然后执行被替换掉的原指令2,最后再跳转回原指令3处,恢复程序的正常运行. 为了避开注入过程,我们通过hook自己进程加载的动态连接库进行演示. 1.实现…
x64内核HOOK技术之拦截进程.拦截线程.拦截模块 一丶为什么讲解HOOK技术. 在32系统下, 例如我们要HOOK SSDT表,那么直接讲CR0的内存保护属性去掉. 直接讲表的地址修改即可. 但是在64位系统下,不可以这样操作了. 第一是因为 SSDT表加密了. 第二是 SSDT表你就算解密了. 那么你的API的地址也会很远. SSDT表放不下4G以外的地址. 所以也不能放. 而现在.试想一下, 杀毒软件也要在内核中做点手脚. 如果不能HOOK了,它们该怎么发展那? 所以到了win7 (64…
如写的不好请见谅,本人水平有限. 个人简历及水平:. http://www.cnblogs.com/hackdragon/p/3662599.html 正常情况: 接到一个项目实现对屏幕输出内容的获取,于是OD载入,发现是XX加壳保护,正常情况写代码采用jmp跳转到自己的代码处 采用前人使用的CHookApi_Jmp类 源码在http://www.cnblogs.com/showna/articles/850279.html.(我自己用的时候把CHookApi_Jmp修改成了CHookApi)当…
@author: dlive IAT Hook时如果要钩取的API不在IAT中(LoadLibrary后调用),则无法使用该技术.而Inline Hook不存在这个限制. 0x01 Inline Hook原理 原理比较简单,将API代码的前5个字节修改为JMP xxxxxx 指令来钩取API.调用执行被钩取的API时,JMP XXXXXX指令被执行,转而跳转至Hook函数. 0x02 相关API 用户模式下检测进程的相关API通常分为如下两类: CreateToolhelp32Snapshot(…