使用kali的工具集反编译apk

编写时间 2019-04-29 00:51:38

因为想查看app的一些api以及签名算法,所以试试反编译工具。  
首先上传apk,然后命令行打开所在目录。
现在用起点apk做个测试

第一步使用apktool

apktool d -f qidian.apk -o apktool

root@kali:~/文档/qidian# apktool d -f qidian.apk -o apktool
I: Using Apktool 2.3.4-dirty on qidian.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /root/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Baksmaling classes3.dex...
I: Baksmaling classes4.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

这一步主要是可以查看apk的媒体文件

如果要java代码

第二步 把apk文件重命名为zip文件,解压,将解压的classes.dex文件取出,使用d2j-dex2jar来尝试输出jar

d2j-dex2jar classes.dex

root@kali:~/文档/qidian/dex/dex2jar-2.0# d2j-dex2jar classes.dex
dex2jar classes.dex -> ./classes-dex2jar.jar
WARN: ignored invalid inner class name , treat as anonymous inner class.
WARN: ignored invalid inner class name , treat as anonymous inner class.
WARN: ignored invalid inner class name , treat as anonymous inner class.
WARN: ignored invalid inner class name , treat as anonymous inner class.
WARN: ignored invalid inner class name , treat as anonymous inner class.
WARN: ignored invalid inner class name , treat as anonymous inner class.
Killed

好的,工具出错也是正常的,出错就找原因吧,首先它输出的22字节的jar文件,肯定是有问题的,其次用windows平台的dex2jar工具也出错,所以不是工具的问题,应该说dex文件有问题?
在dex2jar官网的讨论里,看到了类似的问题miss inner class

然后使用jd-gui工具,打开dex.jar,提出源文件即可查看代码  
使用这个工具提取的java代码,类的名字好像都是abcd什么的

终于成功逆向了一次数字签名的实现,第一次看到数字签名的时候,完全不知道是什么,那时候以为都是固定的,直到一直失败才发现,还有动态生成的签名。那时候挺绝望的2333  
无论如何,天道酬勤,坑总是可以过的


2019/7/8 更新  
因为dex2jar太老,一些dex无法逆向,这里发现一个新项目enjarily  
使用python3逆向dex文件

上一篇:APK反编译的方法(未混淆)


下一篇:APK反编译的方法(未混淆)