你还在用CreateFileA检测Lpk.dll吗?(检测劫持dll技术汇总贴)
本帖最后由 ps520 于 2010-7-31 11:42 编辑Lpk检测手段汇总:你还在用CreateFileA检测Lpk吗?
如果你的Anti不像海风月影的Game那样干脆直接:自己构建PE头,挂接Load函数并强制转向System32目录,如果你还在因被人Hook CreateFileA轻松跳过检测而心烦不已,你是否考虑应该换一种检测手段来达到你反劫持的目的?对了!今天这篇文章就是教你如何用最普通的Api制造出劫持Dll检测手段的千变万化!
下文均使用Lpk.dll作为所有劫持DLL家族的代名词。
本篇主要分为了内存检测和硬盘检测两个部分,使用的主要Api均会附在本文后。
一:内存篇
内存检测技术的核心就是取模块入口基址,然后与正常的进行比对。而这个方法能够衍生出几个花样,需要3个基本Api。
GetModuleHandleA
GetModuleFileNameA
GetSystemDirectoryA
原理阐释:利用GetMoudleHandle和Windows的加载特性来检测
GetMoudleHandle在使用默认DLL名称"lpk.dll"时,只能取到最先被加载的dll Handle,所以我们利用这个特性来进行检测。
花样一:比较目录
1.GetMoudleHandleA获取lpk.dll的基址
2.GetMoudleFileNAmeA获取lpk.dll所在路径(path)
3.GetSystemDirectoryA取得System32目录
比对是否为同一目录
花样二:强制比对目录下lpk
1.获取你的程序所在目录,在文本后加上"\lpk.dll"
2.GetMoudleHandleA获取这个路径的基址
3.与0进行比对,如果为0则目录下不存在劫持
花样三:强制比对系统lpk
1.GetSystemDirectoryA获取系统system32所在目录
2.文本后加上"\lpk.dll"
3.GetMoudleHandle取该目录handle
4.GetMoudleHandle取默认"lpk.dll"这个默认名
5.比对是否相同,不同则存在劫持
基本上内存校验也就这点花样,另外你可以枚举Dll,看是否存在2个lpk.dll,这也是一个小手段~
二:硬盘篇
说到硬盘篇,我只能用一个词来形容"千变万化"。甚至随便一个带File字样的API都可能成为你的检测利器!而硬盘篇主要分为"直接了当"和"曲线救国"两个部分。
一:直接了当型
直接了当型的基础是先获得程序运行的目录,在得到的文本后加"\lpk.dll"作为路径
1.OpenFile,打开这个路径下的文件,返回0则不存在劫持
2.CreateFile,同上
3.CreateFileA,最常见的检测Api,听说ZProtect采用该技术。同上
通过以上API我们发现,直接了当型都是直接对程序目录下的lpk.dll进行打开操作。
二:曲线救国型
曲线救国型,意思就是通过其他非主流Api进行检测操作。这也是最变幻莫测的。但是我自己的经验,这个在所有检测手段中最少被运用。(不论国内国外的著名保护壳)。在这里,我们将介绍所有不涉及直接了当型的Api,忽略了如ReadFile这类需要FileHandle的技术。
1.MoveFile,我都不好意思介绍这里面有多少个Api变形式了。碰上了基本属于杯具型。比如MoveFileA\W以及MoveFileExA\W。检测方式是将目录下lpk.dll移动到lpk.dll.check(随便命了个名,自己DIY),复制成功则说明存在lpk劫持!
2.CopyFile,这玩意变形也挺多。跟MoveFile是一个意思,复制成功则存在。
3.WriteFile,写出失败则存在劫持。
*这里只是举3个API作为例子,让各位知道有JJ会被切,就算你擦了PEB没了JJ,照样可以切!这里需要Hook的变形函数就数不过来了,实在恐怖。无法形容写代码的麻烦程度。
另外介绍2种直接屏蔽掉劫持技术的方法
注册表型
修改注册表,强制系统加载优先顺序为系统目录优先
绿坝娘型
将自己的程序安装到System32下,有本事劫持劫持?
霸娘无敌,很早以前就知道要反Lpk就要到最底层下!*(_她貌似在System下?!)
总结了这么多,希望对各位有点帮助。另外希望壳子上面可以看到这些变态的技术被应用上,不要嫌弃噢~
By ps520 终于打完了!
鄙视下刚才打字都死机了 本帖最后由 neworld 于 2010-7-30 17:47 编辑
最近好流行......支持下工作,学习知识. 终于打完了!
鄙视下刚才打字都死机了
ps520 发表于 2010-7-30 12:33 http://www.unpack.cn/images/common/back.gif
我也试过这样的悲惨遭遇。。。打了很长的东西,真的没有耐心再打一次~
文章不错。 顶ps520小盆友 收益匪浅,实属好文,顶礼膜拜来不及回复
实在抱歉 天太热了,偶也来支持下。 我当时就吐血了…… 为什么老在lpk上下功夫 usp10 等等系统DLL不要太多
膜拜下水王 顶礼膜拜 为什么老在lpk上下功夫 usp10 等等系统DLL不要太多
膜拜下水王 顶礼膜拜
nextnb 发表于 2010-7-30 13:07 http://www.unpack.cn/images/common/back.gif
代名词而已 本帖最后由 bbqbbqtt 于 2010-7-30 14:00 编辑
你狠啊,最近才学到的技术你就这样给我扼杀了。~!:curse:
可否把System32替换:lol 你太牛了,学习了。 来支持一下。呵呵。 学习下。
感谢分享。 支持直接到system32下替换 支持直接到system32下替换
babaloveyou 发表于 2010-7-30 14:21 http://www.unpack.cn/images/common/back.gif
用本文方法的前提是用户开启360