Inline Hook NtQueryDirectoryFile】的更多相关文章

Inline Hook NtQueryDirectoryFile 首先声明这个是菜鸟—我的学习日记,不是什么高深文章,高手们慎看. 都总是发一些已经过时的文章真不好意思,几个月以来沉迷于游戏也是时候反省了,我真的几个月没写博客了,怎么办~怎么办~我要补充自己的博客,但真想不到写什么了,唯有将自己以前写的一些Demo写上来. 当初我其实是不会这样做的,看了一篇关于"怎么inline hook NtDeviceIoControlFile隐藏端口"的文章后有启发,于是自己试着用在隐藏文件这个…
对付ring0 inline hook的基本思路是这样的,自己写一个替换的内核函数,以NtOpenProcess为例,就是MyNtOpenProcess.然后修改SSDT表,让系统服务进入自己的函数MyNtOpenProcess.而MyNtOpenProcess要做的事就是,实现NtOpenProcess前10字节指令,然后再JMP到原来的NtOpenProcess的十字节后.这样NtOpenProcess函数头写的JMP都失效了,在ring3直接调用OpenProcess再也毫无影响.…
最近终于沉下心来对着书把hook跟注入方面的代码敲了一遍,打算写几个博客把它们记录下来. 第一次介绍一下我感觉难度最大的inline hook,实现代码参考了腾讯GAD的游戏安全入门. inline hook的大致流程如下: 首先将目标指令替换为跳转指令,跳转地址为一段我们自己编写的汇编代码,这段汇编代码先是执行用户指定的代码,如修改寄存器的值,然后执行被替换掉的原指令2,最后再跳转回原指令3处,恢复程序的正常运行. 为了避开注入过程,我们通过hook自己进程加载的动态连接库进行演示. 1.实现…
默默的发现在网上找到的hook  NtQueryDirectoryFile...... hook  NtQueryDirectoryFile是为了实现文件隐藏,然后就发现在网上发现的代码版本似乎同一个版本的衍生版本.都只考虑了一种情况,就是 if(FileInformationClass==FileBothDirectoryInformation)这一种情况下,众所周知,FileInformationClass还有很多其他取值,为啥只对这一种情况讨论呢.…
一.NtQueryDirectoryFile函数功能(NT系列函数) NtQueryDirectoryFile函数:在一个给定的文件句柄,该函数返回该文件句柄指定目录下的不同文件的各种信息. 根据传入的文件句柄参数fileHandle,返回句柄所表示的目录中的不同文件的信息. NTSTATUS ZwQueryDirectoryFile( _In_      HANDLE FileHandle, _In_opt_  HANDLE Event, _In_opt_  PIO_APC_ROUTINE A…
如写的不好请见谅,本人水平有限. 个人简历及水平:. http://www.cnblogs.com/hackdragon/p/3662599.html 正常情况: 接到一个项目实现对屏幕输出内容的获取,于是OD载入,发现是XX加壳保护,正常情况写代码采用jmp跳转到自己的代码处 采用前人使用的CHookApi_Jmp类 源码在http://www.cnblogs.com/showna/articles/850279.html.(我自己用的时候把CHookApi_Jmp修改成了CHookApi)当…
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…
@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(…
这里的简单驱动保护就是简单的HOOK掉内核API的现象 找到被HOOK的函数的当前地址在此地址处先修改页面保护属性然后写入5个字节.5个字节就是一个简单的JMP指令.这里说一下JMP指令,如下: 001 JMP 002 这样我们就会跳到 001 (在此地址写入JMP指令)+ 002(我们要写入的JMP操作数) +5(jmp指令的字节数)这里. 就是说如果你要跳回NtOpenProcess的原地址,就应该向被HOOK后的地址处写入这样的指令   JMP ( NtOpenProcess的原地址-被H…
概念 inline hook是一种通过修改机器码的方式来实现hook的技术. 原理 对于正常执行的程序,它的函数调用流程大概是这样的: 0x1000地址的call指令执行后跳转到0x3000地址处执行,执行完毕后再返回执行call指令的下一条指令. 我们在hook的时候,可能会读取或者修改call指令执行之前所压入栈的内容.那么,我们可以将call指令替换成jmp指令,jmp到我们自己编写的函数,在函数里call原来的函数,函数结束后再jmp回到原先call指令的下一条指令.如图: 通过修改机器…