00004 死亡阴影.0001:配置文件的Unity包与修改

原创 2017年03月20日 12:52:03

00004 死亡阴影.0001:配置文件的Unity包与修改

         一想起昨晚的事我就郁闷,哎,我的这颗玻璃心喔。

         我的原话大概是这样的:“你好,我最近研究了一下你们的游戏,发现很容易就被修改掉了。你们需要破解与防破解方面的咨询吗?由于还有其他一些游戏在防破解方面也犯了相同的错误,因此我将会把详细的修改过程发表在博客上,以给他们以及后来的开发者们抛个砖。为防止给你们造成重大的损失,请尽快修正、更新”。然后就再也没有然后了,客服二话不讲就将我踢出了QQ群。

         我不知道是不是我的说法给客服造成了什么误解。为了不造成坏影响,我没有在QQ群里发,还特意开小窗,给客服发的单独私聊。客服将我当骗子了?也许是游戏公司对自己的防破解手段很有信心,对我不屑一顾?我本来还想,我是否能够专门寻找游戏漏洞和防破解方面的不足,将它们提交给游戏的运营方或者开发者,并以此作为谋生的手段。没想到,死亡阴影的客服直接给了我当头一棒。我想到的最差的情况是对方不需要这类服务,他们自己就能搞定。但没想到的是,真实的结果却是二话不讲就将我踢了、二话不讲就将我踢了、二话不讲就将我踢了……

         抛开个人对客服的怨念不谈,下面简单说说死亡阴影在防破解上的好坏。

         首先,得明确一下这个游戏。对于大多数游戏而言,《XXX》就是《XXX》,不会让人存有误解。但也有一些游戏,他们名称雷同,但开发者不同、上架人不同,但其实确是同一个游戏。《死亡阴影》和《XX群侠传》就属此类。

         《英雄无敌三死亡阴影单机策略手游》、《死亡阴影-经典的单机策略战棋手游》、《英雄无敌3死亡阴影-经典的死亡冒险SLG……》、《末日之影-英雄收集探索单机游戏》、《魔法门之死亡之刃-再现经典的单机策略RPG游戏》……还有很多就不再一一列举了,重要的是,它们是同一个游戏、它们是同一个游戏、它们是同一个游戏!真不知道游戏公司是怎么想的,这是他们的运营策略吗?还是确实无力打击这些再打包者?

         我所研究的,是《魔法门之死亡之刃》,但经过验证,它的问题在其他游戏中也同样存在。

         《死亡阴影》有一点比较好,它没有Android版,并且,在iOS上,还将UnityC#代码内联到了app中,而非单独的dll文件(我对Unity研究不多,不知道这是默认的还是需要其他什么额外手段的)。

         由于iOS对代码有天然的加密(即使是越狱版,用ida反编译出来的函数名称,大多数情况都是sub_XXX,明显是被混淆过了的;OC代码有时正常,但很多时候这没啥鸟用),这给代码的静态研究带来了一定的困难。所以,想破解游戏的存档格式也不大容易。这对于从事存档买卖的灰色从业者来说,性价比就低了。也就懒得有人去捣鼓了。

         但是,光防住存档修改是然并卵的,其配置随随便便就能破了。

         老样子,打开iTunes登录自己的App Id下载游戏。我这下好的叫“魔法门之死亡之刃-1.0.ipa”。用WinRAR打开,浏览一下各个目录和文件,其中的“\Heroes.app\Data\Raw\config \allcsvinfo.unity3d”……解压,打开看看。

         那么,用什么打开?文本直接打开,乱码。——找工具吧。找到了两个:disunityUnityAssetsExplorer

         UnityAssetsExplorer打开allcsvinfo.unity3d,发现解析出错。于是用disunity解开:

disunity bundle unpack xxx\allcsvinfo.unity3d

         结果解出来一个CAB-5f4a061eca3bb4f66bc39b62ac71e648。这是一个神奇的文件。在Mac上用ultra edit打开,会自动检测为文本,并正常显示出中文。在Windows上用ultra edit打开,就自动检测为二进制文件,也不能显示中文。用UnityAssetsExplorer打开试试,还是无法正常解析。这没关系。就用二进制打开,然后将最前面的三个字节改为UTF-8 BOM头:EF BB BF,再用文本打开,就正常了:

G                      4.7.1f1

1                [1]          `         [1]   `   �� 1   1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 [1]       [1]       [1]      

   allcsvinfo            [1]              [1]          1   &5  

   allcsvinfo  �� 9         Achievement.csvP!  序号,名称,名称es,描述,描述es,奖励点数,关联计数ID,数值,图标,关联成就完成计数ID,奖励物品信息

ID,Name,NameES,Desc,DescES,RewardPoint,TaskID,Value,Icon,FinishTaskID,RewardItemInfo

int,string,string,string,string,int,int,int,string,int,string

1,恶魔稀客,Shadowmoon Valley 1,恶魔营地成功试炼5次。,Challenge 5 times in Shadowmoon Valley,1,501,5,Achieve_1,700,1*200|2*5

2,恶魔常客,Shadowmoon Valley 2,恶魔营地成功试炼20次。,Challenge 20 times in Shadowmoon Valley,1,501,20,Achieve_2,701,1*500|2*10

3,恶魔霸主,Shadowmoon Valley 3,恶魔营地成功试炼50次。,Challenge 50 times in Shadowmoon Valley,2,501,50,Achieve_3,702,1*1000|2*15

4,龙崖稀客,Death Mine 1,龙崖城堡成功试炼5次。,Challenge 5 times in Death Mine,1,502,5,Achieve_4,703,1*200|2*5

5,龙崖常客,Death Mine 2,龙崖城堡成功试炼20次。,Challenge 20 times in Death Mine,1,502,20,Achieve_5,704,1*500|2*10

6,龙崖霸主,Death Mine 3,龙崖城堡成功试炼50次。,Challenge 50 times in Death Mine,2,502,50,Achieve_6,705,1*1000|2*15

7,方舟稀客,Black Pearl 1,诺亚方舟成功试炼5次。,Challenge 5 times in Black Pearl,2,503,5,Achieve_7,706,1*200|2*5

8,方舟常客,Black Pearl 2,诺亚方舟成功试炼20次。,Challenge 20 times in Black Pearl,2,503,20,Achieve_8,707,1*500|2*10

9,方舟霸主,Black Pearl 3,诺亚方舟成功试炼50次。,Challenge 50 times in Black Pearl,3,503,50,Achieve_9,708,1*1000|2*15

……

         最前头有一些“乱码”,这是Unity的一些打包信息,具体是啥没研究,但其中的4.7.1f1表示的是使用的Unity版本。

         上面的红字“Achievement.csv”表示一个文件的开始。这是一个csv文件,我们可以将内容整理整理,单独拷贝出来,在用Excel打开:

         下面改就是了。那些奖励信息,应当不难懂吧。即使不懂,也可以对照游戏中的成就做个匹配,也就明白了。具体的我就不说了。

         Excel修改是容易的。但如何弄回到游戏中去呢?我们可以重新打包。但这个有点麻烦。这儿可以用一个简单点的方法:直接将修改后的内容覆盖到原包中。但这有一个问题,修改后的文件的长度很可能大于原来的长度。在这个具体的地方,我们可以去除或者减少一些没用的字符串。比如上图中的“描述es”字段。将这个字段的内容全部删除后,新内容就比原内容少很多了,对于不足的部分,我们可以用\n填充。

         这样弄了之后,我们得到了新的CAB-5f4a061eca3bb4f66bc39b62ac71e648文件,还要继续将它打包成allcsvinfo.unity3d。这个有点麻烦了,需要使用包属性文件才能打包。经过查找,包属性文件格式形如:

{

"compressed":true,

"signature":"UnityWeb",

"streamVersion":3,

"unityVersion":"3.x.x",

"unityRevision":"4.7.1f1",

"files":["CAB-5f4a061eca3bb4f66bc39b62ac71e648"]

}

         编辑好json文件,保存为allcsvinfo.json。在同目录下建立文件夹allcsvinfo,将CAB-5f4a061eca3bb4f66bc39b62ac71e648剪切过去,执行:

         disunity bundle pack ./allcsvinfo.json

         会生成新的allcsvinfo.unity3d

         下面安装修改后的游戏:

         如果是Windows,用WinRAR打开“魔法门之死亡之刃-1.0.ipa”文件,转到“\Heroes.app\Data\Raw\config\”将allcsvinfo.unity3d替换进去,关闭WinRAR。如果是然后在“魔法门之死亡之刃-1.0.ipa”上右键,选择使用PP助手5安装。

         如果是Mac,将“魔法门之死亡之刃-1.0.ipa”文件解压,转到“\Heroes.app\Data\Raw\config\”将allcsvinfo.unity3d替换进去。然后打卡xcode,在上面的菜单中选择“设备”,在弹出的窗口中,在左侧选择对应的手机,在右侧点击“+”按钮,选择“Heroes.app”(刚刚的解压目录),确认替换,ok,大功告成。

         来,欣赏一下修改的成果,以各种姿势:

         免费商城:

         1资源建造:

         随便解锁专属英雄:

         10倍属性兵种:

         1资源招兵:

         爬塔:——我也真是够无聊的,居然爬到了411层。

 

特别说明:虽然客服让我很恼火,但为降低游戏公司的损失,我是不会共享这个游戏补丁的。

Unity3D 使用XML进行简单的配置文件修改

1、首先是看看效果图: 开始运行项目如下图所示 2、点击绿色按钮修改配置文件再点击修改按钮成功修改方块颜色 3、接了下是实现的过程: 首先在Hierarchy创建一个cube,其次...
  • wcluojiji
  • wcluojiji
  • 2014年10月30日 21:11
  • 2809

Unity3D 角色死亡灰屏特效实现

1.第一步,首先新建一个unity3d项目,导入Standard Assets>ImageEffects 插件(灰屏效果有用到噢),格外还导入Demo用到的角色资源[Spider Green插件]...
  • lei_7103
  • lei_7103
  • 2017年02月13日 09:50
  • 1218

Unity3D使用溶解技术解决障碍物遮挡

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等...
  • jxw167
  • jxw167
  • 2017年07月10日 14:18
  • 1043

Unity局部高效实时阴影的思考和实现

无意间看到一篇文章,说是Unity5 demo中为了实现角色的良好阴影,单独给角色设计了一个角色阴影系统。而且使用的是比较老的技术,但效果很好。其实在很多时候,我们需要的并不是万能的阴影光照系统,而是...
  • yxriyin
  • yxriyin
  • 2015年12月03日 18:00
  • 5620

修改jar包中的配置文件

使用unzip修改1、解包至当前目录tmp子目录下
  • young_kim1
  • young_kim1
  • 2016年01月08日 13:50
  • 5145

Unity移动端动态阴影总结

本文作者主要对Unity移动端动态阴影进行了一些总结。对各种不同阴影的构建作了简单的介绍。欢迎大家共同讨论。...
  • UWA4D
  • UWA4D
  • 2017年06月12日 10:18
  • 1321

Unity3D【新手问题】阴影效果不显示的原因

Unity 不显示阴影的原因: 模型尺寸太大了,镜头比较远 把模型缩小,镜头一定要拉到最近才能看到 这是我遇到的问题和解决方法,另外一定要设置 Directional light 的 sha...
  • zsjangel
  • zsjangel
  • 2016年06月11日 21:31
  • 6622

Unity 3D中的阴影设置

在Unity 3D中,经常需要用到光照阴影,即Directional Light的Shadow,Shadow分为Hard Shadow和Soft Shadow。区别是Soft Shadow的阴影边缘比...
  • fang_tang_
  • fang_tang_
  • 2014年12月12日 17:55
  • 1382

Unity3D手游开发日记(1) - 移动平台实时阴影方案

自从去了某大公司,工作环境比较封闭,就没写过博客了,离开以后,开发移动游戏,相对自由,又可以重操旧业,分享一下自己的心得. 阴影这个东西,说来就话长了,很多年前人们就开始研究出各种阴影技术,但都存在各...
  • qq18052887
  • qq18052887
  • 2015年12月19日 14:26
  • 9163

unity移动平台阴影解决方案

unity移动平台角色阴影解决方案Projector Shadow制作思路:主要是利用一个正交的camera去获取阴影模型的体面,赋予给创建的一个rendertexture,然后利用projector...
  • u010943777
  • u010943777
  • 2016年01月15日 13:59
  • 2303
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:00004 死亡阴影.0001:配置文件的Unity包与修改
举报原因:
原因补充:

(最多只允许输入30个字)