要分析一个apk首先要将apk文件反编译出相应的smali文件或class文件,要用到的主要工具有:apktooldex2jarjd-gui等。

1.使用apktool反编译及回编译

apktool可以将apk文件反编译出smali文件,主要命令有:

反编译: apktool d xxx.apk ,反编译目录下的smali文件即是该apk文件的smali代码。 若想加入调试信息(动态调试的时候使用)需要加上-d选项

回编译: apktool b xxx ,修改完smali文件后用该命令将修改完后的代码重新打包成apk文件 

使用apktool能将apk包完整的反编译出(包括资源文件等)。

2.dex2jar apk文件中反编译出jar代码

使用apktool虽然可以反编译出smali代码,但是smali代码不易读,为了方便理解apk的实现代码,可以使用dex2jar,命令如下:

反编译出jar: d2j-dex2jar.sh  xxx.apk ,生成apk文件的java代码。

使用dex2jar反编译出的java代码虽然易读,但是反编译出的代码不一定正确,所以经常需要结合apktool反编译出的smali文件才能比较完整的分析该apk

3. jd-gui 查看jar代码

使用jd-gui工具可以很方便的查看jar包内的java代码。

4.signapk.jar签名

java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk

5. 使用androidemulator命令启动Android模拟器

一般情况下可以通过eclipse下的ADT插件直接通过图形界面启动模拟器,但是每次为了打开模拟器而打开eclipse太麻烦了,而且在Linux下还是多使用命令行为好。下面介绍该如何在命令行下打开一个Andorid模拟器:

需要使用的工具在Android SDK/tools目录下面(为了方便可以将该目录添加至环境变量),主要使用androidemulator,主要命令如下:

android list target – 查看有哪些avdtarget可用

android create avd -t id -n avdname – 根据target id创建avd

android list avd – 查看已经创建了哪些avd

emulator -avd avdname –启动avd

5. 使用adb安装apk

使用adb可以在模拟器上安装或卸载apk,命令如下:

adb install xx.apk

adb uninstall xx.apk

观看更多有关 的文章?

*

+
跳转到评论