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

新的 APK 加固方法?

  •  
  •   kingof · 2020-05-27 08:01:57 +08:00 · 15979 次点击
    这是一个创建于 1670 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近发现一个挺有意思的 apk 加固的方式,
    简单来说,他把每个方法的方法体里面的代码全部隐藏,
    反编译出来方法体内全部是 return null,
    查看 smali 则有大量的 nop 指令。

    想请教一下大家知不知道这是什么工具实现的?


    图片如下:
    ![AowuO.png]( https://s3.jpg.cm/2020/05/27/AowuO.png)
    ![AooBw.png]( https://s3.jpg.cm/2020/05/27/AooBw.png)
    22 条回复    2024-12-18 14:41:15 +08:00
    FourAndHalf
        1
    FourAndHalf  
       2020-05-27 08:07:27 +08:00
    啥工具?
    nilai
        2
    nilai  
       2020-05-27 08:16:37 +08:00 via iPhone
    抽空 再填充
    iFlicker
        3
    iFlicker  
       2020-05-27 08:52:59 +08:00 via Android
    之前记得有个操作是把方法内容都抽到 native 层
    hugedeffing
        4
    hugedeffing  
       2020-05-27 08:59:03 +08:00
    没看到包不知道具体操作,猜测基本逻辑应该还是 java2c,dex 取 insn 块,填充 return null,批量加 tag,后续 c 层回调用 java 或者回填字节码。问题在于如何进行函数对标,考虑可能是函数签名做唯一标识,但只是猜测,直接打个 id 和用函数签名其实差不多。
    MaxLi77
        5
    MaxLi77  
       2020-05-27 09:29:13 +08:00
    这是几年前的技术了。。不过加固技术基本已经到头,以后估计也不会有太多新技术。。
    janxin
        6
    janxin  
       2020-05-27 10:10:20 +08:00
    加壳吧,抽出来放 native 里了
    InkStone
        7
    InkStone  
       2020-05-27 10:39:45 +08:00   ❤️ 1
    指令抽取。要破解的话一般是用定制 ROM,在底层主动调用触发方法 byte code 回填。

    你去看银行的 app,一般都是指令抽取的加固。
    kingof
        8
    kingof  
    OP
       2020-05-27 11:00:12 +08:00
    @MaxLi77
    @hugedeffing

    有没有类似的加固工具?
    hugedeffing
        9
    hugedeffing  
       2020-05-27 11:09:06 +08:00
    @kingof 基本大厂都有,免费的也有,github 上也有开源的
    fixend
        10
    fixend  
       2020-05-27 11:09:34 +08:00
    @kingof 网易网盾?
    ifxo
        11
    ifxo  
       2020-05-27 11:10:35 +08:00
    至少是 5 年前的方法了吧
    kingof
        12
    kingof  
    OP
       2020-05-27 12:02:07 +08:00
    @ifxo 我真是 outdate 了:),这种方我还是第一次见
    kingof
        13
    kingof  
    OP
       2020-05-27 12:02:34 +08:00
    @fixend 感谢感谢,试一下
    kingof
        14
    kingof  
    OP
       2020-05-27 12:03:12 +08:00
    @hugedeffing 开源的,能给个名字或关键词吗?
    MaxLi77
        15
    MaxLi77  
       2020-05-27 14:57:06 +08:00
    @kingof

    各大加固厂都有,稳定性,兼容性比开源的要好
    YouKnowIt
        16
    YouKnowIt  
       2020-05-27 19:06:20 +08:00
    这个是 smali 指令抽取,将 dex 中方法的指令抽走,然后利用 hook 技术在 dalvik/art 中注入代码,当 dalvik/art 执行到这个方法时,把抽走的的指令再填充回来;这种加固方法目前也是有比较稳定的脱壳工具的,一般都在 art 中强行回填所有的指令,再把 dex 拿下来。更强的是 dex vmp 了,鄙人不才,曾写过一篇文章, google 搜索 《 Android DEX-VMP 虚拟保护技术》

    ![]( https://note.youdao.com/yws/api/personal/file/WEB6257433f62df857cab1cb04a997a1093?method=download&shareKey=f07da1da1c99a6a7b7a982920d22ce3d)
    ![]( https://note.youdao.com/yws/api/personal/file/WEBc9611c867e699c63d5cb19fe0ee65a4b?method=download&shareKey=2007fce0d8835820ce396364350e5fb6)
    ![]( https://note.youdao.com/yws/api/personal/file/WEBaf6a6e6f036d29861b21e8db61c951d6?method=download&shareKey=1197e0cbc415de156d72509f982207c9)
    YouKnowIt
        17
    YouKnowIt  
       2020-05-27 19:09:17 +08:00
    @MaxLi77 哥们说得对,加固技术基本到头了
    amimo
        18
    amimo  
       2020-05-27 19:57:19 +08:00
    这种加固方案依赖于虚拟机的实现,会有兼容性问题,每个安卓版本都得适配.java2c 有开源的实现,搜索 dex to c compiler.
    kingof
        19
    kingof  
    OP
       2020-05-28 09:50:58 +08:00
    @YouKnowIt
    @amimo


    感谢两位大佬
    YouKnowIt
        20
    YouKnowIt  
       2020-05-28 11:40:20 +08:00
    @amimo 是的,有兼容性问题,我也提到过。不过兼容性问题是可以慢慢收敛的,现在,这种方案我个人觉得兼容性,稳定性已经做的可以了,毕竟也经过不少商业客户线上检验
    xiner
        21
    xiner  
       2020-07-14 11:46:32 +08:00
    APK 安全加固,可以提高应用程序的代码安全性、数据安全性和自主防御能力,并且符合《 GBT25070-2019 信息安全技术网络安全等级保护安全设计技术要求》 [简称:等保 2.0] 中的移动互联安全计算环境设计技术要求。可以帮助金融、手游、电商、社交等行业解决移动应用的诸多安全问题,包括核心代码被反编译、应用被仿冒、API 接口暴露、密钥被窃取、请求协议被伪造,APK 包被植入恶意代码等,提供全面的标准化安全保护功能。

    只需要提供 APK 包即可快速集成防静态工具分析、Dex 文件保护、So 文件保护、内存保护、反调试、防二次打包、本地数据加密、资源文件加密等多项安全功能。

    APK 加固: https://www.kiwisec.com/product/app-encrypt.html
    snowflake007
        22
    snowflake007  
       4 天前
    1000 块买了个加固服务,通过了安全合规检测。相比其他动则万元很便宜了

    DexVMP 保护,壳加密算法保护,Dex 文件防篡改保护,壳防动态调试保护,防内存 DUMP 保护,模拟器&ROOT 检测保护,防日志泄露保护,防线程动态调试保护,防进程动态调试保护,防 JDWP 调试保护,防注入保护
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:54 · PVG 02:54 · LAX 10:54 · JFK 13:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.