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

10010 次点击
所在节点    Android
111 条回复
Syriana
14 小时 7 分钟前
我有个大胆的猜测,是不是他 P 的图
92Developer
14 小时 2 分钟前
@Syriana 不是,他还发了视频。
kasusa
13 小时 55 分钟前
业务逻辑在本地,软件是不是要激活/购买才能用。
ios 的话走商店和许可,在本地逻辑进行前/app 启动时进行校验。
安卓不懂,肯定也有提供激活码和管理服务的。
Niphor
13 小时 37 分钟前
上个三代以上的加固,代码抽取转 so 的

这个破解,一般起码得花万把块钱买课程,不然自己搞很烦。
Chaitanya
13 小时 31 分钟前
基本防不住,别说你的软件了,就是 jb 的软件也防不住。但是你可以对功能进行分段式更新,每次更新都往上面加固,确保对方不能每次都按同一个手段破解,也许可以解决你的问题,当然最好的方式还是适时打折,让它破解版卖不出价
Cloud9527
13 小时 23 分钟前
之前安卓 app 都是加固+混淆,不过不知道有没有被人破解了
dnslint
13 小时 14 分钟前
flutter 据说是天然的 vmp 环境 逆向起来比较复杂可以试试看
sheeta
12 小时 53 分钟前
改成云端识别啊,我理解你的记牌器就是 ocr 识别出出过的牌,改成服务端 ocr 识别
kekeabab
12 小时 36 分钟前
@stinkytofux #75 没有 root 权限一样能搞,放同一个进程就是了,或者可以用现成的也可以做一套类似小学生圈子里叫做“框架”的东西,直接虚拟一个轻量环境启动 app 就可以随便读写。我很多年没碰过安卓了,搜了下现在依然适用。
dearmymy
12 小时 32 分钟前
@Gilfoyle26 ios 才是简单好吧。
irrigate2554
12 小时 23 分钟前
想要防住,只能把核心功能放到云端才有可能
stinkytofux
12 小时 14 分钟前
@kekeabab #89 这就是重打包了, 楼主说的 mt 破解也是用的这个, 重打包有重打包的缺陷. 分发给普通人还是不方便, 你不能让别人把官方游戏卸载装你这个特殊版本, 比较适合小范围自用.
stinkytofux
12 小时 12 分钟前
@kekeabab #89 所以 op 这个 ocr 识别虽然简单粗暴, 力大砖飞, 但是确实可以规避很多权限导致的麻烦. 适合大规模分发给小白用.
jeesk
12 小时 6 分钟前
你可以做校验的, 道高一尺魔高一仗。 和他玩呗
justsosososo
11 小时 54 分钟前
加壳啊 老铁
jmliang
11 小时 45 分钟前
用 flutter
pipixiarwksb
11 小时 28 分钟前
有没有能够增加桌面端破解成本的方法,完全不被破解基本不可能,但是怎么增加破解成本呢,有大哥可以聊聊吗
guanzhangzhang
11 小时 24 分钟前
@kekeabab #66 内存又不是直接读,你要找,而且这样上架被人举报铁定 g ,纯识图层面可以加模型在线更新支持更多游戏,
guanzhangzhang
11 小时 22 分钟前
有个移动联盟的 so ,可以整进去,内部自带很多防逆向的。
WngShhng
11 小时 21 分钟前
你的签名校验是怎么写的?如果只是从 pms 里面那包的签名,那么绕过就是轻轻松松的事情。你的版本号问题,只要 hook 一下 pms 获取版本号的方法就搞定了,和 hook 签名的逻辑一样。如果你用 bool 类型把校验逻辑封装,那它可以直接修改你的函数逻辑。这些都有成套的体系。

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

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

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

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

© 2021 V2EX