QQ连连看 逆向分析外挂制作报告【脱壳ASPPack】【模拟点击】【内联HOOK】
一、工具介绍
使用工具:Ollydbg,PEID,ImpREC,Cheat Engine,火绒剑
实现功能:除去广告,游戏秒杀。
二、除去广告
1、初始判断
点击开始游戏,弹出窗口,点击继续,弹出游戏界面。
查看火绒剑进程信息,发现了创建了两个进程,为以下创建关系。
qqllk.exe -> qqllk.ocx -> kyodai.exe
直接运行kyodai.exe,程序奔溃。
直接运行qqllk.ocx(需修改后缀名),可运行。判断qqllk.ocx 对了kyodai.exe进行某些操作。
2、脱壳
对qqllk.ocx(需修改后缀名)进行信息查看
通过PEID 可以看出,程序加了ASPack壳
通过ESP定律,OD插件OllyDump,ImpREC, 脱除
脱除效果:
3、去广告
在脱壳后程序下API断点:CreateProcessA
查看堆栈信息,发现kyodai.exe进程在创建时被挂起
ctrl+F8自动步过,发现进行了一系列的循环操作,猜测在修改kyodai.exe的进程数据
下API断点:ResumeThread
发现进程恢复后游戏启动
可推断qqllk.ocx进程 创建 kyodai.exe进程并挂起
再对 kyodai.exe进程 进行了数据解密恢复
接着恢复进程运行游戏
恢复进程时,OD附加kyodai.exe进程,在OEP下断,并dump进程,完成去广告。
4、总结:
一共创建了三个进程,分别对应qqllk.exe -> qqllk.ocx -> kyodai.exe 程序。
kyodai.exe 程序数据被加密,需要qqllk.ocx进程解密恢复运行。
三、秒杀游戏
1、初始判断
通过连连看的试玩,猜测存储地图图标元素,是个地图数组
存储道具列表元素,是个道具数据列表
目标:得到雷的类型数据,
得到道具列表位置,
修改道具数据列表
实现模拟点击
完成秒杀
2、目标逐步完成
雷数据类型:
猜测地图数组需要随机初始化,在OD下API断点:rand
在断下来的地方,进行回溯逆向分析,
找到地图数组
随机初始化数组后,得到雷的数据类型。
随机初始化后地图数组
道具列表:
用CE附加进程,找到道具列表的雷数 数据地址,
进而锁定道具数据列表
模拟点击坐标:
通过回调函数,下右键点击 消息断点LBUTTONDOWN,获取坐标。
3、实现方案
- 修改道具y数据列表
- 实现模拟点击
完成秒杀游戏
4、功能代码
//实现代码://找到进程 HANDLE ReProcess = 0;PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);BOOL bMore = ::Process32First(hProcessSnap, &pe32);//多字节转宽字节 WCHAR proname[10] = {};MultiByteToWideChar(CP_ACP, MB_COMPOSITE, "kyodai.exe", 10, proname, 10);while (bMore){if (wcscmp(pe32.szExeFile, proname) == 0){ReProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);break;}bMore = Process32Next(hProcessSnap, &pe32);}HANDLE process;process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 0xeb4);////修改堆数据//修改雷类型 BYTE leitype = 0xF4;SIZE_T num = 0;WriteProcessMemory(ReProcess, (LPVOID)0x12ac7d, &leitype, 1, &num);//修改雷数 BYTE leishu = 0x99;SIZE_T shu = 0;WriteProcessMemory(ReProcess, (LPVOID)0x12ac7e, &leishu, 1, &shu);HWND window = FindWindowA(NULL, "QQ连连看");//发送模拟点击for (int i = 0; i < 100; i++){Sleep(50);PostMessage(window, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(681, 200));printf("发送%d次\n", i);}////完成
四、附加:升级提升
1、缺陷改进
可见地图数组 和 道具数据列表 是堆空间,一旦重启电脑 或 更换电脑,数据地址将变化,外挂代码失效。
两种决解方案:1. Hook往道具列表赋值的指令,获取寄存器的值,从而实时获取堆空间地址。
2.修改往道具列表赋值的指令,实现按自己的意愿修改道具列表
这里采用第2种方案:
在道具数据列表 下硬件写入断点,回溯分析到 道具判断的地方。
2、改进功能代码
//实现代码://找到进程 HANDLE ReProcess = 0;PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);BOOL bMore = ::Process32First(hProcessSnap, &pe32);//多字节转宽字节 WCHAR proname[10] = {};MultiByteToWideChar(CP_ACP, MB_COMPOSITE, "kyodai.exe", 10, proname, 10);while (bMore){if (wcscmp(pe32.szExeFile, proname) == 0){ReProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);break;}bMore = Process32Next(hProcessSnap, &pe32);}//修改指令 DWORD attibute;VirtualProtectEx(ReProcess, (LPVOID)0x0041de2e, 0x7, PAGE_READWRITE, &attibute);//cmp bl,0x0 BYTE OPecode1[] = { '\x66', '\xc7', '\x40', '\x01', '\xf4', '\x99' ,'\x90' };DWORD num;WriteProcessMemory(ReProcess, (LPVOID)0x0041de2e, OPecode1, 7, &num);VirtualProtectEx(ReProcess, (LPVOID)0x0041de2e, 0x7, attibute, &attibute);CloseHandle(ReProcess); HWND window = FindWindowA(NULL, "QQ连连看");//发送模拟点击消息for (int i = 0; i < 100; i++){Sleep(50);PostMessage(window, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(681, 200));printf("发送%d次\n", i);}////完成
五、效果
完成除去广告,秒杀游戏
个人总结:我比较喜欢内联HOOK
附件:
QQ连连看外挂.exe
KID
转载于:https://www.cnblogs.com/KIDofot/p/8544584.html
QQ连连看 逆向分析外挂制作报告【脱壳ASPPack】【模拟点击】【内联HOOK】相关推荐
- 合金弹头 逆向分析与外挂制作报告【内联HOOK】
一.工具及游戏介绍 使用工具:Ollydbg,PEID,Cheat Engine 实现功能:玩家无敌 目标:找到全局数据,或关键代码块. 游戏版本:合金弹头1-5代珍藏版 二.逆向逻辑 1.初始判断[ ...
- 连连看逆向分析与外挂编写
1.样本概况 1.1 应用程序信息 MD5值:814DE98DC72E4AB0001BA7F287239D2D 简单功能介绍:连连看单机游戏 1.2 分析环境及工具 系统环境:win7 32位 分析工 ...
- 逆向分析系列——常见的脱壳工具
脱壳工具 :UPX-Ripper1.3 UPX-ShellEx V1.0 RC9 脱壳对象:UPX Stripper v2.7 ASP Unpacker PE-Scan 脱壳对象:ASPack UnP ...
- 大润发小程序逆向分析
内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 通过对大润发小程序反编译,进行加密参数分析 逆向分析加密参数, 并实现模拟 详情请看这边
- 网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂
网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一.服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让加固变得更简单,一键搞定.目 ...
- 安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)
安卓逆向--某力播逆向分析(脱壳) 一.环境 这一步真的头疼,环境很重要,各种测试,一下是我测试的环境,由于没有真机,就拿虚拟机做测试 1. Xposed 2. FDex2 ...
- QQ游戏外挂制作教程 (对对碰)
这些日子,QQ游戏外挂是风光了一阵.俄罗斯方块,连连看,对对碰这些游戏的外挂层出不穷.其实这一类外挂的原理大体都是一样的.下面我就以QQ游戏对对碰外挂作为例子阐述一下QQ外挂的制作原理. ...
- 《QQ游戏外挂制作教程》一文的补遗
前段时间发的这篇文章<QQ游戏外挂制作教程(对对碰)>主要阐述了目前QQ游戏外挂一般的工作原理. 近日收到一些网友的邮件,询问如何其中的一些细节.主要是关于对对游戏中的一些点的坐标,颜色的 ...
- 一文带你了解对游戏外挂的逆向分析的详细步骤。
详细的逆向分析步骤,可以点击下面文字链接进行查看. 链接:游戏外挂样本逆向详细步骤
- 连连看外挂制作 —— 修改分数(1)
标 题: 连连看外挂制作 -- 修改分数(1) 作 者: Koma 时 间: 2009-12-10 21:10 链 接: http://blog.csdn.net/wangningyu/archive ...
最新文章
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler...
- (转)WCF光芒下的Web Service
- 求解N个值中最大的k个数,N远大于k
- mysql的基准测试_mysql基准测试 -benchmarks
- python语法学习_Python学习1——语法
- 设计模式---桥接模式(C++实现)
- ie-此更新不适应于此电脑
- 【SCI\EI】SCI分区,该看JCR还是中科院?
- catalina.log localhost.log localhost_access_log.txt manager.log tomcat-stdout.log 文件占用过大,处理方式
- 设计模式总览及工厂模式详解
- STA静态时序分析/Formality形式化验证
- Html-小米官网头部
- 正则表达式的基本用法
- android 服务自动运行怎么办,怎么解决安卓软件服务停止后又自启?
- centos7—DNS域名系统
- Unity UGUI实现图文混排
- 【论文阅读】A detailed analysis of CICIDS2017 dataset for designing Intrusion Detection Systems
- 林大ACM培训day1心得
- Android Zip 解压 与 进度 实现
- [转]数据下载(二十一)