我的 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:他破解的包为什么不受后端动态解压密码控制?如果绕过校检本地如何解压成功呢?

9873 次点击
所在节点    Android
111 条回复
Yanu
1 天前
2. 把云端的返回结果写死,用旧的 zip 包不就可以了吗
heyjei
1 天前
我的关注点在左上角的时间,现在搞破解的都这么勤奋的嘛!
stinkytofux
1 天前
你如果会 hook 的话, 就不会有这些疑问了, 你所有的什么动态加密啥的, 根本就不用看, 找个关键函数直接返回 true 就搞定了, 谁管你用的什么算法什么密钥.

想做好防破解, 一定要先学会破解.
okakuyang
1 天前
哎,别人专门搞逆向的话,很难防。逆向->反逆向->反反逆向->反反反逆向,无穷尽也。
gam2046
1 天前
唔,如果要求严格的话,可以校验 TEE 证书链,如果校验失败,就不下发资源文件。本地设备只负责提交证书链

这个以我目前浅薄的知识来看,是无法绕过的,可以参考代码:

https://gist.github.com/Lua12138/81312aeb1d2360fa7ef4b756ec7d9d18#file-keystorechallenge-kt

只需要简单调用 KeyStoreChallenge.use 方法即可,将获得的证书链提交给服务端。

服务端收到后通过 tee_cert_chains 方法检验即可,记得一定要同时检查证书链里的包名、签名与你自己的一致(防止别人自己编写与你包名一样的应用在正常设备上进行旁路攻击),如果报告设备已经解锁,可以依据你认为的风险等级,决定是否下发资源。
dynastysea
1 天前
@stinkytofux 这么搞笑的么。。那还加密个毛线
Blanke
1 天前
几个月前看到你的软件,简单逆向分析了下,因为之前是想做类似的。想看看啥方案 yolo 还是啥。发现直接能得到模型文件,用户管理用的好像是 leancloud 之类。单纯技术上来说,直接用模型文件写个功能一样的 app 很简单,或者 xp 模块也能本地破解。。纯客户端的功能几乎都能破解,只是难度和成本不同,mt 管理器也有本地破解版,它的防护算是比较强的。
stinkytofux
1 天前
@dynastysea #6 纯客户端程序本来就没办法杜绝破解, 自古以来都是难题, 强如 Windows 和 各种游戏加密都办不到, 被破解只是时间问题. 什么验签加密混淆都没用, 只要是客户端上面执行的函数返回值和入参都能被轻易修改. 所以像微信这样的软件, 都放弃了加固, 只是做了简单的混淆. 重要的逻辑和数据都依赖服务端.
dynastysea
1 天前
@stinkytofux 那 steam 这种是怎么搞的呢?好像没见过有破解的?
stinkytofux
1 天前
@dynastysea #9 steam 本身就是个商店, 数据都在服务器, 不存在破解的概念. 你要说 steam 上的游戏, 那是你见少了, 很多破解游戏都可以绕过 steam 运行.
Anarchy
1 天前
本地防护就是混淆代码防止找到关键函数,具体加密算法是无所谓的,毕竟可以直接调用你本身的代码逻辑。或许可以考虑简单点迁移到 Flutter 开启混淆,Flutter 的破解工具还不成熟。
HandSonic
1 天前
@dynastysea 你是否在线:GreenLuma 、Steamtools 、和其他基于这些的“Steam 假入库”,都能让你在不购买游戏的情况下直接通过 Steam 下载并游玩你未拥有的游戏,只要有清单文件就行( D 加密除外)
blackbookbj277
17 小时 44 分钟前
报警吧:网络安全法第二十七条 任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
HeyWeGo
17 小时 44 分钟前
记牌器?
92Developer
16 小时 50 分钟前
@heyjei 哈哈,可能心血来潮吧。
92Developer
16 小时 42 分钟前
@Yanu 他用的那个工具最终能达到这种效果,具体啥原理不清楚。
92Developer
16 小时 42 分钟前
@HeyWeGo
Nuttertoo1s
16 小时 42 分钟前
没有进行加固吗
reHuo
16 小时 40 分钟前
最早用 Android killer 随便破解,这万一看你怎么看吧,有点类似国内网站挂了很多绿色破解软件哈哈哈
92Developer
16 小时 40 分钟前
@blackbookbj277 哈哈,没有流通,到那程度再说。但法律确实最后的手段。

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

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

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

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

© 2021 V2EX