干货程序员Android开发

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

2016-04-14  本文已影响290人  joyin5344

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

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

工具

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

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

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

绿色、免费的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/路径下。

上一篇下一篇

猜你喜欢

热点阅读