unity3d手游逆向_unity3d 逆向 - CSDN
  • 作者:dawu@知道创宇404实验室 时间:2019/02/25 0x00 前言 这是一篇游戏引发的简单技术文。 起因是个人很喜欢玩 google play 上的一些数字类型(角色攻击是线性增长,怪物指数变强,到后期越打不过,通过重生增强...

    作者: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类安卓游戏逆向分析初探

    展开全文
  • 作者: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~

    展开全文
  • TX有很多用Unity做的手游,比如《天天飞车》《我叫MT2》都对dll进行了加密,而且这些游戏对dll的加密方式是一样的 想要知道如何解密就要知道他是如何加密的 关于Assembly-CSharp.dll和Assembly-CSharp-firstpass.dll...

    此文章的技术内容已过时,仅当做技术存档参考。腾讯的Unity游戏已不再mono.so中加密dll了,而是通过libtprt.so来hook了加载Assembly-CSharp.dll的地方进行解密,解密算法有点复杂,建议用ida动态dump


    腾讯有很多用Unity做的手游,比如《XX飞车》《我叫XX2》《XX战神》《XX与勇士》等等,都对dll进行了加密,而且这些游戏对dll的加密方式是一样的

    关于Assembly-CSharp.dll和Assembly-CSharp-firstpass.dll的加密原理参考Unity3D 游戏加密解密那些事

     

    以Assembly-CSharp.dll为例,来分析一下TXUnity游戏解密dll的算法

    0x00 把libmono.so文件拖入IDA中,在函数窗口中搜索mono_image_open_from_data_with_name这个方法

     

    这时我们看到除了mono_image_open_from_data_with_name还有mono_image_open_from_data_with_name_0这个方法,mono_image_open_from_data_with_name是Mono本身就有的方法,而mono_image_open_from_data_with_name_0肯定是TX后加的,可以分别打开这2个方法看看

     

    按Tab或F5 看看mono_image_open_from_data_with_name方法的伪代码,里面直接调用了mono_image_open_from_data_with_name_0这个方法

     

    在看看mono_image_open_from_data_with_name_0方法的伪代码

    能看到3个方法: sub_3D21CC,sub_3D20c8,sub_3D20B0,第一个是解密的方法,第二个忽略,第三个是mono_image_open_from_data_with_name原方法的逻辑

     

    0x01 进入sub_3D21CC这个方法看看解密算法是怎样的

    红框中的内容就是解密dll的核心算法,在看看汇编代码

     

    0x02 经过上面的分析,我写了一个C#版的解密小工具,这里只贴出解密算法

    //TX Assembly-CSharp.dll解密算法
    private byte[] mono_image_encrypt(byte[] bytes)
    {
        if (bytes[0] == 0x4D && bytes[1] != 0x5A)
        {
            for (int i = 0; i < bytes.Length - 1; i++)
            {
                bytes[i + 1] = (byte)((bytes[i + 1] + 0x77) ^ 0x8D);
                bytes[i + 1] = (byte)(((bytes[i + 1] ^ bytes[i]) + 0x3A) ^ 0x93);
            }
        }
        return bytes;
    }

     

    解密后用对比工具看下,现在能看到了Dos头部信息

     

    0x03 用.Net Reflector 打开解密后的dll

    这里报了个错误,元数据头签名无效(关于.Net 文件格式和元数据等知识这里就不讲解了,感兴趣的话网上有很多资料)


    关于元数据头中Signature的修复 腾讯是在mono_image_open_full中去检测这个值,可在IDA中搜索字符串“BSJB”来定位具体的位置

    这里直接用CFF Explorer修复一下就好(快捷方便偷笑),找到.Net 元数据头,在Signature的Value值中填入424A5342,修改后保存

    在用对比工具比较一下,左边就是刚才修改后的,已经清晰的看到‘BSJB’签名了

     

    这时在.Net Reflector 中就能看到dll的代码了

     

     资源提取源码

    链接:http://pan.baidu.com/s/1kVudWSB 密码:i58w

    展开全文
  • 最近玩了一个游戏,发现获取买装备需要获取...当然加固就脱壳呗也比较简单,那要逆向工程还是要确定思路。 1.成果图: 2.破解思路: 直接利用apk导入AndroidKiller然后反编译签名认证,分析,判断当前的游戏Uni...

    最近玩了一个游戏,发现获取买装备需要获取星星,获取星星需要赢得比赛,那我要是想买齐所有装备,我就要赢很多场比赛,等我凑齐了装备我也就不想玩了。。。
    所有我想上来就有星星!于是动手了!
    此方法不适用于作用加固的app。当然加固就脱壳呗也比较简单,那要逆向工程还是要确定思路。
    1.成果图:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.破解思路:

    直接利用apk导入AndroidKiller然后反编译签名认证,分析,判断当前的游戏Unity3D还是cocos2D游戏。
    然后去到工程管理器去查看一下是否有Assembly-CSharp.dll这个文件
    如果有,则确定这游戏是采用Unity的Mono打包方式的游戏

    相关的游戏资源都是在这Assembly-CSharp.dll文件里面了,我们可以使用dnSpy软件对dll文件进行反编译

    打开dnSpy软件,把Assembly-CSharp.dll拖进去,展开,我们可以看到有许多的资源
    然后读源码,找到需要修改的入口,重新编辑IL指令或者编辑方法
    (关于IL指令可以看我上一篇文章)
    修改完之后,保存模块,利用Androidkiller反编译安装。

    3.破解过程记录:

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    本文章仅为学术交流,出任何事情和本人无关

    展开全文
  • 作为手游爱好者的你一定不会陌生“外挂”,事实上外挂并不只是存在于手游中,在端游中就早已存在了。自动升级、自动打怪代替着手工操作。除了外挂,还有游戏破解,找到游戏BUG,对...
        

    640


    作为手游爱好者的你一定不会陌生“外挂”,事实上外挂并不只是存在于手游中,在端游中就早已存在了。自动升级、自动打怪代替着手工操作。除了外挂,还有游戏破解,找到游戏BUG,对游戏进行重打包达到修改支付、修改广告等……


    640

     

    那么这些安全问题背后是如何发生的呢,想要全面了解安卓Unity3D 手游?就请关注下面的课程——


    640

     

     

    课程简介

    全面讲解AndroidUnity3D手游从逆向分析、修改及解密修复等流程,并涉及网络抓包、本地及网络验证机制添加及逆向分析。

     

    讲师简介

    640


    黯夏子风,Android逆向分析研究员,硬件开发工程师,多年移动通信终端硬件及智能硬件开发经验,现从事移动终端产品方案及硬件加密方案研究工作。专注Android移动安全研究,多年Unity3D方向逆向分析经验,熟悉Android手游安全分析、加解密分析、验证机制添加及逆向分析思路。


     

    课程章节

    基础篇

    0x1.统筹看逆向

    0x2.逆向环境搭建和工具准备

    0x3.逆向初体验

    0x4.smali语法介绍

    0x5.smali逻辑分析实战

    0x6.U3D游戏修改分析实战

    0x7.so文件汇编修改

    0x8.总结


    番外篇

    安卓U3D逆向从Assembly-CSharp到il2cpp

    旅行青蛙破解分析从内存到存档再到改包


    进阶篇

    0x0.进阶篇绪论

    0x1.apk基础修改深化-1

    0x2.apk基础修改深化-2

    0x3.U3D游戏逆向修改深化-1

    0x4.U3D游戏逆向修改深化-2

    0x5.U3D游戏逆向修改深化-3

    0x6.so逆向深化及IDA静态分析-1

    0x7.so逆向深化及IDA静态分析-2



    学习地址



    戳左下角“阅读原文”,进入页面学习哦!



     

    “如何成为看雪讲师?

    1、填写报名信息并提交至 https://www.kanxue.com/user-online_sendmsg.htm

    2、报名格式:

      1)申请人论坛昵称   2)姓名

      3)手机   4)微信/QQ号

      5)工作单位/学校

      6)从事领域/专业

      7)职位

      8)希望参与的课程题目或方向

      9 ) 擅长领域

     10)个人简介/简历

    了解更多详情,戳 看雪学院招募看雪讲师

     


    640?

    阅读原文,进入课程学习~

    展开全文
  • 本文首发于I春秋,未经...说白了就是说你玩的有模型的Android手游基本都是Unity3D开发的。 有开发就有破解。 所以我们走着先。 内容 1.环境介绍(无聊选择跳过) 2.贝瑞快跑——金币初始...
  • 【文章标题】: 基于unity3d游戏的android版本逆向初探 【文章作者】: dreaman 【作者邮箱】: [email]dreaman_163@163.com[/email] 【作者主页】: https://github.com/dreamanlan 【软件名称】: 匿了 【软件...
  • unity3d引擎的游戏,重要的资源就是C#脚本,脚本是被打包到APK的assets目录下的一些dll文件,有的APP可能会对其加密,运行的时候再动态解密。可以通过HOOK libmono.so中的函数mono_image_open_from_data_with_name...
  • 本文介绍一下使用Unity开发游戏时,可以用到的一些插件,辅助游戏的开发效率! 1:Ultimate Mobile Pro 包含Unity与iOS和安卓原生api交互的插件,同时包含Admob插件,随意切换iOS和安卓部署,不需要更改任何代码。 ...
  • 1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题。 2. 第二步就是要了解我们要分析的是什么文件,很多0基础的...
  • 网易云易盾移动游戏安全技术专家陈士留在2018年Unity技术路演演讲内容中对这个问题有过比较详细的介绍,摘录如下:防止Unity3D代码被反编译其实就是常见的Unity手游风险中的破解风险。一、Unity面临的破解风险Unity...
  • 原软件下载地址:http://ng.d.cn/yidian/
  • 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题。 第二步就是要了解我们要分析的是什么文件,很多0基础的同学都...
  • 网上已经有很多文章讲解过Unity3d脚本DLL 解密,基本方法原理都差不多,就是通过HOOK或者调试下断mono_image_open_from_data_with_name这个函数拿到解密后的DLL。这些方法都需要比较专业的知识(Hook或者过反调试),...
  • 上篇的Unity3d DLL通用解密方法分享后,有同学反馈说,某讯的手游使用烧饼修改器搜索内存会强制退出。去年看的时候还没有反修改器功能的,应该是后来有功能升级了。  针对这种反修改器搜索的情况,我们来研究个新的...
  • =================== Unity3d资源反编译工具 DisUnity ================ 源码:https://github.com/ata4/disunity 需要配置下环境才能用,请度娘. 命令行工具,可以解包unity的 .assets 和 .unity3d ...
  • 本文主要介绍如何对unity3d引擎制作的游戏进行修改。包含了apk文件安装后在手机中的位置分析、修改游戏时遇见内联函数之坑时的解决办法,以及so文件的原理介绍与解析修改。并将实例教学如何修改unity3d游戏(想学...
1 2 3 4 5 ... 7
收藏数 139
精华内容 55
关键字:

unity3d手游逆向