qw30716
V2EX  ›  Android

apk 反编译后能否使用 gradle 重新打包?

  •  
  •   qw30716 · Jul 31, 2019 · 16314 views
    This topic created in 2495 days ago, the information mentioned may be changed or developed.

    目前正在研究脚本打包,但是发现很多打包都是 apktool 反编译,然后将资源合并,处理 jar 文件,再回编译成 apk,但是如果 apk 反编译后,能够使用 gradle 回编译打包,那么对于一些第三方 SDK aar 包,接入就更方便了,不知道可不可行

    29 replies    2020-03-23 13:35:10 +08:00
    liberize
        1
    liberize  
       Jul 31, 2019 via Android
    目前的反编译工具都不完美,大一点的 apk 反编译会有很多错误,不能直接回编译
    qw30716
        2
    qw30716  
    OP
       Jul 31, 2019
    @liberize 很多第三方公司打包都是利用 apktool 回编译的
    loginbygoogle
        3
    loginbygoogle  
       Jul 31, 2019 via Android
    二次打包仔,真卑微
    qw30716
        4
    qw30716  
    OP
       Jul 31, 2019
    @loginbygoogle 看来你是不懂棱镜,quick 这些公司了
    hhh798
        5
    hhh798  
       Jul 31, 2019
    为什么要干这种事呢
    twirain
        6
    twirain  
       Jul 31, 2019
    之前考虑过这个,应该是可行的,但是成本太大,不如接入时拆解 aar
    liberize
        7
    liberize  
       Jul 31, 2019 via Android
    @qw30716 apktool 是编译 smali,不是源代码。楼主说的用 gradle 应该指的源代码回编译。
    murmur
        8
    murmur  
       Jul 31, 2019
    黑产就黑产,还出来交流技术?
    qw30716
        9
    qw30716  
    OP
       Jul 31, 2019
    @twirain 我也是觉得应该有办法
    qw30716
        10
    qw30716  
    OP
       Jul 31, 2019
    @liberize 我的想法是反编译母包,然后把 dex 转成 jar,然后在利用 gradle 打包,就不用考虑 smali 了,不知道是否可行
    qw30716
        11
    qw30716  
    OP
       Jul 31, 2019
    @nioncodotcom 游戏公司接入第三方 SDK,自动化打包呗
    qw30716
        12
    qw30716  
    OP
       Jul 31, 2019
    @murmur 所以你对世界缺乏认知,游戏公司,安全公司哪个不需要反编译,回编译,人家还以此成立公司,看看棱镜这些
    yukiww233
        13
    yukiww233  
       Jul 31, 2019
    是要批量盗版游戏加广告加内购?现在做黑产都那么理直气壮么
    momocraft
        14
    momocraft  
       Jul 31, 2019
    在麦当劳叉薯条也是世界五百强 对吧
    qw30716
        15
    qw30716  
    OP
       Jul 31, 2019
    这个世界上沉溺于自己的世界键盘侠多的是,总有人以最大的恶意看待一切,你永远叫不醒一个装睡的人
    leopku
        16
    leopku  
       Jul 31, 2019
    借楼问下安卓的 proguard 能防 apktool 吗?
    qw30716
        17
    qw30716  
    OP
       Jul 31, 2019   ❤️ 1
    @leopku proguard 只是混淆吧,想看你源码还是可以看
    nicevar
        18
    nicevar  
       Jul 31, 2019
    又觉得可行,又不愿意仔细研究,跑来问很难到你想要的答案,你至少好好研究一下 gradle,我看 dex 转成 jar 估计你都没怎么仔细看过吧,随便找几个 apk 练习一下也不是什么麻烦事,要是那么容易 dex 就成可编译源码,你都不会在这里提问了
    nicevar
        19
    nicevar  
       Jul 31, 2019   ❤️ 1
    @leopku 防不住,progruard 基本上就是个重命名,只是稍微浪费反编译人的时间而已,so 都能被安排的明明白白的,别说混淆了
    zw1one
        20
    zw1one  
       Jul 31, 2019
    建议你上 Stack Overflow 问,这里难道不是聊天灌水的地方?(狗头)
    leopku
        21
    leopku  
       Jul 31, 2019
    @qw30716 @nicevar 多谢
    maokabc
        22
    maokabc  
       Jul 31, 2019 via Android
    这么做本来就有问题,方向反了,真要处理。第三方 sdk 用 dx 这些命令转成 dex,然后用 smali 或者直接用它的 dexlib2 把第三方 dex 合并进去。
    qw30716
        23
    qw30716  
    OP
       Jul 31, 2019
    @nicevar 目前一直测试研究中
    qw30716
        24
    qw30716  
    OP
       Jul 31, 2019
    @maokabc 现在我这边就是这个方式,所以想研究其他的
    qw30716
        25
    qw30716  
    OP
       Jul 31, 2019
    为啥要研究这个,我说明一下,因为我们是游戏公司,需要接国内国外各种渠道 SDK,但是国外 SDK 都是 aar 形式的多,我们的自动化打包工具是反编译,利用 dx 把 jar 转成 dex,最后在回编译成 apk,但是对于国外的 aar,基本只能依靠单独的一个项目打包,因为依赖太多了,所以想研究一下能否使用 gradle 处理 aar,然后利用 apktool 打包
    nicevar
        26
    nicevar  
       Jul 31, 2019
    @qw30716 为啥不对 aar 的 sdk 进行单独处理?我不知道你们是集成什么样的 sdk,如果都是同一类型抽象一层出来,比如广告之类的,无论集成多少家,动态配置 gradle 的模块就行了
    qw30716
        27
    qw30716  
    OP
       Jul 31, 2019
    @nicevar 有的 aar 有引用别 aar 这点你不好处理 要手动把所有 aar 下载下来 ,有的 aar 里面有七八个 aar 文件,如 Facebook
    nicevar
        28
    nicevar  
       Jul 31, 2019
    @qw30716 我怀疑你是不是停留在 eclipse+ant 的年代,现在 gradle 的配置不就是各种依赖,你模块化之后各个模块的依赖各自管理,你要是嫌下载依赖麻烦本地缓存或者公司搭建一个 nexus
    Mcoffee
        29
    Mcoffee  
       Mar 23, 2020
    @qw30716 楼主还关注这个吗,我最近也在搞这个,依赖可以建个 module 处理,有的游戏的 aar 资源处理麻烦
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2561 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 11:15 · PVG 19:15 · LAX 04:15 · JFK 07:15
    ♥ Do have faith in what you're doing.