发布于:2016-3-1 17:00 | 245141次阅读 作者: 管理员 | 原作者: TP | 来自: 原创
功能描述: 双开 行为分析: 外挂有注入模块,DNFDouble.dll,开启第二个客户端的时候第一个会临时隐藏,第二个开启完成后就弹出。 实现原理: 1、分析摘除游戏互斥体,步奏如下: (1)获取ntdll中几个函数: (代码位于sub_10033F10函数中dnfdouble.dll ver_3.0.6.10) 获取函数ZwDuplicateObject、ZwQueryObject、ZwAllocateVirtualMemory、ZwQuerySystemInformation、ZwFreeVirtualMemory。 (2)枚举内核对象,判断如果是Mutant,判断名字是否是dbefeuate_ccen_khxfor_lcar_blr,如果是则调用ZwDuplicateObject关闭内核对象,步骤如下: (代码位于sub_10034160函数中dnfdouble.dll ver_3.0.6.10) A)调用ZwQuerySystemInformation获取句柄信息 复制句柄 OpenProcess 获取Object信息 B)调用ZwQueryObject获取对象类型,后面判断是否是Mutant类型 C)获取Mutant名字,并调用100340b0函数判断是否是游戏的互斥,是则关闭 函数100340b0就是对比这个名字是否与dbefeuate_ccen_khxfor_lcar_blr一致 D)如果是这个名字,就关闭内核对象 总体就是枚举内核对象,并判断类型,判断名字符合后关闭内核对象。 2、分析隐藏窗口: 外挂就是把DNF窗口的父窗口设置为DNFBoxClient里面的一个隐藏的button,并将窗口隐藏,等到第二个窗口开启后,并同样对第一步操作后恢复 如,DNF被嫁接到一个隐藏的button上,看button的进程id是15e0(5600) 时机上就是dnfboxclient.exe 分析结果: 盒子实现双开是核心代码如上面分析,核心部分就是通过枚举内核对象,并判断对象类型,是mutant则获取名字,判断如果是游戏的,就关闭内核对象。 |
最新评论
查看全部评论(1)
发表评论