zoukankan      html  css  js  c++  java
  • 调试通过关闭mutex实现多开的外挂样本

    样本来自一个多开器外挂,启动并开启后可以重复开启游戏客户端。
    分析后确定是通过关闭游戏进程的mutex实现的多开功能,也确定了游戏防止多开使用的是最常见的mutex方法。以下为对样本的分析过程。
     
    运行程序
    首先运行样本
    开启成功
    点击确定,主界面状态变化
     
     
    载入样本
    F9运行到主程序
    查找字符串,在成功提示处下断点后运行,来到提示附近
    往上翻看到启动器和游戏进程名
    查看对应内存,除了游戏相关进程,还有一个Sessions\\1\\BaseNamedObJects\\COS。不知道是什么先放着,后来知道是一种常见防止多开的手段互斥量mutex。
    开启多开后F8跟踪,运行该关键函数后多开生效
    函数内容
    继续跟踪进入缩小起效范围
    在IDA查看该函数
    参数lpWindowName为QQMicroGameBoxTray.exe
    继续运行,findwindowA失败,之后通过获取程序快照的方式,从第一个进程开始比对
    接着遍历快照中的进程,并将进程名与QQMicroGameBox.exe对比
    在栈中观察被对比的进程名参数

    直到出现了目标游戏盒子进程
    和游戏进程比对后再次对比时process32next返回0,从而跳出循环去执行47d54e函数如图
    打开QQMicroGameBox.exe并终止该进程
    这时重复打开游戏登陆器成功,但重复登陆并不会多开,而是之显示旧的登陆界面
    至此得知,函数sub_4cb9b实现了关闭指定进程,接下来样本对QQMicroGameBoxTray.exe执行了一样的查找并关闭操作至此处理完进程QQMicroGameBox.exe,接下来对进程QQMicroGameBoxTray.exe进行相同函数处理
     
    接下来处理游戏进程CosClient.exe
    结束Sessions\\1\\BaseNamedObJects\\COS,通过关闭游戏进程的mutex实现多开
    之后会显示成功提示
    此时重复打开游戏客户端成功
     
    总结:使用mutex防止游戏被多开是最常用的一种简单方式,该游戏就是一个例子
     
    参考资料:
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    vs2005中 fstream 不支持中文路径问题的解决方法:
    CString char* string 互转
    OpenGl显示,任意大小的图片作为背景
    combo box
    Android 开发环境搭建
    打开子对话框 选择文件
    (转)Static MemoryLayout_shadow memory
    (转)深入剖析I/O约束
    (转)set_input_delay/ set_output_delay之图解
    (转)PrimeTime分析流程
  • 原文地址:https://www.cnblogs.com/Archimedes/p/14894619.html
Copyright © 2011-2022 走看看