V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zsxzy
V2EX  ›  Android

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

  •  
  •   zsxzy · 2019-12-20 16:44:43 +08:00 · 11016 次点击
    这是一个创建于 1800 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前 app 访问服务器视频资源(教育类视频)的逻辑用 c++ 开发了, 服务器需要 key 加密访问, 希望能保护 so 文件防止重新打包和 被提取到其他 app 使用

    大佬们, 有啥靠谱的方案
    9 条回复    2019-12-31 10:15:47 +08:00
    InkStone
        1
    InkStone  
       2019-12-20 16:50:22 +08:00
    我就说点比较简单的方案:防止逆向用 OLLVM; 防调试检测 ptrace; 防止放到别的地方用,可以多调用一些 Java 层的函数。
    ai277014717
        2
    ai277014717  
       2019-12-20 17:21:48 +08:00
    加一层基于 appid 校验
    forrestvxu
        3
    forrestvxu  
       2019-12-20 18:50:52 +08:00
    各大加固厂商都有 So 保护的方案,比如 360 家的加固保,有 So 防盗链的功能,应该可以满足你的要求
    cxl008
        4
    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
        5
    cxl008  
       2019-12-20 19:58:26 +08:00
    11、key 不要明文编码,可以通过二次运算得出真实 key
    zsxzy
        6
    zsxzy  
    OP
       2019-12-21 15:23:43 +08:00
    @cxl008 👍 多谢, 按你这个说明一个个来
    huruwo
        7
    huruwo  
       2019-12-23 10:56:28 +08:00
    简单的就是使用付费加固
    一般的应用没什么大的破解价值,看到壳就会放弃了。
    zsxzy
        8
    zsxzy  
    OP
       2019-12-28 11:36:44 +08:00 via iPhone
    @cxl008 native 代码里面查自己 maps 里面,app 相关的其他 so 是否都在

    请问,这个是通过读取 proc 实现吗
    cxl008
        9
    cxl008  
       2019-12-31 10:15:47 +08:00
    /proc/selfpid/maps
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2424 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.