首页
社区
课程
招聘
[原创]unity3d手游破解(一)
发表于: 2018-4-19 14:37 17046

[原创]unity3d手游破解(一)

2018-4-19 14:37
17046
最近找乐子破解了点手游玩玩,顺便分享一下,目标APK--发条XX。
1、大致分析
拿到APK先看看libs和assets,发现有libmono.so以及\assets\bin\Data\Managed\Assembly-CSharp.dll,可以确定是unity3d手游,可以尝试修改 Assembly-CSharp.dll来破解游戏,不过发条英雄的这个dll加密了,所以需要先解密。

2、解密dll
把 libmono.so扔进ida,找到mono_image_open_from_data_with_name函数,F5查看发现了解密代码:

在这个函数先判断加载的dll是否包含ssem字符串,接着判断前两个字节是否等于82(0x52),77(0x4d),因此可以确定下面的for循环是解密代码,比较简单,抄下来自己写一个解密程序(附件有一份),然后对这个 Assembly-CSharp.dll进行解密。
3、修改dll
把 Assembly-CSharp.dll扔进Reflector+reflexil环境进行修改(不会的同学百度学习一下),找到关键函数get_DamageValue,直接改成返回100W,然后攻击就变成了100W。
不过这个时候怪物攻击也是100W,因此再找到Player的applyDamage函数,修改这个函数直接ret,然后玩家就无敌了。

最后保存为一个新的dll并替换掉之前APK里面的 Assembly-CSharp.dll,解密后的dll头部不等于82(0x52),77(0x4d),因此so可以直接加载。
4、运行
重新签名,打包成新的APK,安装运行,一刀100W。

5、结束语
服务器信赖客户端的计算结果就导致这种情况,不过服务器加强数据校验也能检测出来。有兴趣的同学可以去改改dll实现竞技场百战百胜。


[课程]FART 脱壳王!加量不加价!FART作者讲授!

最后于 2018-4-25 14:35 被王正飞编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
最新回复 (6)
雪    币: 237
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mark
最后于 2019-6-10 07:44 被酱油啊啊啊啊编辑 ,原因:
2018-4-19 21:08
0
雪    币: 262
活跃值: (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
重新签名,被检测到签名非法,怎么办。
2018-4-29 18:46
0
雪    币: 287
活跃值: (485)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
楼主,为什么我编译你的解密代码都有指针转换错误啊?

2018-7-16 14:21
0
雪    币: 287
活跃值: (485)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
我知道了,是要在LINUX下编译,从头文件可知
2018-7-16 15:39
0
雪    币: 287
活跃值: (485)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
楼主,又出现了一个问题,为什么解密出来的文件还是不能正确打开啊?
如何确定是否解密成功?
2018-7-16 16:20
0
雪    币: 287
活跃值: (485)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
酱油啊啊啊啊 楼主联系方式多少[em_27]
https://www.cnblogs.com/findyou/p/3801273.html
1楼看这里,生成密钥再重新打包
2018-7-17 17:48
0
游客
登录 | 注册 方可回帖
返回
//