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

请教大神, APK 如何实现 dex 不落地加载?

  •  
  •   ice000 · 2019-09-04 07:18:24 +08:00 via Android · 13036 次点击
    这是一个创建于 1936 天前的主题,其中的信息可能已经有所发展或是发生改变。

    领导布置了一个关于 APK 加固的任务,我目前的思路是将一部分代码抽成 dex 文件加密,使用时解密完通过字节流加载 dex。卡在 dex 不落地加载上了,求大神提供下思路或者有更好的加固方案也可以提出来

    22 条回复    2019-09-05 12:19:55 +08:00
    hkitdog
        1
    hkitdog  
       2019-09-04 07:44:30 +08:00 via iPhone
    类抽取加固?,但在 apk 运行时 dump 出 inscode 然后 patch 到 dump 出的 dex 文件里面,,还是可以脱...
    ice000
        2
    ice000  
    OP
       2019-09-04 08:20:05 +08:00 via Android   ❤️ 1
    @hkitdog 能挡住 80%的人就不错啦,防是防不住的
    linhua
        3
    linhua  
       2019-09-04 08:25:17 +08:00   ❤️ 1
    LeeSeoung
        4
    LeeSeoung  
       2019-09-04 09:42:33 +08:00
    直接买现成方案加固吧。。你能想到的大厂商都帮你想好了。。N 年前的大厂商做过把核心代码放进 so,运行时动态解密加载。。
    LeeSeoung
        5
    LeeSeoung  
       2019-09-04 10:26:57 +08:00
    看完楼上那篇了。。讲的很详细,楼主可以参考下。。
    forrestvxu
        7
    forrestvxu  
       2019-09-04 11:36:04 +08:00
    360 的加固保有免费的可以用哇
    ice000
        8
    ice000  
    OP
       2019-09-04 11:45:27 +08:00
    @linhua 多谢
    ice000
        9
    ice000  
    OP
       2019-09-04 12:28:21 +08:00
    @LeeSeoung 想找个带源码的方案,查问题也方便一些。由于 APK 写的比较杂,用腾讯的乐固加固后加载不出某些插件
    ice000
        10
    ice000  
    OP
       2019-09-04 12:29:07 +08:00
    @forrestvxu 360 的加固产品有黑历史,不敢用
    ice000
        11
    ice000  
    OP
       2019-09-04 12:29:29 +08:00
    @xingda920813 API 有限制
    xingda920813
        12
    xingda920813  
       2019-09-04 12:57:43 +08:00
    @ice000 InMemoryDexClassLoader API 有什么限制?
    ice000
        13
    ice000  
    OP
       2019-09-04 13:02:37 +08:00
    @xingda920813 Added in API level 26
    HangoX
        14
    HangoX  
       2019-09-04 13:59:22 +08:00
    放弃吧,加固这个东西太影响运行效率了。你在内存中我直接 dump 就好了,还不如直接用 c 写,然后混淆
    no1xsyzy
        15
    no1xsyzy  
       2019-09-04 15:39:16 +08:00
    设计个词法反人眼、语法反直觉、但语义就是 Java 的语言
    写个 JVM 下的该垃圾语言解释器
    写个 Java 编译到这个该垃圾语言的编译器
    能挡住 99% 的人
    同理可扩展到其他任何语言
    就好像机器语言和 C 语言的关系(
    walkfish
        16
    walkfish  
       2019-09-04 18:23:10 +08:00
    用方舟编译器啊,直接二进制文件
    ice000
        17
    ice000  
    OP
       2019-09-05 07:20:03 +08:00 via Android
    @HangoX 一般项目混淆就足够了,手头这个项目几乎能预料到他们拿来 APK 第一件事就是研究怎么破解~~用 c 写也是一个办法
    ice000
        18
    ice000  
    OP
       2019-09-05 07:20:25 +08:00 via Android
    @no1xsyzy 大佬大佬
    ice000
        19
    ice000  
    OP
       2019-09-05 07:21:41 +08:00 via Android
    @walkfish 螃蟹留给别人先吃吧
    wjh3936
        20
    wjh3936  
       2019-09-05 10:08:03 +08:00
    360 有啥黑历史嘛……好奇
    forrestvxu
        21
    forrestvxu  
       2019-09-05 10:23:13 +08:00
    @HangoX 这位同学说得对~单纯的内存加载已经过时了,现在脱壳工具一大堆。如果你完整的加载到内存,dump 出来就行了,哪怕不完整加载,也有修复手段~
    ice000
        22
    ice000  
    OP
       2019-09-05 12:19:55 +08:00 via Android
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:46 · PVG 16:46 · LAX 00:46 · JFK 03:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.