使用到的工具
ApkToolBox
.NET Reflector
Reflexil(.NET程序编辑器)
怎么判定它是Unity游戏呢
一般的路径格式是这样的assets\bin\Data\Managed
[如果是个Unity游戏却找不到dll文件那么骚年放弃吧。。。]

一般情况下都是修改上图的这个dll文件
[如果想要搜索的东西不在这个dll文件可借用UltraEdit、EditPlus、Notepad++等常用编辑工具辅助搜索来判断对哪个dll文件进行修改
以Jam City这款游戏为例来作以下分析:
内购破解部分就不讲了,因为下面将要修改的比内购的要来的痛快
用ApkToolBox反编译之后找到dll文件就是上图的那个文件用.NET Reflector打开
[.NET Reflector工具的基本使用方法请自行百度
在手机上试玩了下这个游戏 篮板和抢断的路线根本就不明确嘛。。。
金币-Coin、等级-Level 那么着重修改这两个值吧
按下F3搜索,切换到方法搜索

搜到的内容这么多 改哪个呢 头疼啊!
等等!unity3d提供的有存档类啊!这是一大重要的切入点O(∩_∩)O~
unity3d提供了一个用于本地持久化保存与读取的类——PlayerPrefs。其工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
PlayerPrefs类支持3种数据类型的保存和读取,浮点型,整形,和字符串型。
游戏本地存档的主要方式无外乎xml文件和数据库存储两种,我们安装运行该游戏并简单的通过买物品和升级改变金币和等级的数值。
然后通过R.E.管理器进入/data/data/com.batteryacid.jamcity/shared_prefs/
果然我们发现了命名包含playerprefs的xml存档文件

查看该文件,如下图,我们发现了与游戏中数值对应的两个 字符串-整型 键值对条目:
金币Currency和等级CurrentLevel

我们回到.NET Reflector 切换到类搜索,搜索PlayerPrefs得到下图结果,双击进入位于Assembly-CSharp集中的PlayerPrefsx类

双击进入GetInt(String,Int32)整型方法,Tools ---- reflexil v1.6 开启reflexil工具

然后在第一行“Create new...”新建字符串类型(OpCade代码为ldstr),最后“Insert before select”插入到第一行前

在第二行新建整型(OpCade代码为ldc.i4)

在第三行新建方法(OpCade代码为call),
并在PlayerPrefsx类中选择GetInt(System.String,System.Int32)方法

这样,我们就将Currency强制设置为66666668了
回到dll文件名这里,右键鼠标移到Reflexil v1.6保存dll

保存之后,F5刷新一下,如下图,代码中显示的是强制设置为了66666668

同理,我们也将等级CurrentLevel也强制设置为20

保存dll文件用IDE编译出来apk 看看效果

好了,初始金币和等级都修改成功
步骤回顾:
1、反编译apk
2、利用.NET Reflector反编译dll
3、通过Unity3d的PlayerPrefs方法了解其写入读取过程
4、通过查找存档xml文件找到相应控制条件
5、在dll中找到相应位置修改代码段

安卓Unity3d游戏的逆向破解的更多相关文章

  1. 基于unity3d游戏的android版本逆向初探

    https://bbs.pediy.com/thread-212532.htm [文章标题]: 基于unity3d游戏的android版本逆向初探 [文章作者]: dreaman [作者邮箱]: [e ...

  2. [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新全然解读

    ---------------------------------------------------------------------------------------------------- ...

  3. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  4. Unity3D游戏在iOS上因为trampolines闪退的原因与解决办法

    http://7dot9.com/?p=444 http://whydoidoit.com/2012/08/20/unity-serializer-mono-and-trampolines/ 确定具体 ...

  5. unity3d 游戏插件 溶解特效插件 - Dissolve Shader

    unity3d 游戏插件 溶解特效插件 - Dissolve Shader   链接: https://pan.baidu.com/s/1hr7w39U 密码: 3ed2

  6. 【MyEclipse 2015】 逆向破解实录系列【终】(纯研究)

    声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...

  7. 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)

    声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...

  8. 将Unity3D游戏移植到Android平台上

    将Unity3D游戏移植到Android平台是一件很容易的事情,只需要在File->Build Settings中选择Android平台,然后点击Switch Platform并Build出ap ...

  9. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

随机推荐

  1. json 文件打读取

    1.获取文件路径 /* * BookController.class.getClassLoader().getResource("static/json/book_nav.json" ...

  2. RPC服务治理框架(一)RPC技术

    一.RPC是什么 remote procedure call:远程过程调用 过程就是程序,像调用本地方法一样调用远程的过程 RPC采用Client-Server结构,通过request-respons ...

  3. 【JZOJ1913】【BZOJ2124】等差子序列

    description 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<-<pLen<=N (Len>=3), 使得A ...

  4. 【Shell】ps -ef 和ps aux

    两者没太大差别 追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同.现 ...

  5. 树莓派上安装boost库

    一.安装boost库 sudo apt-get install libboost-dev aptitude search boost 二.编写测试代码 #include <iostream> ...

  6. 【Flutter学习】页面布局之其它布局处理

    一,概述 Flutter中拥有30多种预定义的布局widget,常用的有Container.Padding.Center.Flex.Row.Colum.ListView.GridView.按照< ...

  7. 关于Burp Suite不能抓包的解决方法

    一.Burp Suite有时能抓到包,有时不能抓到包 解决方法: 出现这种问题的原因就是代理没有设置成全局的,只是设置成了局部的. 打开IE浏览器,依次打开工具->Internet 属性-> ...

  8. Least Common Ancestors

    /* Least Common Ancestors * Au: Small_Ash */ #include <bits/stdc++.h> using namespace std; con ...

  9. MySQl 截取函数 left(),right(),substring(),substring_index() 的用法

    1. 字符串截取:left(str, length) mysql> select left('sqlstudy.com', 3); +-------------------------+ | l ...

  10. 将已有的lng lat 字段转换成point类型字段

    利用拼接字符串转换point select GeomFromText(CONCAT('POINT(',lng,' ',lat,')')) from community limit 1; 插入字段到新表 ...