00004 死亡阴影.0001:配置文件的Unity包与修改
来源:互联网 发布:莫比乌斯环戒指知乎 编辑:程序博客网 时间:2024/05/19 16:38
00004 死亡阴影.0001:配置文件的Unity包与修改
一想起昨晚的事我就郁闷,哎,我的这颗玻璃心喔。
我的原话大概是这样的:“你好,我最近研究了一下你们的游戏,发现很容易就被修改掉了。你们需要破解与防破解方面的咨询吗?由于还有其他一些游戏在防破解方面也犯了相同的错误,因此我将会把详细的修改过程发表在博客上,以给他们以及后来的开发者们抛个砖。为防止给你们造成重大的损失,请尽快修正、更新”。然后就再也没有然后了,客服二话不讲就将我踢出了QQ群。
我不知道是不是我的说法给客服造成了什么误解。为了不造成坏影响,我没有在QQ群里发,还特意开小窗,给客服发的单独私聊。客服将我当骗子了?也许是游戏公司对自己的防破解手段很有信心,对我不屑一顾?我本来还想,我是否能够专门寻找游戏漏洞和防破解方面的不足,将它们提交给游戏的运营方或者开发者,并以此作为谋生的手段。没想到,死亡阴影的客服直接给了我当头一棒。我想到的最差的情况是对方不需要这类服务,他们自己就能搞定。但没想到的是,真实的结果却是二话不讲就将我踢了、二话不讲就将我踢了、二话不讲就将我踢了……
抛开个人对客服的怨念不谈,下面简单说说死亡阴影在防破解上的好坏。
首先,得明确一下这个游戏。对于大多数游戏而言,《XXX》就是《XXX》,不会让人存有误解。但也有一些游戏,他们名称雷同,但开发者不同、上架人不同,但其实确是同一个游戏。《死亡阴影》和《XX群侠传》就属此类。
《英雄无敌三死亡阴影单机策略手游》、《死亡阴影-经典的单机策略战棋手游》、《英雄无敌3死亡阴影-经典的死亡冒险SLG……》、《末日之影-英雄收集探索单机游戏》、《魔法门之死亡之刃-再现经典的单机策略RPG游戏》……还有很多就不再一一列举了,重要的是,它们是同一个游戏、它们是同一个游戏、它们是同一个游戏!真不知道游戏公司是怎么想的,这是他们的运营策略吗?还是确实无力打击这些再打包者?
我所研究的,是《魔法门之死亡之刃》,但经过验证,它的问题在其他游戏中也同样存在。
《死亡阴影》有一点比较好,它没有Android版,并且,在iOS上,还将Unity的C#代码内联到了app中,而非单独的dll文件(我对Unity研究不多,不知道这是默认的还是需要其他什么额外手段的)。
由于iOS对代码有天然的加密(即使是越狱版,用ida反编译出来的函数名称,大多数情况都是sub_XXX,明显是被混淆过了的;OC代码有时正常,但很多时候这没啥鸟用),这给代码的静态研究带来了一定的困难。所以,想破解游戏的存档格式也不大容易。这对于从事存档买卖的灰色从业者来说,性价比就低了。也就懒得有人去捣鼓了。
但是,光防住存档修改是然并卵的,其配置随随便便就能破了。
老样子,打开iTunes登录自己的App Id下载游戏。我这下好的叫“魔法门之死亡之刃-1.0.ipa”。用WinRAR打开,浏览一下各个目录和文件,其中的“\Heroes.app\Data\Raw\config \allcsvinfo.unity3d”……解压,打开看看。
那么,用什么打开?文本直接打开,乱码。——找工具吧。找到了两个:disunity和UnityAssetsExplorer。
用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层。
特别说明:虽然客服让我很恼火,但为降低游戏公司的损失,我是不会共享这个游戏补丁的。
- 00004 死亡阴影.0001:配置文件的Unity包与修改
- 死亡阴影的客服脑子进水了?
- OpenSolaris 的"死亡"与"新生"
- 对象的生存与死亡
- 湖南ERP走出“死亡阴影”
- Unity 阴影
- 修改jar包中的配置文件
- jar包中配置文件修改
- XML配置文件的读取与修改
- XML配置文件的读取与修改
- 安装包中动态修改配置文件的小错误
- unity 使用Camera模拟人物的阴影
- Unity中动态阴影的制作
- Unity实时阴影的内部实现
- 进程的诞生与死亡的整个过程
- 一个进程的诞生与死亡
- MFC程序的诞生与死亡
- 黑客的过去、未来与死亡
- 数据库-数据库、基本表、视图的创建,触发器的使用
- hdu 5877
- Tomcat集群-->Cluter节点配置
- 【ZCMU1895】Landlocked(最短路)
- hdu1003 Max Sum
- 00004 死亡阴影.0001:配置文件的Unity包与修改
- window7右下角向上的小图标不见了
- 立方体多个材质
- K题
- laravel administrator一款通用的后台插件使用
- java 发送邮件
- 关于Linux系统中 Access Modify Change 三个时间的理解
- AutoMapper5.0创建对象方法更新
- sql批处理