欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]小议“非法模块”与“第三方检测”的那些事儿(2)

[原创]小议“非法模块”与“第三方检测”的那些事儿(2)

铸矛之人,必精造盾之术。
造盾之人,必解铸矛之术。
上一贴中简单说了一下非法模块的初级阶段的检测,其实还有更高级的检测模式,就是加载检测。
(1)中的所有的检测手段都可以通过重加载模块+抹掉PE+关闭模块相关句柄来实现回避
(重加载的代码,Winker同学发过了,就不重复了。)
但这种方法对于本帖所说加载检测通常是通过Hook 加载用API来实现,
比如ntdll!LdrLoadDll这样的API,
对于这种加载检测,通常对抗手段是无效的(隐藏无效,重加载无效),
只能依靠白名单或者监控开启时间来绕过。
如通过较早的注入手段注入可以绕过大部分加载监控方式的检测(比如 导入表注入,OEP注入,TLS注入...);
或者利用白名单,如SPI过滤或者输入法,
或者利用无法被监控的方式,如对knowndlls的section(lpk.dll的section)进行污染的方式注入。
同理对抗上也有通过驱动级ImageLoadNotifyRoutine来进行检控的(可以对抗早期OEP注入,TLS注入,导入表注入);
对于白名单上的注入,可以通过加强特征扫描来处理,或者云扫描;
对于Section污染,可以采用对KnowDlls的Section对应DLL进行HASH效验来检测。
至于更深层次的对抗,欢迎使用IGS的培训服务。
(2)本篇主要内容:初级第三方检测。


最常见是窗体类名的检测,如所有对CE的检测...

应用的API:FindWindowEx/FindWindow/GetWindow/EnumWindow

简单有效的对抗就是动态类名技术,

每次启动的窗体类名都不一样就可以了。

目前检测没有更好的方法检测窗体的说,不过据说可以检测具体窗体的Proc的里的代码来实现。

接着是进程枚举的检测,

通常检测使用的手法无非传统枚举(也有通过Task枚举的哦,亲~)

对抗方法核心层次进行断链(ActiveProcessLinks和SessionProcessLinks都断开)就可以了,

检测的升级则是CidHandleTable检测,

深入对抗则是抹掉CidHandleTable...

至于更深入的对抗其实际作用不大,不过JobList也是个最近流行的检测点。

当然如果真心说到进程枚举,其实直接通过核心层关键钩子来统计更简单更稳妥。

枚举完事后,都是查特征了,基本上就是内存,文件老一套的模式,

对于CE这类特殊的可能使用窗体布局或者窗口Proc的代码特征等,

对抗也基本老一套的作战,改改Object里的FileName什么的就好了,

或者干脆点拦截一下IoCreateFile搞定文件,

内存动态加密一下就好~

至于布局/Proc的特征,CE么,还是自己改改代码的为妙。



具体想要我来议论的内容,可以回帖进行点名,
本帖只谈论非法和第三方,不谈论其他的,
但是此文中不会谈到具体的游戏或者具体的某个软件。
只谈技术或者代码等抽象层次的问题,所以不要问我具体某个游戏的有关事情。
如果有需要可以去IGS购买相关服务,IGS网站
http://www.tigso.com/

另外我们正在大力展开真正的游戏安全培训,绝对独家内部的培训内容,不会让任何人失望哦~
欢迎访问培训有关的宣传站点
http://www.antigameprotect.com/forum.php
第一帖的位置:
http://bbs.pediy.com/showthread.php?t=169970

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功