一、工具介绍

使用工具: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、实现方案

  1. 修改道具y数据列表
  2. 实现模拟点击

    完成秒杀游戏

    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】相关推荐

  1. 合金弹头 逆向分析与外挂制作报告【内联HOOK】

    一.工具及游戏介绍 使用工具:Ollydbg,PEID,Cheat Engine 实现功能:玩家无敌 目标:找到全局数据,或关键代码块. 游戏版本:合金弹头1-5代珍藏版 二.逆向逻辑 1.初始判断[ ...

  2. 连连看逆向分析与外挂编写

    1.样本概况 1.1 应用程序信息 MD5值:814DE98DC72E4AB0001BA7F287239D2D 简单功能介绍:连连看单机游戏 1.2 分析环境及工具 系统环境:win7 32位 分析工 ...

  3. 逆向分析系列——常见的脱壳工具

    脱壳工具 :UPX-Ripper1.3 UPX-ShellEx V1.0 RC9 脱壳对象:UPX Stripper v2.7 ASP Unpacker PE-Scan 脱壳对象:ASPack UnP ...

  4. 大润发小程序逆向分析

    内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 通过对大润发小程序反编译,进行加密参数分析 逆向分析加密参数, 并实现模拟 详情请看这边

  5. 网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂

    网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一.服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让加固变得更简单,一键搞定.目 ...

  6. 安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)

    安卓逆向--某力播逆向分析(脱壳) 一.环境 这一步真的头疼,环境很重要,各种测试,一下是我测试的环境,由于没有真机,就拿虚拟机做测试 1.  Xposed       2. FDex2        ...

  7. QQ游戏外挂制作教程 (对对碰)

    这些日子,QQ游戏外挂是风光了一阵.俄罗斯方块,连连看,对对碰这些游戏的外挂层出不穷.其实这一类外挂的原理大体都是一样的.下面我就以QQ游戏对对碰外挂作为例子阐述一下QQ外挂的制作原理.       ...

  8. 《QQ游戏外挂制作教程》一文的补遗

    前段时间发的这篇文章<QQ游戏外挂制作教程(对对碰)>主要阐述了目前QQ游戏外挂一般的工作原理. 近日收到一些网友的邮件,询问如何其中的一些细节.主要是关于对对游戏中的一些点的坐标,颜色的 ...

  9. 一文带你了解对游戏外挂的逆向分析的详细步骤。

    详细的逆向分析步骤,可以点击下面文字链接进行查看. 链接:游戏外挂样本逆向详细步骤

  10. 连连看外挂制作 —— 修改分数(1)

    标 题: 连连看外挂制作 -- 修改分数(1) 作 者: Koma 时 间: 2009-12-10 21:10 链 接: http://blog.csdn.net/wangningyu/archive ...

最新文章

  1. 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler...
  2. (转)WCF光芒下的Web Service
  3. 求解N个值中最大的k个数,N远大于k
  4. mysql的基准测试_mysql基准测试 -benchmarks
  5. python语法学习_Python学习1——语法
  6. 设计模式---桥接模式(C++实现)
  7. ie-此更新不适应于此电脑
  8. 【SCI\EI】SCI分区,该看JCR还是中科院?
  9. catalina.log localhost.log localhost_access_log.txt manager.log tomcat-stdout.log 文件占用过大,处理方式
  10. 设计模式总览及工厂模式详解
  11. STA静态时序分析/Formality形式化验证
  12. Html-小米官网头部
  13. 正则表达式的基本用法
  14. android 服务自动运行怎么办,怎么解决安卓软件服务停止后又自启?
  15. centos7—DNS域名系统
  16. Unity UGUI实现图文混排
  17. 【论文阅读】A detailed analysis of CICIDS2017 dataset for designing Intrusion Detection Systems
  18. 林大ACM培训day1心得
  19. Android Zip 解压 与 进度 实现
  20. [转]数据下载(二十一)

热门文章

  1. 精选| 2019年4月R新包推荐(Top40)
  2. cesium 百度地图_Cesium专栏-热力图(附源码下载)
  3. Codeforces Beta Round #1 题解
  4. MyBaitis框架环境搭建(一)
  5. iOS开发 -- 发送JSON数据给服务器
  6. AIDA64自动监控计算机硬件工作情况
  7. 项目是如何完成的(一)
  8. Redis集群功能配置以及Redis Sentinel配置
  9. Zookeeper实现简单的分布式RPC框架
  10. 轻量级web富文本框——wangEditor使用手册(3)——如何自定义配置菜单 demo