美文网首页干货程序员Android开发
Android笔记 (7): 反编译 - 环境搭建

Android笔记 (7): 反编译 - 环境搭建

作者: joyin5344 | 来源:发表于2016-04-14 21:50 被阅读290次

    上几章通过封装Volley实现的网络处理框架,做了简单的网络应用。接下来将以此为原型,进入我们的《反编译》系列章节。

    工欲善其事,必先利其器。

    工具

    该系列章节中使用到的工具 包括但不限于以下内容,同时反编译系列的工具也会同代码共享到https://github.com/joyin5344/Decompiler上。

    • apktool

      ApkTool是Google提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能。需要java支持。——百度百科

    • signapk

    实现对安卓ROM和安卓应用进行签名。

    • dex2jar

    dex2jar 是一个能操作Android的dalvik(.dex)文件格式和Java的(.class)的工具集合。

    • jd-gui

    绿色、免费的Java反编译工具。

    环境准备

    反编译工具目录结构主要有apktool_sign和jd-gui。
    github把资源下载下来,目录结构如下图所示:

    目录结构
    有兴趣的读者可以按照我后面的方法设置环境。
    1. apktool_signjd-gui-0.3.5.linux.i686目录copy到~/lib目录下:
      ~/lib目录
      注意:如果apktool_sign不是放在~/lib/下,一定要修改apktool_sign/sign.sh文件中第六行,将变量libdir的值设为脚本所在目录(该脚本在后面用到时再详解):
    libdir=~/lib/apktool_sign/
    
    1. 创建链接(便于后续在任意路径使用工具):
    sudo ln -s ~/lib/apktool_sign/sign.sh /usr/local/bin/apksign
    sudo ln -s ~/lib/apktool_sign/apktool /usr/local/bin/apktool
    sudo ln -s ~/lib/apktool_sign/dex2jar/dex2jar.sh /usr/local/bin/dex2jar
    sudo ln -s ~/lib/jd-gui-0.3.5.linux.i686/jd-gui /usr/local/bin/jd-gui
    
    /usr/local/bin/目录
    1. framework-res.apk
      很多时候我们会忘记安装framework-res.apk,导致操作不成功,对于我们的项目,直接用自己手机里面导出的apk即可。
    adb pull system/framework/framework-res.apk .
    

    安装framework-res,使用如下命令:

    apktool install-framework framework-res.apk
    

    apktool if framework-res.apk
    

    测试

    正确按照上面的步骤执行,此时便可以进行反编译操作了。

    源文件

    我们先创建目录~/android/decompile/,然后将之前VolleyDemo.apk[1]复制到该目录下。

    mkdir -p ~/android/decompile/
    cp [VolleyDemo.apk路径] ~/android/decompile/
    cd !$
    

    decode

    apktool反编译apk文件,执行如下命令:

     apktool d VolleyDemo.apk 
    
    decode输出
    目录结构

    VolleyDemo/目录下则是反编译后生成的文件,具体内容后续章节会介绍到。

    build

    apktool b VolleyDemo
    
    build输出

    build后会生成VolleyDemo/dist/VolleyDemo.apk文件,该文件是没经过签名的,也就意味着不能安装使用。

    签名

    通过apksign命令进行签名,具体实现的脚本代码后续介绍。

    apksign VolleyDemo/dist/VolleyDemo.apk
    
    sign输出
    最终生成的VolleyDemo/dist/VolleyDemo.apk_sign.apk文件就是经过签名,可安装使用的apk。

    至此,反编译、回编译、签名,流程已经跑通,后续章节将在此基础上讲解签名脚本,查看源码、进行代码注入等操作。


    1. 前面章节代码编译后的成果,同时在Decompiler项目中apks/路径下。

    相关文章

      网友评论

        本文标题:Android笔记 (7): 反编译 - 环境搭建

        本文链接:https://www.haomeiwen.com/subject/kuhglttx.html