无论是运行时签名校验也好,还是把核心逻辑写到 native 代码也好,感觉都能轻松反编译,得益于 jadx ,IDA 这些工具,so 库也能给你搞出 C 伪代码来,各种命名,逻辑一览无余。代码混淆也只是缓兵之计,加固算比较高级的,但一样可以脱壳,可能付费的那种会安全一点?他们又是怎么做防护的呢?如果一个 App 有会员功能,在各种逆向工具和熟手面前,是不是几乎没有办法防护?

会员功能放到服务端

ida 反编译 so 文件还是有些门槛的吧,倒是编译到 dex 的代码,不做保护真的很容易破解

这 Android 没关系吧,window 上的程序也是一样。加壳会增加破解难度,但是并不能防止破解。如果破解成本比收益低的情况下,就没有破解的必要了。感觉联网验证,把一部分功能跑在服务器上,这样破解的难度就很高了

理论上是,但是现实中这样的人又有多少呢?只要增加复杂性,总能拦住绝大多数人。这样就够了

逆向:花里胡哨。会员共享:我在听,你继续说。QX:该我上场了。开发者:up up up up up up up up up up up up up up up up up up up up up up bugs. win.还是我厉害。一看数据,付费用户 10 人,破解用户 1 人,白嫖用户 0 ,项目黄了。

会员验证肯定要联网啊。现在还有不联网的游戏么。付费、订单类的都交给服务器

现在一些加固做的还是挺牛逼的,自定义 linker ,混淆 so ,魔改 aes 算法,至少阻挡 98%的脚本小子

会找盗版的人本来就不是你的用户。

看看 TX ,敢 PJ 直接封号,管你是不是 VIP

我做过一点这方面的东西, juejin.cn/post/7079794266045677575 juejin.cn/post/7314558811111866418主要是因为业务本身不依赖后端,所以客户端做安全处理是不可避免的。虽然没法完全杜绝,但是应该可以提升一些门槛。

这是一个博弈,让破解成本>收益 就可接受了

联网的已经能破解了,直接拦截到本地破.

用 flutter 写

分析的挺好的,但是大部分开发者都选择裸奔

Play Integrity API ,可认为基本不可破解: developer.android.google.cn/google/play/integrity/overview?hl=zh-cn

以前国际上最猛的 USB 硬件加密狗,甚至自建虚拟指令的加密方式,都能被破掉,安卓上这些渣渣加密,就不用提了。想保密,老老实实用自建云服务。关键服务上云,其他不重要的服务放在本地就好。

逻辑放云端,另外要有安全运营,防破解并不是一锤子买卖。

感觉纯本地应用就比较难受了。

感觉也没啥门槛呢,IDA 可以直接转换成 C 代码,逻辑很容易就看出来了,就是要改代码需要懂汇编。

混淆 so 确实很需要。

感谢分享!

算是 Google 官方比较好的方案了。

主要看你 app 贵不贵,并实不实用

放服务端其实可以破解免登陆 vip 的

啥都是一句话容易,你自己去破解几个商业 app 试试容不容易呗

核心功能和核心验证放服务端,只能这样,别无他法

#19 dex 手机有现成工具可以看和改,这门槛比要用 pc 的 ida 要低吧,而且因为要支持反射,函数名还是保留的,像 so 一般就没有函数名,有个函数名对反编译帮助很大的

客户端软件不存在完全防破解的方法,默认客户端就是随便被人改的。现阶段可信执行就两条路径,云端执行跟可信加密硬件。当然硬件也不是完全不能破解。所以只需要让你的软件破解代价大于收益即可。例如一个版本一密

你关键服务放到云端,然后客户端万一遇到网络一不好,下一次续费直接 cancel ,损失一个大客户。

我们以前是用魔改加密算法+vmp 加固+行为日志分析,没上之前盗版满天飞,上了之后基本能防住

你必须做成“网络游戏”

用 Flutter 打包后的 APK 是不是没有这个烦恼。