unity studio怎么unity破解版发布游戏unity apk游戏

Android&Unity3D游戏破解之Reflector基本用法
最近,越来越多的Android游戏利用Unity3D引擎编写,游戏逻辑被集结在dll文件中,比如血量的增减、人物的状态、金币的增减、场景的变换等等,都以值的形式,按照特有逻辑存放在dll里面。反编译APK以后,这个关键的dll是
\assets\bin\Data\Managed 目录下的 Assembly-CSharp.dll 和
Assembly-CSharp-firstpass.dll
。我们通过修改它们可以达到比如初始金币无限、人物秒杀、不减血等破解效果。由于dll本身是C#.NET语言编写,所以我们今天主要是介绍反编译C#的强大工具——Reflector的基本用法,它可以将IL转换成简单易读的高级语言。
一、程序的载入
打开程序的时候,Reflector会默认呈现上次打开的程序及关闭时的窗口状态,逐一点击每一个节点,然后Delete可快速删除。载入新的程序直接拖入即可。Reflector同样提供自寻入口处的功能:在程序集节点上单击右键,选择“Go
To Entry Point”,便自动来到程序的入口方法 Main。
二、关键词的搜索
在Reflector中,搜索关键词的操作是:Tools-&Search
或者直接快捷键F3。其支持三种对象的搜索,分别是类型Type的名称、成员/方法Method的名称和字符串及常量String or
constant。两种匹配方式:模糊匹配和完全匹配。匹配方式的选择是在搜索框最右边的等号,选择则为完全搜索,不选中则是模糊。双击搜索结果即来到相应的代码处。
三、Analyze(分析)
Reflector具有独特的分析功能,在每一个节点右键会出现Analyze(分析)选项。并且方法节点和字符串节点分析的内容有差别。比如对于方法节点的分析有Depends
On该方法调用了哪些方法和Used By该方法被哪些方法调用;对于字符串节点还会有Assigned
By被赋值。如果要查看具体的引用或者定义该节点的代码,在相应选项的索引出右键选择“Go To Member”。
Reflector并没有提供直接修改转换后的高级语言来达到目的的功能,所以我们要用到Reflexil的插件。但是这个插件也是修改IL语言,这对于没有.NET编程经验的人来说确实困难,所以我在上一篇的博文中详细介绍了MSIL指令。这样对修改此类程序有很大的帮助。以鬼哥的实例中的一段代码表示:
private void
&&& if (this.Eu
this.Eu = 0;
&&& if (this.EV
this.EV = 0;
其在Reflexil插件中的显示,对着MSIL指令,红字已经标出其含义。为:
修改数据的时候,在要修改的那一行右键选择“Edit”具体方法见下图:
如果OpCode为ldc.i4.s,根据MSIL的指令,是短指令int8。此时Operand
type选择“SByte”,Operand的取值范围为-128~127。
如果OpCode为ldc.i4,Operand
type可以为int32,int64等,其中int32的Operand的取值范围-~,完全能够满足修改的需要。
如果修改失败,常见的是范围错误,该插件会弹出一个提示框,然后
同样,利用Reflexil插件还可以做的修改有跳转的转向、流程的删除、字符串的编辑等等。
参考文章:
听鬼哥说故事之U3D游戏破解分析:
NET破解之数字和字符串修改:
NET破解之第四课(C#的if-else分析):
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Unity - Apk包的代码与资源提取
时间: 01:24:45
&&&& 阅读:265
&&&& 评论:
&&&& 收藏:0
标签:  最近在研究如何给Unity游戏进行加密,让别人不能轻易破解你的apk包,不过网上的加密方法都是有对应的破解方法~_~!!结果加密方法没找到好的,逆向工程倒会了不少。今天就来讲解如何提取一个没做任何保护的apk包中的资源和代码。
  (1)打开apk包
  首先,将你的apk包重命名为zip或者rar类型的文件,然后进行解压缩,如下:
重命名为,然后进行解压缩,得到如下的目录内容:
各个部分的说明如下表:
Unity游戏里面的资源和代码
arm和x86需要的so文件
存放icon等资源
AndroidManifest.xml
classes.dex
Android Dalvik字节码
resources.arsc
编译后的二进制资源文件
我们主要关注的是assets目录,里面有我们想要的资源和代码。
  (2)提取代码
  Unity把我们大部分的代码都放到了这个dll文件中(当然还有其他代码放到了first-pass之类的代码,但不是主要的),我们可以在assets\bin\Data\Managed这个路径下找到所有需要的dll文件。要解析dll文件,我用到了这个软件(自行百度下载),用该软件打开得到以下这样的界面:
通过点击右键进行导出,选好导出目录,等待一会,就能得到以下的源代码:
我的测试项目就只写了一个Test.cs,可以看见上面已经成功导出了,打开一看:
我滴乖乖,完全和我写的一模一样,一点不变地导出来了。(由此可见代码混淆和加密的重要性了)
  (3)提取资源
  要提取资源,我们需要用到Unity Studio,可在他的Github上下载。
&打开Unity Studio,点File/Load folder,选中assets\bin\Data该目录,然后就能得到如下界面:
其中Scene Hierarchy可以查看游戏里面场景的分布情况,而Asset List可以查看资源。
比如我的测试工程里面,只在空场景里放了一个汽车模型,可以从这个文件分析出我的场景结构如下:
而打开Asset List,可以找到我放进去的一张蓝色按钮贴图:
当然,除了贴图,像音频文件、xml文件、着色器等都能查看到,不过模型目测不能提取出来(这就要用disunity了)
  总结:unity游戏太容易被分析出来了,如果项目十分重要,那代码混淆、加密等工作还是十分重要的。
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
18:42:46 上传
步骤二:确保安装了
Java JDK步骤三:获取可以破解的源文件
首先我们需要Android的 .apk 或者 IOS的
.ipa&&或者网页游戏的.unity3d&&和 .boundle 文件Android:&&先看看 Android 的 apk 安装包吧,把下好的文件后缀名.apk
直接改成 .rar 解压到单独的文件夹&&可以反编译的文件的路径就在:解压后的文件夹\assets\bin\DataIOS: ios的 ipa的安装包 也是同样的原理 把.ipa 改成 .rar 然后解压到单独的文件夹
可以反编译的文件的路径就在: 解压后的文件夹\Payload\godoflight.app\Data&到此需要做的准备基本完成下面我们开始反编译。步骤四:&&打开cmd 进入文件夹中&&
19:09:45 上传
下面是disunity_v0.3.4中的目录结构&&
19:08:14 上传
然后我们可以用命令 disunity extract
需要反编译的文件的路径\*.* 就可以了 我的反编译文件放在了C:\zhaolong\test\1\Payload\wcat.app\Data
这个文件夹中 用 *.* 就可以把里面的文件全部反编译 当然无法识别的文件是没法反编出来的&&&&&&
19:15:51 上传
从.ipa和.apk中解压出来的资源 貌似只有
.assets 文件可以反编译出来 &&
19:17:01 上传
从网页上下载的.boundle和.unity3d
文件也可以放到一个文件夹 用上面的方法 反编译出来。当然 单个文件的话 把*.* 替换成想要反编译的文件就可以了
以上就是整个反编译的过程 反编译出来的文件&&会分几个类别&&分别放到以下文件夹中 &&
19:43:09 上传
audioclip 是音频文件
cubemap这不太清楚 里面存放的好像是贴图文件font 是 字体mesh 是 模型文件 .obj shader 是
里面是.shader文件 Texture2d 是 贴图文件 本文参考:
阅读(4699)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'unity3d提取游戏资源',
blogAbstract:'首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa \n中的游戏资源。教我们初步的破解unity3d资源的基本方法附上原帖的链接:
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}安卓Unity3d游戏的逆向破解-Unity3D培训机构_达内Unity3D培训
Unity3D培训
美国上市公司 · 亿元级外企unity3D培训企业
全国服务监督电话
&&&&&&安卓Unity3d游戏的逆向破解-Unity3D培训机构
安卓Unity3d游戏的逆向破解-Unity3D培训机构
怎么判定它是Unity游戏呢?一般的路径格式是这样的assets\bin\Data\Managed[如果是个Unity游戏却找不到dll文件那么骚年放弃吧。。。]...
使用到的工具
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强制设置为了
回到dll文件名这里,右键鼠标移到Reflexil v1.6保存dll
保存之后,F5刷新一下,如下图,代码中显示的是强制设置为了
同理,我们也将等级CurrentLevel也强制设置为20
保存dll文件用IDE编译出来apk 看看效果
好了,初始金币和等级都修改成功
步骤回顾:
1、反编译apk
2、利用.NET Reflector反编译dll
3、通过Unity3d的PlayerPrefs方法了解其写入读取过程
4、通过查找存档xml文件找到相应控制条件
5、在dll中找到相应位置修改代码段
本文主要介绍安卓的本地数据的修改方法。
推荐文章(03-13)(10-08)(10-08)(10-08)(10-08)(12-24)(05-27)(01-07)(01-07)(01-06)
(01月13日)
(03月30日)
(03月30日)
(03月28日)
(03月24日)
(03月23日)
unity3D培训课程
unity3D教程
达内时代科技集团有限公司 版权所有 京ICP证8000853号-56}

我要回帖

更多关于 apk手机游戏破解版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信