吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 7654|回复: 32

[经验资料] [科普向]hook技术简单介绍

  [复制链接]
w59541511 发表于 2016-3-17 09:31 | 显示全部楼层 |阅读模式

首先
1、  这只是科普向,会介绍相关Hook技术及原理,但是不会给源码源码请自行百度
2、请至少有一点Windows编程经验,知道系统API是什么...以免看科普内容给您带来不适
3、这里结合了一些大神的个人了解有可能有错误。(见谅)
首先要说下CPU权限...Intel把自家CPU指令分为四个等级,Ring0,Ring1,Ring2,Ring3,Windows操作系统只用了Ring0和Ring3两个权限。简称R0和R3好了-。-

R0权限只能让系统用,比较危险。R3权限为应用层用。大部分非驱动程序都是R3应用层的...

Hook也分为R0和R3两个层次。

R3应用层Hook又分为两种,一种是 API Hook,一种是系统钩子。

R0内核层Hook我只介绍一种,SSDT Hook
系统钩子:
系统钩子实质上是系统提供的一个API函数,叫做 SetWindowsHookEx(),可以拦截指定的13种消息类型
全局钩子包含这样13种消息类型:具体参考百度百科:http://baike.baidu.com/link?url=5-gmumJKhgDSvAZiYb018vhbevJ-kcfzkHxRPG2k8dClvJaFy473iL0FiixCA0waNeD16sosZQlWoMp9irvYoq
这个是系统提供的功能,百度百科也有详细的原理介绍。我也不太熟就不多说了...实在是用的太少

系统钩子应用:键盘鼠标监控/禁用等等
API Hook:
API Hook可以说是很简单很暴力的Hook方法。
要知道,程序调用一个API实质上调用的是那个API函数的入口地址。
也就是说,只要把API函数入口地址修改成我们自己的子程序的入口地址,那么程序就会调用API的时候调用到我们自己的子程序,从而实现Hook的效果
那么我们应该是这样做的:
寻找需要Hook的函数地址-修改地址改成自己的子程序地址-还原为原来的函数地址
举个例子,比如MessageBoxA()函数,它的地址是12345
我写了个子程序叫做MyMessageBoxA(),它的地址是56789
我们只要将MessageboxA()在内存里把存放函数地址的12345改成56789,
那么别人调用MessageBoxA()的时候就会调用到地址56789,也就是我们自己写的MyMessageBoxA()
至于我们是在自己的MyMessageBoxA()里怎么操作就随意了
是放行(Call调用原地址)
还是拦截(直接无视调用请求)
还是修改(修改参数后Call调用原地址)都可以

然而这时候我们会面临一个无法避免的问题:我们自己写的子程序在自己的进程空间内,和目标进程完全不在一起。事实上windows似乎无法跨进程访问
那么我们只能让子程序和目标进程在同一个进程空间内运行...这个就需要另外一项技术:dll注入
所以我们通常能看到封包助手,软件多开器之类的都会有个DLL...就是为了注入后Hook用的...
简单的说下API Hook的应用
封包拦截。hook send函数,这样发送封包(调用send函数)之前会先调用自己的函数,就可以获取甚至修改封包内容了
软件多开。已知道软件可以通过创建互斥体(一个api函数)来限制多开...也就是说我们只要Hook掉那个api
SSDT Hook:
所谓R0级的Root,其实还有种称呼:内核钩子
是杀毒软件广泛采用的一项技术
这里要介绍下SSDT。
SSDT(System Services Descriptor Table),系统服务描述符表。这个表就是一个把ring3Win32 APIring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。

知道这句话里包含着什么?我们从R3层调用的API函数实质上要通过查询SSDT获取R0层的真正地址...

这意味着如果我们可以把SSDT里的地址修改掉,就可以实现全局API Hook的效果。
不过权限问题← ←R3无驱进R0有多困难我就不吐槽了...你们可以自己试试...
驱动(Sys)加载后本身就是R0权限...所以R0层的Hook基本都会要写驱动...
具体实现方法不说了(到了这个层次不会汇编真的没法玩,一般理工类都会有汇编课选修,我选了,然而并没有学好。)
最后
说下SSDT Hook的具体应用吧
已知关闭进程需要用函数TerminateProcess()。
调用TerminateProcess之前需要调用OpenProcess()获取进程句柄。
那么我们如果Hook掉OpenProcess函数,检测到如果是某个指定进程就不调用OpenProcess而是去返回获取句柄失败。那么会怎样呢?
Windows任务管理器尝试关闭进程,会因为OpenProcess在SSDT被Hook,访问到你的子程序。然后你的子程序告诉了任务管理器:打开进程失败
于是任务管理器就会返回一个经典的提示:无法完成操作 拒绝访问。
ed3b4b4a20a44623cad0635d9a22720e0cf3d795[1].png
相信你们在不少杀毒软件都看过这个提示
还有我自己按照百度百科对SSDT表的介绍,可以得知API也分为R3和R0.R3运行的API会通过查询SSDT获得R0的地址并且运行。

点评

大鸿”点评说:
通过SetWindowsHookEx() 可以进行全局注入等.现在很多游戏基本都不检测. 腾讯游戏都可以!  发表于 2016-3-18 18:44

评分

参与人数 20HB +40 THX +15 收起 理由
lies + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
浅酌◇咖啡 + 1
attackmyth + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
24567 + 2
Jawon + 1
Soul1999 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 1
叶落花开 + 2
lg46711811 + 1 + 1 分享精神,是最值得尊敬的!
tuo + 1 + 1 分享精神,是最值得尊敬的!
大鸿 + 5 + 1 分享精神,是最值得尊敬的!
Aniz + 2 + 1 分享精神,是最值得尊敬的!
阿弥上帝 + 1 + 1 吃水不忘打井人,给个评分懂感恩!
特功绍特 + 1 分享精神,是最值得尊敬的!
狂人猩 + 1 + 1 分享精神,是最值得尊敬的!
87192154 + 1 + 1 分享精神,是最值得尊敬的!
Mrsin + 5 + 1 分享精神,是最值得尊敬的!
彡墨鱼灬丶 + 6 + 1 分享精神,是最值得尊敬的!
Shark恒 + 10 + 1 分享精神,是最值得尊敬的!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2016-3-17 09:40 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
_韩小柒′. 发表于 2016-3-17 09:53 | 显示全部楼层

第一次离恒大这么近
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
sunlili001 发表于 2016-3-17 10:02 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
自然卷。 发表于 2016-3-17 10:05 | 显示全部楼层

马克.~
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
狂人猩 发表于 2016-3-17 10:36 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
anyeck 发表于 2016-3-17 12:29 | 显示全部楼层

支持一下,对新手有一个很好的了解
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
2857428593 发表于 2016-3-17 12:36 | 显示全部楼层

很详细实用的说。。。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小不点吃肉 发表于 2016-3-17 13:39 | 显示全部楼层

学习了,留着再温习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
sunlili001 发表于 2016-3-17 16:59 | 显示全部楼层

Shark恒 发表于 2016-3-17 09:40
我相信一定会帮助很多人!

我是无名小草,老大你们才是我膜拜的主角
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表