首页
论坛
课程
招聘
原创]MoonU安全学习笔记之内联Hook
2018-10-29 13:41 4013

原创]MoonU安全学习笔记之内联Hook

2018-10-29 13:41
4013

一、笔记说

最近在学习Windows PE文件、Dll、Hook相关知识,Dll和Hook是比较有意思的学习内容,为了熟练掌握和使用Hook技术,写了点小程序验证和记录下Hook技术的思路和使用方法,和大家交流学习,不妥之处请批评指正。

Dll(动态链接库)是Windows平台提供的一种模块共享和重用机制,它本身不能独立执行,但可以被加载到其他进程中间执行。Dll的初始动力源自于程序员对于其他第三方应用程序进行功能扩展的愿望,或应用程序实现复杂操作的基础支撑技术,本次实例笔记采用远程线程注入方式实现。

Hook(钩子)可以理解为为了截获Windows系统往来信息在指令执行流中间设置岗哨的方法,在Window下Hook有两种含义:1、系统提供的消息Hook机制;2、自定义的Hook编程技巧(包括InlineHook和IATHook)。本次实例笔记采用自定义Hook中的InlineHook实现。

二、平台环境

系统:Window10  win32任务管理器

编译环境:Vs2013

程序:MFC小程序U-Defense

三、实例笔记

本次Hook目标程序->电脑任务管理器,欲实现目的:任务管理器无法关闭MFC小程序U-Defense。

Hook思路:1.Hook谁?2.怎么Hook?3.代码实现。

3.2.1 Hook谁分析:本次实验目的为要使任务管理器不能关闭MFC小程序,则要考虑任务管理器关闭进程调用哪个API函数:一般来说进程主要有四种方式中止,①主线程的入口点函数返回;②进程中的一个线程调用ExitProcess函数;③另一个进程中的线程调用TerminateProcess函数;④进程中的所有线程都“自然死亡”(这种情况几乎从来不会发生《参见Windows核心编程第五版》),很显然任务管理器要关闭我们的程序必须要用第三种方式,所以我们也就知道要Hook谁了。

3.2.2 怎么Hook?这也是本次学习笔记重点要梳理的学习内容,方法就是远程线程注入 + Inline(内联Hook)。参阅以下流程图:

图1.Hook流程图

 

3.2.3 有了以上分析思路就可以写代码了。

第一部分远程注入代码实现:

 

第二部分目标API函数编写(自定义的API函数不是API函数重写)

 

第三部分Hook初始化函数

此部分注意点比较多:一是传参的方法,一般来说会使用文件映射的方法传参,对windows知识掌握比较通透的人来说方法会比较多,比如我的朋友万敏发明的信号量锁机制传参方式;二是计算地址偏移的算法为:目标地址-JMP地址-5(OpCode指令长度);三是为新的OpCode赋值,新OpCode第一个BYTE为0xE9,后四个BYTE为地址偏移。四是有些API函数采用这种直接拿函数地址计算函数偏移会出现错误,因为函数地址可能会指向一个跳转表,解决此类问题的方法为通过GetModuleHandle获取API函数所在模块的句柄,再通过GetProcAddress来获取API函数地址(JMP地址)。如下所示:

 

第三部分OnHook、UnHook函数实现

 

3.2.4 实例演示:

1.先打开任务管理器

 

注入任务管理器

 

3.在任务管理器中结束进程

 

你会发现现在任务管理器已经无法关闭你的程序了。

四、学习总结

Hook是程序设计中最为灵活多变的技巧之一,通过这个小程序的案例学习能够熟悉内联Hook、远程注入的原理,主要涉及的知识点有:1、远程注入技术;2、Inline(内联Hook技术);3、内存管理文件映射知识;4、进程线程知识;参考书目有《Windows核心编程(第五版)》《加密解密(第四版)》《逆向工程核心原理》,如有不妥之处,请批评指正。


[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

最后于 2018-10-29 18:07 被MoonU编辑 ,原因: 图片未显示完整
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 2292
活跃值: 活跃值 (106)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
Jabez 活跃值 1 2018-10-29 17:49
2
0
写的很用心
雪    币: 15496
活跃值: 活跃值 (20925)
能力值: (RANK:75 )
在线值:
发帖
回帖
粉丝
Editor 活跃值 2018-10-30 09:37
3
0
雪    币: 145
活跃值: 活跃值 (12)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
MoonU 活跃值 2018-10-30 14:58
4
0
谢谢版主
游客
登录 | 注册 方可回帖
返回