首页
论坛
专栏
课程

[求助] 自己做的Unity游戏屡遭破解,请问是如何做到的.

oldking 2018-6-12 21:51 2571
Hello 求助大神给指点个方向. 跪谢.

我用Unity做了一款游戏. Update了几个版本 每个版本都被破解. 想了解一下 那位破解我游戏的大神是如何做到的.

我先说下我了解的破解思路

首先我游戏是il2cpp方式的. 所以应该是 Il2CppDumper 一下 libil2cpp.so 然后从里面找一些关键的key作为切入点.

然后直接IDA 修改, 然后Hook我相应的函数 做出mod来.

==================

我的策略是混淆代码,忽略其他方面的防御(也没这个能力,虽然用了360加固 和没用也没啥区别.)



前几个版本 代码混淆的不够彻底,并且代码中会存在一些敏感性的Key存留. 比如Attack, Blood Exp 等等

当前线上这个版本 我自认为

- 80%以上的代码 应该都被混淆了. 包括Mono自己的MonoBehaviour
- 对敏感性Key重新命名了
- 内置关键字符串也进行了加密
- 之前代码中的异常Log 比如 "Can't find item id: {0} xxx" 也全部替换为了 "DfKUkjblMyAJliCf {0} xxx" 这种以随机字符串为key的输出.


==================

但是游戏依旧还是被破解 加入Mod了. 并且 是从很多方向全部加入Mod了

-全图
-移动加速
-不减血
-随意加武器
等等.

这些逻辑处理点在代码中分部的都很散.

===================

我想知道的是

这位大神是如何找到 切入点的呢?

是动态调试么? 可以这些逻辑不像那种安卓应用, 和游戏逻辑都绑的很死, 如何能动态调试呢?

或者是因为我之前 没有加密这么全面的版本 已经泄露出去了. 可以基于原版和新版进行比较, 从而在新版中找到相应的突破口? 


=====================


对于这种破解,应该如何防护呢? 我的意思是 在代码层面上如何防护呢? 换句话说 就是写代码时候应该注意些什么?

从外围 加固啊, 反动态调试啊. 这些有点太深了. 我觉得就算我在这些方面努力努力 可能大于大神来说 也和裸奔没啥区别吧.

毕竟 那么多第三方加固 感觉和纸糊的没啥区别啊...


跪谢大神指导.

APK下载地址: https://download.jedi-games.com/apkstore/CN-g_xczwc/XCZWC_V1.10_GW.apk









快讯:[看雪招聘]十八年来,看雪平台输出了大量安全人才,影响三代安全人才!

最新回复 (21)
白菜大哥 2018-6-13 00:12
2
你这样搞,自己越写越费劲呀。好好的代码越写越乱,逐渐自己的游戏都废了。如果不是网游,改就改吧
aabiaobiao 2018-6-13 02:28
3
111
最后于 2018-6-13 03:53 被aabiaobiao编辑 ,原因:
o冰柠檬o 2018-6-13 08:56
4
就像你自己说的,对于大神来说,都是裸奔。
如果是单机游戏,那没啥好办法。
如果是网游,可以在服务端做校验,增加外挂检测啥的。
bjhrwzh 2018-6-13 09:48
5
可以拿  mod  分析一下,看看他的实现,  针对mod可以制作一些检测手段。  如果存在不混淆版本,有可能作为混淆函数比对的参考,建议可以把核心逻辑变化一下。
万剑归宗 2018-6-13 10:01
6
你要知道,不能反编译的游戏都能破解,做出来外挂
更何况你这样的.
RorschachL 2018-6-13 10:17
7
1、混淆的不能混淆接口API吧,而且根本没必要看你混淆的代码
2、破解不一定要反编译,动态注入一样能修改数据,更不要说现在市面上那么多修改器加速器,搜数据值就行了
3、加固请对症下药,U3D游戏应该选择对应的加固方案
猪会被杀掉 2018-6-13 11:39
8
有请各个APK加固厂商过来打个广告。
最后于 2018-6-13 11:39 被猪会被杀掉编辑 ,原因:
oldking 2018-6-13 12:16
9
感谢各位回复

-  新游戏会更多的加入服务端的验证,  对于现有的项目  其实更多的还是技术上的好奇  大神是如何做到的.
-  内存修改这部分,当前项目应该已经防护的挺好的了.  关键位置的数据都有修改防护并且还有修改检测.    这部分相对容易一些

现在有两点比较疑惑的地方

-  如果大神是靠之前我没有完全混淆的代码和现有代码做对比  ,  这个在IDA里面很方便做到么?  还是有什么其他的工具?

-  @RorschachL  提到的不反编译直接动态注入  这个不是很理解,  比如Mod中有一项是  攻击伤害x2  的修改.  我理解的方式是他需要找到我那个攻击力计算的具体代码,然后Hook住那个函数.  在函数返回时候做相应处理.  但是这个函数他又是咋找到的呢?

关于IDA动态调试,我没自己试过  不过对于一个游戏项目  每帧都有多个Actor在不停的Tick,  下断点然后找出主角相关的逻辑  这个应该不容易吧.(并且这还是该Mod诸多修改中的其中一小项)

我的意思是  我们的游戏也没那么出名,然后看破解更新的时间也很快.  应该就是大神没事儿  随意搞搞,  分分钟就给我破了那种... 

是不是还有什么  我不太了解的破解方式?  麻烦哪位大神能给指个大概方向.  我好学习学习  开阔开阔自己的眼界

再次感谢各位回复.

PS:  哪位大神有兴趣可以试着破解一下我链接给出的那个APK么? 
RorschachL 2018-6-13 16:06
10
oldking 感谢各位回复[em_1] - 新游戏会更多的加入服务端的验证, 对于现有的项目 其实更多的还是技术上的好奇 大神是如何做到的. - 内存修改这部分,当前项目应该已经防护的挺好的了. 关键位置的 ...
现在外挂工具党很多的,都不需要懂什么技术,你说的破解,比如这样算吗

xieyuan谢源 2018-6-13 16:18
11
我们公司游戏产品就是  用的  爱加密  的第六代加固,说什么双重VMP保护技术,我也不太懂。目前还没发现盗版的游戏,可能是游戏不够火把,哈哈
iwang王大军 2018-6-13 16:24
12
多跟逆向大牛交流一下,基本都会给出意见,之后游戏会加强不少
ForrestV 2018-6-13 16:37
13
楼主所说的被破解,到底指的包被破了?还是发现作弊了?

就像楼上几位说的,对于手游,大多数都不是直接破解你的包,通过外挂就能够作弊
oldking 2018-6-13 19:01
14
ForrestV 楼主所说的被破解,到底指的包被破了?还是发现作弊了? 就像楼上几位说的,对于手游,大多数都不是直接破解你的包,通过外挂就能够作弊
破解可以  搜下  GG大玩家  里面是挂Mod    可以加速,  无敌,  攻击x2,  任意获得物品    超长攻击距离等等..   
oldking 2018-6-13 19:03
15
RorschachL 现在外挂工具党很多的,都不需要懂什么技术,你说的破解,比如这样算吗
@RorschachL 
你这个是  改内存的么?  这个应该只是改了一个显示层的数字吧,  逻辑层  八门神器  GG修改器  那些  直接搜应该是搜不到...
RorschachL 2018-6-13 19:47
16
不是显示层的,这数字一直再降,GG大玩家都能修改原理差不多  @oldking
oldking 2018-6-13 21:48
17
晕  我刚才用八门神器试了一下  直接搜索数值就能改了..      看来我之前测试的那个修改器  有点low了  哈..    这个我再去研究研究.    为啥他能直接查到我真实数值的...      不过GG大玩家的修改原理  应该和这个不同吧  @RorschachL

毕竟像有些功能的修改,  比如随意加物品,  超远距离攻击    这些有数值  但是是Meta文件  加载进来就不会变的  靠改变搜索应该是搜不到的.
RorschachL 2018-6-13 22:03
18
oldking 晕 我刚才用八门神器试了一下 直接搜索数值就能改了..[em_2] 看来我之前测试的那个修改器 有点low了 哈.. 这个我再去研究研究. 为啥他能直接查到我真实数值的... 不过GG大玩 ...
gg大玩家只是搜索的方式不同,但最终结果还是对内存修改,有些固定的数值确实通过改变数值无法得到,但既然都是固定的,每次加载的位置可能差不多,他可以一步步尝试进行修改
oldking 2018-6-13 22:10
19
RorschachL gg大玩家只是搜索的方式不同,但最终结果还是对内存修改,有些固定的数值确实通过改变数值无法得到,但既然都是固定的,每次加载的位置可能差不多,他可以一步步尝试进行修改
不会不会  如果GG要是用这种方式搞  那么多游戏  要搞死他们了..  并且有些是直接Hack掉了我相关的业务逻辑的.    比如全地图解锁,  然后加任意物品  他们是直接有按钮  点一下就会  调用到我底层的加物品逻辑.  这个靠改内存应该是实现不了的.
ForrestV 2018-6-14 10:31
20
oldking 破解可以 搜下 GG大玩家 里面是挂Mod 可以加速, 无敌, 攻击x2, 任意获得物品 超长攻击距离等等..
几乎所有的外挂都需要root权限,除了做基础防护之外,你还需要对APP当前运行的环境做检测,root、模拟器、等
oldking 2018-6-14 10:39
21
ForrestV 几乎所有的外挂都需要root权限,除了做基础防护之外,你还需要对APP当前运行的环境做检测,root、模拟器、等
现在应该已经不用root权限了    可以看下  八门神器  还有GG大玩家.    我看他们的方式  应该是自己起了一个沙盒环境(这就是你说的模拟器吧?), 
然后app直接运行在沙盒环境中.  这块不是很了解..  忽胡乱猜测的.   
但是现在  确实各种Mod和内存修改  都  无需Root权限即可.  只需一个悬浮窗权限就行了.
ForrestV 2018-6-14 12:02
22
oldking 现在应该已经不用root权限了[em_1] 可以看下 八门神器 还有GG大玩家. 我看他们的方式 应该是自己起了一个沙盒环境(这就是你说的模拟器吧?), 然后app直接运行在沙盒环境中. 这块 ...
跟悬浮窗没关系。

它们想要运行时修改你,必须有相应的权限:root(对应root手机……很多外挂后台会主动root设备的)、或同级权限(更多的是双开,也就是你说的沙箱)、或PC上的模拟器(这种模拟器会给root权限)

不管是数值修改,还是什么外挂脚本,本质上都是修改你的内存,有权限修改是第一步
返回