您的当前位置:首页正文

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

来源:花图问答

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

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

工具

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

  • signapk

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

  • dex2jar

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

  • jd-gui

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

环境准备

目录结构
有兴趣的读者可以按照我后面的方法设置环境。
  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

测试

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

源文件

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。

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