关于Inline hook check的一些想法与问题

原创 2012年05月11日 09:42:23
          这东西弄了近一周才有点眉目,网络上的资料不是很多。爆搜百度google好久还是发现有一点点资料的:
1.rootkits那本书讲了一点,不过那个太挫了,检测了跟没检测一样。就是搜e9 e8判断跳转模块。

2.sysnap的blog里有一点~~最初给我了不少feel,感谢之~~

在我完成了大部分之后发现了 3.sudami的毕设~~~  里面那个流程图实在很清楚,弥补了不少我没想到的问题~~感谢之~~

后来逆了几个ark,各种ark处理方式不太一样,最悲剧的是很多ark都是把code传到 r3去处理,实在懒得逆向exe(od各种下断至今没玩爽...anti dbg也很烂)

本来想看看国外的网页有没有讨论的或者src,惊艳的很少,于是发现我E文也很挫,构造的关键词不怎么样。

总的来说我就是个“挫”字.....

不过经过一周的愣神和坚持不懈还是弄出点东西来,废话结束 开始记录

1.现代ark的方法想找到模块地址是不现实的~随便加点花指令就看不出来了,检测功能的主要精力应该放在对比磁盘和内存中代码不同。至于模块的检查,检查简单的 jmp call push ret之类的就好,当然有时间可以加点n段跳的检查。。当然遇见个变态来个十段跳。。太xx了

2.内核文件的对照,可以自己NtReadFile写入NonePagedPool,还见过网上某大牛写的Ring 0 PELoader,把大牛名字忘记了,真是抱歉。或者直接MmLoadSystemImage,极其方便....当然要记得重定位,PAGE段重定位的时候记得MmLockPagableCodeSection,不然会蓝死....

3.函数什么时候结束?这个很难弄 有ret未必是函数尾,0xcc大多是情况下可以表示函数结束,但也不是绝对,只好扫面函数头起一段足够的长度,遇到反汇编引擎失败的情况返回

4.检测出Inline也未必是恶意代码,不能随便恢复,微软自己有时也给自己打补丁,比如KeFindConfigurationEntry,系统跑起来之后会把开头变成call。INIT section部分会面目全非,所以我只检测.text和PAGE....

5.从EAT和SDDT的函数出发进行递归可以检测未导出函数,但是要避免重复,sudami的论文里写是用HashTable来存放....想半天也没想出怎么构造合理的哈希函数,处理冲突有很复杂。没在内核用过AVL,现在只是简单的用线性表存储,感觉效率不是很差,这块的算法有待改进

就这么多。。刚刚测试了一下我的code,感觉效果还可以。。xuetr的Inline check似乎会有重复检测到SSDT hook的问题...这跟他的检测方法有关...我逆向太挫...没看出个所以然来...

inline hook的原理及实现

网上没有找到多少关于inline hook的文章,感觉这方面资料不是很完整,所以决定自己写一份存档,重点讲述inline hook的实现。 inline hook的核心思想是:通过替换目标函数头部指令...
  • Qiu233
  • Qiu233
  • 2016年08月06日 09:35
  • 1700

IAT HOOK、EAT HOOK和Inline Hook

导入表hook原理是修改导入表中某函数的地址到自己的补丁函数,具体步骤如下: 1. 通过GetProcAddress获取目标函数地址 2. 在程序内存中找到所在dll的导入表 3. 查找目标函数...
  • CoderAldrich
  • CoderAldrich
  • 2017年01月12日 13:41
  • 1478

中转inline hook,不需要恢复首字节的hook

注:我实验的环境:win7 x64 经验证XP会有稍微区别,主要是我本次实验HOOK的API, 从XP到WIN7微软有了些许改变。 ----------------------------------...
  • friendan
  • friendan
  • 2015年02月23日 23:38
  • 3745

某同学的inline hook检测程序简单逆向分析

 测试了下,主机上完全不行,虚拟机上运行成功过一次,然后运行了其他的ARK就BSOD的了。没有具体的分析dump文件;检测inline hook的结果不是很完善,且有一部分的错误. 简单说说我对程序的...
  • iiprogram
  • iiprogram
  • 2008年10月16日 17:37
  • 1552

高级Linux Kernel Inline Hook技术分析与实现

[目录] 1. 简述 2. 更改offset实现跳转 3. 补充 4. 如何查杀 5. 实例 一、简述 目前流行和成熟的kernel inline hook技术就是修改内核函数的op...
  • Tomstrong_369
  • Tomstrong_369
  • 2016年05月13日 14:39
  • 648

android inline hook 学习笔记

hook种类 GOT表hook,通过更改GOT表offset来实现hook inline hook,即内部跳转hook,替换函数开始处的地址为跳转指令,跳转到hook函数比较而言, 1.GOT表对于...
  • qq_29343201
  • qq_29343201
  • 2016年11月13日 19:56
  • 866

64位系统 inline api hook之我见

      说起Api hook朋友们都不陌生,说白了也就是运用WINDOWS系统钩子,捕获程序对系统API的调用,从面改变API默认的处理方式,以达到某种特殊的目的。而inline api hook...
  • dreamcodewkst
  • dreamcodewkst
  • 2010年11月12日 12:59
  • 1747

关于物联网,人工智能的想法一

关于物联网,人工智能的想法
  • DONGWEIJHZHANGLI
  • DONGWEIJHZHANGLI
  • 2017年04月30日 20:35
  • 287

HOOK钩子技术1 inline HOOK内联钩子

内联钩子改变函数的第一条指令,通过跳板跳到伪造的函数上。 函数在使用过程中有时候要执行本身已经挂钩的函数,这样就需要先解钩。...
  • wang471003247
  • wang471003247
  • 2015年05月02日 20:27
  • 1890

内存注入之IAT Hook和Inline Hook综合程序

内存注入综合程序 1) 进程列表获取 2) IAT表项获取 3) IAT Hook 4) Inline Hook
  • enjoy5512
  • enjoy5512
  • 2016年06月02日 21:38
  • 2034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Inline hook check的一些想法与问题
举报原因:
原因补充:

(最多只允许输入30个字)