我的 app 被人干了,颠覆了我的认知!

1 天前
 92Developer

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

我一看,我艹,这不被破解了嘛。 随即我踢了他,然后当天下午加了他 wx ,他同意了。 整个聊天过程没有急眼,他还表明破解的这个包没有流传出去。 因为那个人只愿出几十块钱,他肯定不会成交的,纯试试水,就破了。

从聊天记录我总结出以下几点:

1:他不懂安卓代码,纯靠几个工具 [其中有 MT 管理器[狗东西,开发者天敌]] 就能快速重签打包,我在 Java 和 cpp 中有几个签名验证的埋点,他依然能打包,并正常运行。

2:我的 app 核心功能要用到安装包中的本地带密 zip ,解压密码由后台配置信息接口返回,每个版本的安装包中的 zip 解压密码都不一致,所以我故意改了后台配置信息接口中的密码,他破解的老包功能依然正常使用,我轻描淡写问了他,他说就一个工具就能搞定。

3:他还能破包后加卡密弹窗,说这是基操。视频链接: https://m.okjike.com/originalPosts/69493b881cc9bc8e54a2608d?s=eyJ1IjoiNjM1Nzg4ZjM0N2RkNjRhN2Y3Y2RiMTk0In0%3D

经过几天的 v 站查帖和看 B 站视频,我知道业务逻辑在本地是无法完全防破解的,只是有几点疑问。

1:加卡密弹窗的云注入平台为爱发电?就没人投诉吗?

2:他破解的包为什么不受后端动态解压密码控制?如果绕过校检本地如何解压成功呢?

10111 次点击
所在节点    Android
112 条回复
v1
13 小时 0 分钟前
南山必胜客:只有律师函是靠谱的
treblex
12 小时 58 分钟前
找他合作一下,一边卖破解版,一边更新,隔段时间继续破解🌚破解当做营销手段就好了
v1
12 小时 54 分钟前
@treblex 两头吃啊
zengxs
12 小时 48 分钟前
@gam2046 #5
TEE 验证在国产设备上问题很大(特别为某为设备,他们基本上不用 Google 的根证书,这部分设备占比会在 30+% 以上)
另外这种方式也解决不了楼上说过的 hook 手段
gam2046
11 小时 8 分钟前
@zengxs 唔,我们现在已经不考虑华为的设备了,老鸿蒙官方也基本不维护了,新鸿蒙本身也和 Android 脱钩了。

至于 hook ,可以明示下,可以怎么欺骗过服务端校验呢,本身设备上是拿不到签发证书的,而解锁状态也是由 TEE 写入的,设备上 hook 出来的证书链,也会载明设备已经解除 bootloader 锁,本质上就是依靠 TEE 签出的包名、应用签名、证书链来校验的。对于设备已经解锁的用户,我这里是直接拒绝使用,本身这部分用户占比就很低。
People11
10 小时 20 分钟前
现在的一键过签都很强力的,hook PM ,IO 重定向强制读原包信息都是基本操作了,你要对抗就得上一些非常规手段,例如校验内存中的 dex ,多维度校验 application 入口,热更一个 vm 从外部校验,然后把签名校验逻辑藏在某些组件的逻辑中,例如签名校验不通过就打断 mmkv 的解密而不是直接闪退弹窗什么的,让破解者诊断成本直线上升。当然你想图省事直接上数字加固,这玩意虽然能一键脱但没法一键修,并且工具也不好找,总之让破解者的成本上升。
zengxs
9 小时 12 分钟前
@gam2046 #105 直接 hook 把你整个验证函数替换掉就行了,根本走不到服务端校验那一步
zengxs
8 小时 57 分钟前
@gam2046 #105 另外这个 30% 比例是按安卓兼容的设备算得(老鸿蒙和荣耀设备,不包括纯血鸿蒙),其他主流设备走 TEE 逻辑都没啥问题,可能还会有 5% 左右设备有问题。如果能舍弃掉这部分设备的话,TEE 的逻辑问题不大。

但是安全性用技术手段是解决不了,只要涉及到逆向的对抗,本地技术手段基本都没啥用。还是要考虑用别的手段来防止破解,比如核心逻辑放到服务端,或者调整产品策略让灰产无利可图,具体要视产品情况而定。
jeesk
8 小时 43 分钟前
1. 联网校验,双向 ssl 通信
2. apk,classloader 教研
3. root 校验

校验到有问题,不要说出来,你只需要做一做手脚,对方毫不知情的情况下,玩一些黑魔法,对方心态就会崩溃。


埋下陷阱, 比如直接把 key 光明正大的写到,当对方真的用这个 key 去操作的时候,说明对方真的在搞你, 然后你就可以标记为非法用户,慢慢玩对方就行了。 比如任务进行到一半卡住了,前几个识别都没问题,随机出问题。
stinkytofux
8 小时 40 分钟前
@gam2046 #105 你拒绝解除 bootloader 锁的设备使用 app 这个操作就有很多规避方法了. 你的判断函数是不可信的, 包括判断 root 之类的, 函数的返回值都可以伪造. 用重打包技术也无需解锁 root 手机, 注入代码跟你的 app 同进程了. 跟彻底的还可以自己编译安卓系统, 那真的是随便改源码随便注入了, APP 端的检测形同虚设.
jeesk
8 小时 39 分钟前
总的来说就是,对方破解,让你心态崩了, 其实你完全可以对等回击, 让对方心态崩就行了。 不要让对方觉得无法破解,而是一层套一层,让对方以为破解了, 然后后面出现更多的坑, 让对方猜, 到底破解了没。
liyafe1997
35 分钟前
@gam2046 你服务器校验啥?国产安卓设备又没有一个统一的可信根,相当一部分设备(尤其低端/山寨机)不搭载 GMS 不用 Google 根证书。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1180497

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX