unity3d游戏逆向_课时1:unity3d游戏安卓逆向环境搭建 - CSDN
  • 简单 Unity3D 安卓游戏逆向思路

    千次阅读 2019-09-05 13:39:05
    作者:dawu@知道创宇404实验室 时间:2019/02/25 英文版本:...0x00 前言 这是一篇游戏引发的简单技术文。 起因是个人很喜欢玩 google play 上的一些数字类型(角色攻击是线性增长,怪物指数变...

    作者:dawu@知道创宇404实验室
    时间:2019/02/25
    英文版本:https://paper.seebug.org/943/
    如果你想第一时间了解漏洞资讯,可以关注我们的知道创宇Paper:https://paper.seebug.org/829/

    0x00 前言

    这是一篇游戏引发的简单技术文。

    起因是个人很喜欢玩 google play 上的一些数字类型(角色攻击是线性增长,怪物指数变强,到后期越打不过,通过重生增强属性变强)的小游戏。但是这种游戏仍旧存在一定缺陷,前期资源不多,玩的太慢、玩的时间长了,就感觉没意思,就不想玩了,所以在玩到游戏中期的时候,往往都会去网上搜索XXX破解版/内购版,快速进入后期然后放弃这款游戏。

    这样的做法其实是很不安全的,因为无法判断XXX破解版/内购版在破解/内购之后还做了什么。所以我最后的解决办法是,逆向这些apk,修改游戏逻辑。让我在玩的时候,可以快速度过缓慢的前期。

    逆向了几个玩过的游戏,发现这类游戏使用Unity3D开发的居多。因此本文将介绍简单Unity3D类安卓游戏的逆向修改思路。

    0x01 准备工具

    逆向最简单的Unity3D类安卓游戏建议使用安装好 JAVA 环境的Windows系统(涉及到dll文件的修改,所以Windows平台更加适合)。

    1.1 安卓 APK 逆向三件套

    一般 APK 逆向,常使用到 apktooldex2jarjd-gui。在逆向 Unity3D 安卓游戏时,仅仅只需要使用到 apktool

    • Apktool: 用于解压/重新打包安卓APK。
    • dex2jar: 将解压出来的dex文件变成jar,方便使用jd-gui查看
    • jd-gui: 查看dex文件逻辑

    1.2 dll文件逆向三件套

    因为一般的 Unity3D 安卓游戏的主逻辑都在 asserts/bin/data/Managed/Assembly-CSarp.dll 中,所以我们还需要 dll文件逆向/重新打包 的工具。

    • ILSpy: 用于查看dll程序逻辑
    • ILDASM: 用于反编译dll文件,生成il文件(存放了dll反编译后的指令)和res文件(反编译后的资源文件),可以安装WindowsSDK或者从网上下载。
    • ilasm: .net4.0自带了,位置在C:\Windows\Microsofr.NET\Framework\v4.0.30319\ilasm.exe

    1.3 生成重新打包的自签名证书

    修改完 apk 之后,需要对 apk 进行签名。该命令用于生成签名的证书。

    keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 0validity 10000
    # 记住设置的密码,最后自签名应用的时候需要输入密码
    

    0x02 开发一个简单的 Unity3D 游戏

    用Unity3D开发了一个简单小游戏作为本文的样例,逻辑十分简单:

    1. 英雄每过一关战斗力都会增加100.
    2. 怪物的战斗力为 Math.pow(2,当前关数)
    3. 当英雄战斗力小于怪物的战斗力时,英雄无法闯关。英雄可以考虑修炼或者重生提高战斗力。
    4. 英雄每次修炼战斗力都会增加1000.
    5. 英雄选择重生后,关卡数清零,需要重新闯关,但英雄初始战斗力会增加 2000 * 重生前闯关数。
      在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    具体代码可以参考 Github

    0x03 游戏逆向步骤

    1.使用 apktool 解压游戏安装包

    java -jar apktool.jar d game.apk
    

    2.提取出 game/assets/bin/data/Managed/Assembly-CSarp.dll ,使用 ILSpy 打开即可看到 dll 里面的逻辑。

    注: Unity3D开发的安卓游戏,其核心代码都在这个 dll 文件中,所以逆向/修改这个 dll 文件就可以了。这也是 Unity3D 和 其它安卓逆向不同的地方。

    在这里插入图片描述

    在没有混淆的情况下,反编译出的函数内容和原内容十分相似:

    在这里插入图片描述

    ILSpy 反编译的 Click1 内容

    在这里插入图片描述
    Click1 的原始代码

    3.找到关键函数、关键逻辑后,就可以尝试反编译 dll 文件并修改。使用 ILDASMdll 文件反编译成 il 文件。使用 ILDASM 打开 dll 文件后, File -> dump 就可以导出反编译结果了。

    在这里插入图片描述

    4.根据步骤2,就很容易理解逻辑了,然后根据速查表,就可以知道在步骤3导出的il文件中修改哪里了。例如步骤2中 Click1 就是游戏中 点击闯关 按钮绑定的逻辑。闯关的关键判断就在: info.hero_power + info.temp_power + info.add_power >= info.monster_power。所以打开步骤3中生成的 .il 文件,结合 .NET IL 指令速查表修改这部分对应的关键逻辑即可。

    在这里插入图片描述

    修改为 info.hero_power + info.temp_power + info.add_power != info.monster_power 就可以通过此处的逻辑判断。

    在这里插入图片描述

    5.修改关键逻辑后,通过重新编译 dll 文件、apk 文件、签名修改后的 apk 就可以在手机上安装运行了。

    重新编译dll文件命令如下:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe game.il /output=Assembly-CSarp.dll /dll
    

    将重新编译的dll放回 game/assets/bin/data/Managed/ 目录下,使用apktool重新打包apk:

    java -jar apktool.jar b game
    cp game/dist/game.apk ./
    

    自签名应用:

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore game.apk alias_name
    

    6.修改成功,开局修炼一次后,就可以无限闯关。顺利到达第30关。

    在这里插入图片描述

    0x04 杂谈和总结

    1. Unity3D有一个较为明显的特征: 开局会显示游戏LOGO。这个可以作为判断一个游戏是不是Unity3D开发的小参考。
    2. 文中的demo到了31关,就会发生整型溢出,怪物战斗力变为负数。原因是怪物战斗力的值为int型。在以前玩过的某个后期极度不平衡的游戏中,我的确遇到过整型溢出的问题。造成花钱升级还能增余额的情况。
    3. 在修改游戏之前把游戏语言调整为英文有助于在逆向的时候理解各个函数的意义(对于没有混淆的应用)。
    4. 游戏修改之后,很容易丧失原本的乐趣,变成纯粹的数字游戏。谨慎修改!

    0x05 参考链接

    1. Apktool
    2. ILSpy
    3. .NET IL 指令速查表
    4. Unity3d类安卓游戏逆向分析初探

    本文由 Seebug Paper 发布,如需转载请注明来源。

    欢迎关注我和专栏,我将定期搬运技术文章~

    也欢迎访问我们:知道创宇云安全 :https://www.yunaq.com/?from=CSDN91905

    在这里插入图片描述

    如果你想与我成为朋友,欢迎加微信kcsc818~

    展开全文
  • 简单Unity3D类安卓游戏逆向思路

    千次阅读 2019-02-26 18:32:22
    作者:dawu@知道创宇404实验室 时间:2019/02/25 ...但是这种游戏仍旧存在一定缺陷,前期资源不多,玩的太慢、玩的时间长了,就感觉没意思,就不想玩了,所以在玩到游戏中期的时候,往往都会去网上搜索XX...

    作者:dawu@知道创宇404实验室
    时间:2019/02/25

    0x00 前言

    这是一篇游戏引发的简单技术文。

    起因是个人很喜欢玩 google play 上的一些数字类型(角色攻击是线性增长,怪物指数变强,到后期越打不过,通过重生增强属性变强)的小游戏。但是这种游戏仍旧存在一定缺陷,前期资源不多,玩的太慢、玩的时间长了,就感觉没意思,就不想玩了,所以在玩到游戏中期的时候,往往都会去网上搜索XXX破解版/内购版,快速进入后期然后放弃这款游戏。

    这样的做法其实是很不安全的,因为无法判断XXX破解版/内购版在破解/内购之后还做了什么。所以我最后的解决办法是,逆向这些apk,修改游戏逻辑。让我在玩的时候,可以快速度过缓慢的前期。

    逆向了几个玩过的游戏,发现这类游戏使用Unity3D开发的居多。因此本文将介绍简单Unity3D类安卓游戏的逆向修改思路。

    0x01 准备工具

    逆向最简单的Unity3D类安卓游戏建议使用安装好 JAVA 环境的Windows系统(涉及到dll文件的修改,所以Windows平台更加适合)。

    1.1 安卓 APK 逆向三件套

    一般 APK 逆向,常使用到 apktool、dex2jar、jd-gui。在逆向 Unity3D 安卓游戏时,仅仅只需要使用到 apktool

    Apktool: 用于解压/重新打包安卓APK。
    dex2jar: 将解压出来的dex文件变成jar,方便使用jd-gui查看
    jd-gui: 查看dex文件逻辑

    1.2 dll文件逆向三件套

    因为一般的 Unity3D 安卓游戏的主逻辑都在 asserts/bin/data/Managed/Assembly-CSarp.dll 中,所以我们还需要 dll文件逆向/重新打包 的工具。

    ILSpy: 用于查看dll程序逻辑

    ILDASM: 用于反编译dll文件,生成il文件(存放了dll反编译后的指令)和res文件(反编译后的资源文件),可以安装Windows SDK或者从网上下载。

    ilasm: .net4.0自带了,位置在 C:\Windows\Microsofr.NET\Framework\v4.0.30319\ilasm.exe

    1.3 生成重新打包的自签名证书

    修改完 apk 之后,需要对 apk 进行签名。该命令用于生成签名的证书。
    keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 0validity 10000

    记住设置的密码,最后自签名应用的时候需要输入密码

    0x02 开发一个简单的 Unity3D 游戏

    用Unity3D开发了一个简单小游戏作为本文的样例,逻辑十分简单:

    1. 英雄每过一关战斗力都会增加100.
    2. 怪物的战斗力为 Math.pow(2,当前关数)
    3. 当英雄战斗力小于怪物的战斗力时,英雄无法闯关。英雄可以考虑修炼或者重生提高战斗力。
    4. 英雄每次修炼战斗力都会增加1000.
    5. 英雄选择重生后,关卡数清零,需要重新闯关,但英雄初始战斗力会增加 2000 * 重生前闯关数。
      在这里插入图片描述在这里插入图片描述在这里插入图片描述
      具体代码可以参考 Github

    0x03 游戏逆向步骤

    1. 使用 apktool 解压游戏安装包
      java -jar apktool.jar d game.apk
    2. 提取出 game/assets/bin/data/Managed/Assembly-CSarp.dll ,使用 ILSpy 打开即可看到 dll 里面的逻辑。
      注: Unity3D开发的安卓游戏,其核心代码都在这个 dll 文件中,所以逆向/修改这个 dll 文件就可以了。这也是 Unity3D 和 其它安卓逆向不同的地方。
      在这里插入图片描述
      在没有混淆的情况下,反编译出的函数内容和原内容十分相似:
      在这里插入图片描述在这里插入图片描述
    3. 找到关键函数、关键逻辑后,就可以尝试反编译 dll 文件并修改。使用 ILDASM 将 dll 文件反编译成 il 文件。使用 ILDASM 打开 dll 文件后, File -> dump 就可以导出反编译结果了。
      在这里插入图片描述
    4. 根据步骤2,就很容易理解逻辑了,然后根据速查表,就可以知道在步骤3导出的il文件中修改哪里了。例如步骤2中 Click1 就是游戏中 点击闯关 按钮绑定的逻辑。闯关的关键判断就在: info.hero_power + info.temp_power + info.add_power >= info.monster_power。所以打开步骤3中生成的 .il 文件,结合 .NET IL 指令速查表修改这部分对应的关键逻辑即可。
      在这里插入图片描述
      修改为 info.hero_power + info.temp_power + info.add_power != info.monster_power 就可以通过此处的逻辑判断。
      在这里插入图片描述
    5. 修改为 info.hero_power + info.temp_power + info.add_power != info.monster_power 就可以通过此处的逻辑判断。 修改为 info.hero_power + info.temp_power + info.add_power != info.monster_power 就可以通过此处的逻辑判断。
      在这里插入图片描述
    6. 修改关键逻辑后,通过重新编译 dll 文件、apk 文件、签名修改后的 apk 就可以在手机上安装运行了。

    重新编译dll文件命令如下:C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe game.il /output=Assembly-CSarp.dll /dll

    将重新编译的dll放回 game/assets/bin/data/Managed/ 目录下,使用apktool重新打包apk:
    java -jar apktool.jar b game
    cp game/dist/game.apk ./

    自签名应用:
    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore game.apk alias_name

    1. 修改成功,开局修炼一次后,就可以无限闯关。顺利到达第30关。
      在这里插入图片描述

    0x04 杂谈和总结

    1.Unity3D有一个较为明显的特征: 开局会显示游戏LOGO。这个可以作为判断一个游戏是不是Unity3D开发的小参考。

    2.文中的demo到了31关,就会发生整型溢出,怪物战斗力变为负数。原因是怪物战斗力的值为int型。在以前玩过的某个后期极度不平衡的游戏中,我的确遇到过整型溢出的问题。造成花钱升级还能增余额的情况。

    3.在修改游戏之前把游戏语言调整为英文有助于在逆向的时候理解各个函数的意义(对于没有混淆的应用)。

    4.游戏修改之后,很容易丧失原本的乐趣,变成纯粹的数字游戏。谨慎修改!

    0x05 参考链接

    1.Apktool
    2.ILSpy
    3..NET IL 指令速查表
    4.Unity3d类安卓游戏逆向分析初探

    展开全文
  • 都市快打apk格斗小助手,.net反编译,unity3d游戏逆向。 教你使用 Reflexil 反编译.NET – 王旭博客 .NET反编译软件Reflector插件reflexil的使用 - ASP.NET - 易我建站论坛 安卓Unity3d游戏的逆向分析 - 『移动安全...
    展开全文
  • Unity3D逆向基础教程第四课

    千次阅读 2015-09-15 00:15:15
    课程名称:Unity3D逆向基础教程第四课课程类型:Unity3D课程内容:Unity3D游戏逻辑运算课程时长:25分钟课程作者:Sarkozy课程大小:135.6m课程格式:flv课程备注:额也不知道为什么,录视频会羞涩,大家看的时候...

    课程名称:Unity3D逆向基础教程第四课

    课程类型:Unity3D

    课程内容:Unity3D游戏逻辑运算

    课程时长:25分钟

    课程作者:Sarkozy

    课程大小:135.6m

    课程格式:flv

    课程备注:额也不知道为什么,录视频会羞涩,大家看的时候不要笑,另外视频中有错误的用语或者有待改进的地方请发私信或者评价。
    有兴趣的朋友可以完成以下课程中附带的app,并发帖进行发布。

    课程下载:
    链接: http://pan.baidu.com/s/1hqxiAjU 密码: iqyk

    展开全文
  • 移动平台游戏框架主要有unity 3d和cocos 2d。我们首先得识别游戏使用的框架。 识别Unity游戏Android平台的apk包可以直接解压,看是否有./assets/bin/Data/Managed目录,也可以查看lib文件夹下面包含的一些so,如果...
  • Unity游戏资源逆向工具 https://www.cnblogs.com/kekec/p/12175547.html disunity是一款Java编写(需安装jdk1.8,即Java8)的解析Unity asset和asset bundle文件(流式加载,支持热更新)的命令行工具(已开源) ...
  • Unity3D逆向基础教程第二课

    千次阅读 2015-09-15 00:13:11
    课程名称:Unity3D逆向基础教程第二课课程类型:Unity3D课程内容: 1.unity游戏的逆向思路分析 2.unity游戏逆向实战初探-数值修改课程时长:33分钟课程作者:Sarkozy课程大小:【电脑版:294M,手机版:138M】...
  • 今天我们来说说通过反编译Unity3D的AssetBundle来提取游戏资源,博主写这篇文章的目的并非是要教大家如何去破解一款基于Unity3D引擎开发的游戏,而是想通过今天这篇文章来告诉大家如何在开发Unity3D游戏的过程中保护...
  • 基于unity3d游戏的android版本逆向初探

    千次阅读 2017-10-31 20:35:57
    【文章标题】: 基于unity3d游戏的android版本逆向初探 【文章作者】: dreaman 【作者邮箱】: [email]dreaman_163@163.com[/email] 【作者主页】: https://github.com/dreamanlan 【软件名称】: 匿了 【软件...
  • Android逆向Unity3D——XXX快跑破解

    千次阅读 2019-04-07 10:43:36
    Unity3D是一款3D引擎,用来开发3D游戏,同样的还有Unity2D用来开发2D游戏的。咳咳,我又来啰嗦了。说白了就是说你玩的有模型的Android手游基本都是Unity3D开发的。 有开发就有破解。 所以我们走着先。 ...
  • 最近玩了一个游戏,发现获取买装备需要获取星星,获取星星需要赢得比赛,那我要是想买齐所有装备,我就要赢很多场比赛,等我凑齐了装备我也就不想玩了。。。 所有我想上来就有星星!于是动手了! 此方法不适用于作用...
  • Unity3D逆向基础教程第五课

    千次阅读 2015-09-15 00:16:37
    课程名称:Unity3D逆向基础教程第五课课程类型:Unity3D课程内容:Unity3D指令之IF指令课程时长:23分钟课程作者:Sarkozy课程大小:76.8m课程格式:flv课程备注:本节课可能因为麦克风问题,没有将声音录制完毕,...
  • 简单Unity 3D游戏加密dll文件提取

    千次阅读 2018-09-02 14:25:36
    大多数游戏都是使用Unity 3D做的,我们逆向分析主要分析\assets\bin\Data\Managed中的Assembly-CSharp.dll文件,当我们用.NET Reflector 或者dnSpy 打开Assembly-CSharp.dll文件时,有时候会发现什么信息也看不到,...
  • 看了眼是Unity3d的,既然是.Net的,只要资源不是在资源包里,应该都还是蛮简单的. 刚开始做了个字符串替换,发现有些地方还是比较麻烦,还不如拿UnityEngine里面的GUI函数开刀,也就是有了这么一次简单的哦汉化过程. 首先...
  • 用ApkToolBox查壳会提示 是u3d游戏 用AndroidKiller反编译 lib文件夹下 有 libunity.so libmono.so 都足以说明是U3D的游戏 一般来讲 Assembly-CSharp.dll 功能都是写在这个dll里 我们用 dnSpy 打开这个dll 搜索 ...
  • 行业背景 Unity3d引擎应用的行业越来越多,游戏、...Virbox Protector Unity3D版加密工具, 是北京深思数盾自主研发的程序保护工具,可快速加密保护 Unity3D 游戏引擎开发的程序,对 Unity3D 脚本 C# 代码进行加密,防
  • 以前很多人都说用Disunity提取出了Unity3D资源,但是我在Mac上从来没有成功过,一直在报错。https://github.com/ata4/disunity/releases 在这里可以看到Disunity3.0是19天以前更新的,新版本真的是太好用了,我不得...
  • 反编译unity3D游戏资源,源码

    千次阅读 2015-07-30 20:08:46
    首先解析游戏apk判断游戏引擎,然后解析图片资源,最后解析apk中C#源码
  • unity3D四合一棋牌源码

    2020-07-30 23:33:28
    3D前端源码,用U3D开发。亲测可用。是新手学习的比较好的资源!
1 2 3 4 5 ... 20
收藏数 561
精华内容 224
关键字:

unity3d游戏逆向