用户
搜索
  • TA的每日心情
    开心
    昨天 16:14
  • 签到天数: 279 天

    连续签到: 1 天

    [LV.8]以坛为家I

    i春秋作家

    Security Personnel

    Rank: 7Rank: 7Rank: 7

    156

    主题

    1382

    帖子

    1851

    魔法币
    收听
    0
    粉丝
    134
    注册时间
    2015-11-4

    幽默灌水王突出贡献春秋文阁春秋巡逻热心助人奖

    zusheng i春秋作家 Security Personnel 幽默灌水王 突出贡献 春秋文阁 春秋巡逻 热心助人奖 楼主
    发表于 2017-12-30 12:32:42 56726

    游戏安全系列教程-植物大战僵尸(二)

    第二章 阳光收集功能模块分析

    0x01 前言

    前面两篇文章我们主要介绍了如何去寻找一些游戏数据和基址。在网络游戏中,一些关键数据都是存储在服务器上的,在本地只是显示,改了也没啥用,这里我们就要针对游戏的一些功能模块进行分析从而实现一些辅助功能。由于网络游戏不能拿来作为例子(PS:你们懂得),所以我们还是以单机游戏为例。本篇文章我们主要分析阳光收集功能模块实现自动收集阳光辅助。

    本篇文章所需工具:

    1、CE (游戏内存修改器)

    Cheat Engine,简称CE,是由Eric Heijnen(网名“Dark Byte”)开发的一款开源软件,主要功能包括存储器扫描,十六进制编辑,指令反汇编,内存数据修改等功能,是一款强大的游戏修改器。Cheat Engine是最常见的游戏外挂工具,通过Cheat Engine,用户可以快速查找和修改游戏数据及更改游戏处理逻辑。

    下载地址:

    链接:https://pan.baidu.com/s/1pLebzsB 密码:c4el

    2、植物大战僵尸(游戏)

    下载地址:

    链接:https://pan.baidu.com/s/1dFPduy1 密码:xgz2

    Tip:本游戏有捆绑软件,安装时请去除安装捆版软件的勾选,启动游戏时有设定主页的选择,请无视它点击否。

    3、IDA Pro

    交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析恶意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。

    由于本软件是收费软件,这里不做分享。

    0x02 基础知识

    启动 IDA

    打开IDA PRO你就会看见一个初始欢迎界面。上面显示了你的许可证之类的信息。初始界面消失后,IDA会显示另一个对话框,为你进你进入桌面环境提供了三个选择。

    i1.png

    1. New(新建):启动一个File Open对话框来选择要分析的文件。
    2. Go(运行):打开一个空白的工作区,这时要分析文件,可以直接将一个二进制文件拖放到IDA工作区。
    3. Previous(先前的):可以打开下面最近用过的文件。

    IDA 数据显示窗口

    完成上面上面步骤后IDA会如下图所示:

    i2.png

    1. 反汇编窗口:操作和分析二进制文件的主要窗口。
    2. 函数窗口:列举IDA在数据库中识别的每一个函数。
    3. 输出窗口:显示IDA所执行任务的有关信息。

    跳转到地址

    Jump -> Jump to Address打开Jump to Address对话框

    i3.png

    也可以使用快捷键G键,注意在输入法英文状态下。

    什么是CALL?

    CALL就是相当于易语言里的子程序,相当于C++里面的函数。

    每个CALL都有用途,很多独立的功能都可以封装在CALL里,这样调用这个CALL也就调用了对应封装的功能。

    CALL有“参数”,也有“返回值”

    “参数”可以是没有,也可以是多个。

    “返回值”一般通过EAX寄存器返回。

    0x03 定位入手地址

    说到分析阳光收集功能模块,首先我们要知道从哪里入手啊。为了照顾基础薄弱的读者,我会尽量做到步骤清晰,如有描述错误还请指出,谢谢。

    步骤一、打开游戏

    i4.png

    步骤二、打开CE,加载游戏进程

    i5.png

    步骤三、使用精确搜索方式搜索阳光数值50

    i6.png

    步骤四、回到游戏拾取阳光从而改变阳光数值

    i7.png

    步骤五、回到CE,将50修改为75点击再次扫描      

    i8.png

    步骤六、这样我们就找到了阳光数值的存储地址,我们右击它,选择找出是什么改写了这个地址

    i9.png

    步骤七、继续回到游戏拾取阳光,然后回到CE,发现我们已经找到了改变阳光的地址

    i10.png

    步骤八、选中它右击,选择在反汇编程序中显示地址

    i11.png

    步骤九、在打开的内存浏览器中,点击视图,将显示模块地址勾去掉。

    i12.png

    这样我们就能和IDA PRO同步分析啦,这里地址我们早就知道了,0044BA45

    一个入手点我们有了,不急,我们先用IDA来分析看看。

    0x04 IDA分析阳光收集功能模块

    首先我们打开IDA PRO,直接点击Go打开一个空白的工作区,然后将游戏程序直接拖进去,当然以什么方式随你啦。

    i13.png

    我们先跳转到地址0044BA45,基础知识介绍到了,这里不再赘述。

    i14.png

    这个地址是增加阳光的我们先注释一下

    i15.png

    往上回溯,可以发现是从地址0044BA26下去的,上面是阳光数量增加量,19是十六进制,也就是十进制的25,收集一次阳光,阳光数量就增加25

    i16.png

    按照这个思路继续往上回溯。

    i17.png

    交叉引用到调用点有两处。

    第一处:
    i18.png

    第二处:(没有执行到)
    i19.png

    这样我们就定位到了增加阳光的逻辑过程啦

    i20.png

    0x05 阳光自动收集分析

    经过上面的分析我们要锁定阳光收集的关键代码也不难,这里我们可以通过阳光收集与未收集标志位不同来找到关键代码。

    其实很简单,我们先来尝试0和1。

    那么未收集很大可能就是0啦,收集就是1,我们先来试试,未收集是0,所以初始数值很可能是0,我们先使用精确搜索。

    i21.png

    结果很多,不用担心,我们回到游戏点击太阳进行收集,然后回到CE搜索1点击再次扫描。

    i22.png

    结果是不是少了很多,我们继续重复上述动作,直至找到搜集标志位。(PS:太阳出来就回到CE搜索0)

    为0的时候 未搜集:

    i23.png

    为1的时候 搜集

    i24.png

    找到了,我们双击这个地址。

    右击它,找出是什么访问了这个地址。

    i25.png

    回到游戏进行一次阳光收集操作,回到CE,看来已经有结果了。

    i26.png

    逐个分析找到关键代码:

    i27.png

    接下来如何实现自动阳光收集?别急。

    0x06 代码注入实现自动阳光收集

    上面我们已经得到一个关键地址0044C5EE,我们使用IDA跳转到这个地址分析一下。

    i28.png

    JNZ
    
    条件转移指令JNE/JNZ
    格式: JNE/JNZ 标号
    功能: ZF=0,转至标号处执行
    
    JMP
    
    无条件转移指令JMP
    格式: JMP OPRD
    功能: JMP指令将无条件地控制程序转移到目的地址去执行

    我们修改跳转指令为JMP就好了。

    进入自动汇编:

    i29.png

    模板->代码注入:

    i30.png    

    修改跳转指令为JMP后点击执行:

    i31.png

    效果演示:

    imove.gif   

    0x07 总结

    针对这类防御我们可以改写某些功能模块功能的标志位,防止分析得出功能的关键代码,进而实现一些辅助功能。最后感谢你能抽出时间阅读本篇文章,希望能帮助到你,谢谢。

    本帖被以下淘专辑推荐:

    Hacking the earth.My Blog:https://isbase.cc
    z7788520 i春秋作家 ← 假 真➡i春秋打杂员 核心白帽 i春秋签约作者 积极活跃奖
    沙发
    发表于 2017-12-30 14:24:57
    大佬教我写吃鸡挂,我要去卖给芦苇
    不惹事,不生事,妖魔鬼怪快走开
    使用道具 举报 回复
    发表于 2017-12-30 17:36:35
    z7788520 发表于 2017-12-30 14:24
    大佬教我写吃鸡挂,我要去卖给芦苇

    这是个什么梗
    Hacking the earth.My Blog:https://isbase.cc
    使用道具 举报 回复
    QQ群:562305126   喜欢交流的朋友可以加一下。
    使用道具 举报 回复
    发表于 2018-1-6 10:56:54
    Hacking the earth.My Blog:https://isbase.cc
    使用道具 举报 回复
    发表于 2018-2-28 09:28:07
    这么好的贴子为什么没人啊
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册