上周我 app 用户群来了一位不速之客,发了一张图片

我一看,我艹,这不被破解了嘛。 随即我踢了他,然后当天下午加了他 wx ,他同意了。 整个聊天过程没有急眼,他还表明破解的这个包没有流传出去。 因为那个人只愿出几十块钱,他肯定不会成交的,纯试试水,就破了。
从聊天记录我总结出以下几点:
1:他不懂安卓代码,纯靠几个工具 [其中有 MT 管理器[狗东西,开发者天敌]] 就能快速重签打包,我在 Java 和 cpp 中有几个签名验证的埋点,他依然能打包,并正常运行。
2:我的 app 核心功能要用到安装包中的本地带密 zip ,解压密码由后台配置信息接口返回,每个版本的安装包中的 zip 解压密码都不一致,所以我故意改了后台配置信息接口中的密码,他破解的老包功能依然正常使用,我轻描淡写问了他,他说就一个工具就能搞定。
3:他还能破包后加卡密弹窗,说这是基操。视频链接: https://m.okjike.com/originalPosts/69493b881cc9bc8e54a2608d?s=eyJ1IjoiNjM1Nzg4ZjM0N2RkNjRhN2Y3Y2RiMTk0In0%3D
经过几天的 v 站查帖和看 B 站视频,我知道业务逻辑在本地是无法完全防破解的,只是有几点疑问。
1:加卡密弹窗的云注入平台为爱发电?就没人投诉吗?
2:他破解的包为什么不受后端动态解压密码控制?如果绕过校检本地如何解压成功呢?
101
v1 4 天前
南山必胜客:只有律师函是靠谱的
|
102
treblex 4 天前 via iPhone
找他合作一下,一边卖破解版,一边更新,隔段时间继续破解🌚破解当做营销手段就好了
|
104
zengxs 4 天前
|
105
gam2046 4 天前
@zengxs 唔,我们现在已经不考虑华为的设备了,老鸿蒙官方也基本不维护了,新鸿蒙本身也和 Android 脱钩了。
至于 hook ,可以明示下,可以怎么欺骗过服务端校验呢,本身设备上是拿不到签发证书的,而解锁状态也是由 TEE 写入的,设备上 hook 出来的证书链,也会载明设备已经解除 bootloader 锁,本质上就是依靠 TEE 签出的包名、应用签名、证书链来校验的。对于设备已经解锁的用户,我这里是直接拒绝使用,本身这部分用户占比就很低。 |
106
People11 4 天前 via Android
现在的一键过签都很强力的,hook PM ,IO 重定向强制读原包信息都是基本操作了,你要对抗就得上一些非常规手段,例如校验内存中的 dex ,多维度校验 application 入口,热更一个 vm 从外部校验,然后把签名校验逻辑藏在某些组件的逻辑中,例如签名校验不通过就打断 mmkv 的解密而不是直接闪退弹窗什么的,让破解者诊断成本直线上升。当然你想图省事直接上数字加固,这玩意虽然能一键脱但没法一键修,并且工具也不好找,总之让破解者的成本上升。
|
108
zengxs 3 天前
@gam2046 #105 另外这个 30% 比例是按安卓兼容的设备算得(老鸿蒙和荣耀设备,不包括纯血鸿蒙),其他主流设备走 TEE 逻辑都没啥问题,可能还会有 5% 左右设备有问题。如果能舍弃掉这部分设备的话,TEE 的逻辑问题不大。
但是安全性用技术手段是解决不了,只要涉及到逆向的对抗,本地技术手段基本都没啥用。还是要考虑用别的手段来防止破解,比如核心逻辑放到服务端,或者调整产品策略让灰产无利可图,具体要视产品情况而定。 |
109
jeesk 3 天前
1. 联网校验,双向 ssl 通信
2. apk,classloader 教研 3. root 校验 校验到有问题,不要说出来,你只需要做一做手脚,对方毫不知情的情况下,玩一些黑魔法,对方心态就会崩溃。 埋下陷阱, 比如直接把 key 光明正大的写到,当对方真的用这个 key 去操作的时候,说明对方真的在搞你, 然后你就可以标记为非法用户,慢慢玩对方就行了。 比如任务进行到一半卡住了,前几个识别都没问题,随机出问题。 |
110
stinkytofux 3 天前
@gam2046 #105 你拒绝解除 bootloader 锁的设备使用 app 这个操作就有很多规避方法了. 你的判断函数是不可信的, 包括判断 root 之类的, 函数的返回值都可以伪造. 用重打包技术也无需解锁 root 手机, 注入代码跟你的 app 同进程了. 跟彻底的还可以自己编译安卓系统, 那真的是随便改源码随便注入了, APP 端的检测形同虚设.
|
111
jeesk 3 天前
总的来说就是,对方破解,让你心态崩了, 其实你完全可以对等回击, 让对方心态崩就行了。 不要让对方觉得无法破解,而是一层套一层,让对方以为破解了, 然后后面出现更多的坑, 让对方猜, 到底破解了没。
|
112
liyafe1997 3 天前
@gam2046 你服务器校验啥?国产安卓设备又没有一个统一的可信根,相当一部分设备(尤其低端/山寨机)不搭载 GMS 不用 Google 根证书。
|
113
mrzx 3 天前
笑死了,zip 加密是最好破解的。。。你们作为程序员竟然不知道。。。
ZIP 底层有个算法漏洞,不管你设多强力的密码,我也能破解掉。。 换个 7z 的压缩格式。并且加密采用 AES-256 密码里包含数字,特殊符号,大小写,密码长度在 24 位以上。你让它破解试试看? |
114
mrzx 3 天前
果然是隔行如隔山,计算机里细分起来,其实分很多行业。
而自然很多程序员会以为在计算机领域自己啥都懂。是站在计算机顶尖的存在。。。。其实,他们了解的还是太少了。。 |
115
realpg PRO @pipixiarwksb #97
核心逻辑放远程, 联网调逻辑 |
116
aino 3 天前
@Gilfoyle26 #42 错了,行内人告诉你,一般安卓逆不过去的,都是直接去逆 ios ,ios 的防护少的很多
|
118
Lujango 3 天前
做成在线版呢,就是数据交互都会在云端。
|
119
workshop 3 天前
apk 没加固么
|
123
991547436 3 天前
|
124
92Developer OP @991547436 我去,爱加密这么不堪一击吗?
|
125
wangwlianl 1 天前
建议使用 Flutter 重写,自带 vmp ,很难被反编译,另外也不太好抓包,加三代壳,虽然可以 FART 脱壳只是时间问题,但可以增加逆向成本,他会花很多时间去逆,逆到一半估计就心态爆炸
|
126
Vercetti 1 天前
逆向真是一个做小饿不死,做大也饿不死的工种
|
127
nyxsonsleep 1 天前
部分逻辑放远程就行。
比如 y=f1(x)f2(x),只要 f2(x)在远程就行。 你 yolo 识别完了,肯定要计算左用户和右用户现存牌量吧。这个逻辑放远程就行。 而破解者要猜测这个被放到远程的内容是什么,这就是复杂度。破解就是在对抗这部分复杂度,复杂度越大成本越高,只要成本高到一定程度就能筛选掉一部分破解者。 典型的如私服游戏,如果源码没有泄露,原理就是客户端视作开源,将服务端的黑盒补全。 在本地的所有内容都应该视作安全泄露,而云端为什么安全?因为云端不在破解者手里。 |
128
Aliceeeeee 21 小时 48 分钟前 via iPhone
呵呵,你不开源自然有人帮你开源
|
129
kero991 13 小时 58 分钟前 via Android
@dynastysea Steam 没有破解? Steam 几乎等于没有加密,各种入库工具,各种一个 dll 通杀所有 Steam 单机的多的是,gog 倒是真的连验证都没有。
破解最无脑的就是暴力破解,找到你输入授权码的函数无脑返回 Ture ,或者判断是不是会员的函数无脑返回 Ture 。然后找找暗桩继续返回 Ture 。 过了爆破这一关,能挡住 80%的破解作者吧,倒也不是真这么多人只会爆破,而是真进去搞加密算法比较费时间,你不一定值得人家这么搞而已。 单机游戏女角色穿什么都不一定了,你还指望挡得住一个运行 |