inlineHook
来源:互联网 发布:淘宝多少访客刷一单 编辑:程序博客网 时间:2024/06/17 14:00
简单来说,就是修改函数体实现部分。
但是如何来修改,这样修改的意义又是什么?
作用就是:用来保存被我们替换掉的原始函数的前五个字节,实现原始函数的功能。
但是如何来修改,这样修改的意义又是什么?
我今天一直在寻找一个比较好的方式来说明白如何进行InlineHook,画了几次图,试了好几个工具,最后完成了一个流程,希望大家能看明白。
图片:
说明:
左上的图片
这个结构是我们在代码中写入的一个函数
代码如下:
- __declspec(naked) NTSTATUS NtQueryDirectoryFileHookZone(,...)
- {
- _asm
- {
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- _emit 0x90
- jmp [NtQueryDirectoryFileRet]
- }
- }
作用就是:用来保存被我们替换掉的原始函数的前五个字节,实现原始函数的功能。
左下的图片:
绿色部分是要被替换为jmp指令的5个字节,将它们拷贝到左上图片中。
中上的图片:
这是被修改完成的函数,最后的jmp指令,实现跳转回原函数继续执行。
中下的图片:
被修改完成的原始函数的样子,前5个字节被我们替换为了jmp。
右边的图片:
这是我们的Hook函数,在这里面我们设置好相应的参数,然后调用③,获取相应信息,
对信息进行修改,达到了Hook的目的,如用来隐藏文件。
流程:
调用NtQueryDirectoryFile---->jmp到我们自己的Hook函数---->设置参数,调用③--->调用①阅读全文
0 0
- inlineHook
- inlinehook NtCreateFile
- 学习InlineHOOK
- InlineHook 通用
- InlineHook是什么?
- 驱动学习----RootKits---InlineHook
- InlineHook与UnHook
- ring3 & ring0 通用InlineHook代码
- 内核层 inlinehook 隐藏进程
- 2017/4/22inlinehook学习
- 内核层 inlinehook 隐藏进程
- 天书上的练习-inlinehook IoCallDriver函数
- 内核所有模块导出函数inlinehook检测
- 基于VC++开发InlineHook网络数据发送接收函数
- 基于VC++开发InlineHook网络数据发送接收函数
- 基于VC++开发InlineHook网络数据发送接收函数
- SSDT的例子1-inlineHook的jmp验证
- Win64 驱动内核编程-23.Ring0 InLineHook 和UnHook
- 取汉字拼音首字母--生成不重复ID(汉字--拼音--首字母)
- Unity_面向对象设计原则_026
- [日常训练] 小Y包汤圆
- MySQL的sql_mode 模式修改 my.cnf
- python文件的基础及文件读入合并操作使用实例
- inlineHook
- display:inline-block的间隙问题和解决办法
- Unity3D导出WebGL与ASP.NET交互
- react入门案例
- select chosen 禁用下拉框某一个option
- [PAT乙级]1041. 考试座位号(15)
- 顺序栈的表示与实现
- 整数在内存中的存储
- ntpconf