近日在做反作弊系统时候搜集了一些能过目前某主流平台的辅助.大部分辅助通过VMP等虚拟化强壳加密并且进行了VM化,不方便分析,所以这里挑了一个强度不是很高的样本进行分析
样本被VMP加密,所幸是较老版本vmp而且没有VM化关键代码,通过脱壳+修复后ida可以正常打开.
字符串分析:
通过字符串可以看到本程序疑似使用imgui + d3d 新建窗口绘图 并且使用了易语言模块 super-ec
流程分析:
启动后执行到CheatThread函数 新建了3个线程,分别对应 得到键盘输入创建窗口/刷新内存数据
通过 GetKeyState 去监听键盘/鼠标状态:
创建窗口函数会创建一个类名为"tooltips_class32"伪装成 ToolTip 窗口
通过setwindowspos设置为置顶窗口
完成后 while循环执行玩家方框绘制
function_EspMain 即是绘制主函数(这里省略掉另外一个线程通过ReadProcessMemory读取游戏人物坐标并且进行W2S转换等行为)
进入function_EspMain主函数:
其中 function_drawText主要是作者用于显示文本:
可以看到 作者使用ExtTextOutA这个GDI函数进行文本绘图
drawedge函数绘制矩形方框.
另外样本通过单独的分析某平台修改版的csgo内存数据,读取对应的人物骨骼坐标用于自瞄.相关代码不再展示
总结:
样本为外部辅助,作者似乎原先想使用D3D+imgui方式绘图,却不知道为什么放弃了改用gdi方式绘图,这是一个很典型的外部辅助.大部分"透视"为了绕过游戏内屏幕截图所以不直接hook游戏d3d设备.而使用外部方框.
解决方案:
1.驱动设置ObRegisterCallback限制openprocess句柄
2.上传并且报告置顶窗口.
样本被VMP加密,所幸是较老版本vmp而且没有VM化关键代码,通过脱壳+修复后ida可以正常打开.
字符串分析:
通过字符串可以看到本程序疑似使用imgui + d3d 新建窗口绘图 并且使用了易语言模块 super-ec
流程分析:
启动后执行到CheatThread函数 新建了3个线程,分别对应 得到键盘输入创建窗口/刷新内存数据
通过 GetKeyState 去监听键盘/鼠标状态:
创建窗口函数会创建一个类名为"tooltips_class32"伪装成 ToolTip 窗口
通过setwindowspos设置为置顶窗口
完成后 while循环执行玩家方框绘制
function_EspMain 即是绘制主函数(这里省略掉另外一个线程通过ReadProcessMemory读取游戏人物坐标并且进行W2S转换等行为)
进入function_EspMain主函数:
其中 function_drawText主要是作者用于显示文本:
可以看到 作者使用ExtTextOutA这个GDI函数进行文本绘图
drawedge函数绘制矩形方框.
另外样本通过单独的分析某平台修改版的csgo内存数据,读取对应的人物骨骼坐标用于自瞄.相关代码不再展示
总结:
样本为外部辅助,作者似乎原先想使用D3D+imgui方式绘图,却不知道为什么放弃了改用gdi方式绘图,这是一个很典型的外部辅助.大部分"透视"为了绕过游戏内屏幕截图所以不直接hook游戏d3d设备.而使用外部方框.
解决方案:
1.驱动设置ObRegisterCallback限制openprocess句柄
2.上传并且报告置顶窗口.