移动安全入门(一)——Android的反编译工具以及使用
我倾向于使用命令行工具来做这些工作
找到的Android下的反编译工具主要有:
apktool
,将apk
文件解析并反编译为smali
dex2jar
,将dex
文件反编译为jar
包jd-gui
,解析jar
包,反编译为Java源码,但是是图形化界面jadx
,将dex
、apk
等文件反编译为Java源代码
apktool
安装:在https://github.com/iBotPeaches/Apktool
的README界面下面的Download
链接下下载jar
包
编写脚本
#!/bin/bash
APKTOOL_PATH=/home/xxx/Documents/xxx/apktool_2.5.0.jar
java -jar $APKTOOL_PATH apktool $1 $2 $3
放在/usr/local/bin
或者是~/.local/bin
目录下即可运行
使用方法:https://ibotpeaches.github.io/Apktool/documentation/
apktool d testapp.apk -o target
,Decodingapktool b bar -o new_bar.apk
,Buildingif
参数:Frameworks,配合-t
(tag frameworks)或-p
(store framework into dir)使用
直接解压的apk
文件下的AndroidManifest.xml
是不可读的,通过apktool
就能清楚地浏览,并提供可读的AndroidManifest.xml
dex2jar
安装:https://sourceforge.net/projects/dex2jar/files/latest/download
下载的是一个zip
包,解压后既有bat
文件也有shell
文件
使用chmod + x *.sh
为所有的shell文件赋予执行权限
这些脚本各有各的功能,很丰富
为了不必每次使用的时候都要打开,在/usr/local/bin
或者~/.local/bin
下面创建一个软链指向d2j-dex2jar.sh
它的功能是将dex
文件转为为jar
文件
同样的,也可以将apktool
反编译的smali
文件转为jar
文件
我们马上就会看到,它其实没什么大用
jd-gui
听名字就觉得很邪恶
任何必须要用鼠标操作的都不是什么好东西
用处是打开jar
文件
jadx
是dex2jar
和jd-gui
的合体
下载:https://github.com/skylot/jadx
解压之后也是一个有很多文件的文件夹
可执行文件都放在bin
里面
同样的,使用软链链接,以便到处使用
它的功能蛮强大的,可以使用其直接解析apk
文件
用其直接解析,会解析很多第三方的库
可以使用unzip
先进行解压,之后再使用jadx
进行解析
--------------------------------------- 分界线 ---------------------------------
apk直接解压之后的文件有:
+----------------------------+
| assets | 需要打包的静态文件(任意深度)
+----------------------------+
| lib | 使用C/C++编写生成的native库文件
+----------------------------+
| res | 存放资源文件
+----------------------------+
| META-INF | 存放签名信息
+----------------------------+
| AndroidManifest.xml | 存放程序配置
+----------------------------+
| classes.dex | 可执行文件
+----------------------------+
| resources.arsc | 资源配置文件
+----------------------------+