请教 ndk 编译的 so 文件的保护加固方案

2019-12-20 16:44:43 +08:00
 zsxzy
目前 app 访问服务器视频资源(教育类视频)的逻辑用 c++ 开发了, 服务器需要 key 加密访问, 希望能保护 so 文件防止重新打包和 被提取到其他 app 使用

大佬们, 有啥靠谱的方案
6975 次点击
所在节点    Android
9 条回复
InkStone
2019-12-20 16:50:22 +08:00
我就说点比较简单的方案:防止逆向用 OLLVM; 防调试检测 ptrace; 防止放到别的地方用,可以多调用一些 Java 层的函数。
ai277014717
2019-12-20 17:21:48 +08:00
加一层基于 appid 校验
forrestvxu
2019-12-20 18:50:52 +08:00
各大加固厂商都有 So 保护的方案,比如 360 家的加固保,有 So 防盗链的功能,应该可以满足你的要求
cxl008
2019-12-20 19:39:43 +08:00
1、native 源代码混淆
2、加壳 ,就你自己那一个 so 的话 就用 upx 吧
3、native 代码里面 反射调用 java 一些函数,或是读一些值
4、native 代码里面查自己 maps 里面,app 相关的其他 so 是否都在
6、加密算法不要用 java 层,自己找 c 代码编译进去调用,base64 的常量串 和服务器上同步篡改一些序列
7、key 加密算法尽量小众
8、so 里面反射 java 层,获取拿到签名 md5,包路径(计算 hash),作为明文内容 参与加密,服务器校验
9、如果你自己会修改 elf 的话其实还能做更多,不过那涉及到很多专业的加固方案了,一两个人短期搞不定
10、比较重要的一点,不要在 native 层直接拒绝服务 返回错误 或是 制造崩溃!所有获取到的东西,参与加密,服务器判断后拒绝服务!
cxl008
2019-12-20 19:58:26 +08:00
11、key 不要明文编码,可以通过二次运算得出真实 key
zsxzy
2019-12-21 15:23:43 +08:00
@cxl008 👍 多谢, 按你这个说明一个个来
huruwo
2019-12-23 10:56:28 +08:00
简单的就是使用付费加固
一般的应用没什么大的破解价值,看到壳就会放弃了。
zsxzy
2019-12-28 11:36:44 +08:00
@cxl008 native 代码里面查自己 maps 里面,app 相关的其他 so 是否都在

请问,这个是通过读取 proc 实现吗
cxl008
2019-12-31 10:15:47 +08:00
/proc/selfpid/maps

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

https://www.v2ex.com/t/630897

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

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

© 2021 V2EX