Apk反编译

来源:互联网 发布:淘宝获取店铺失败原因 编辑:程序博客网 时间:2024/04/28 10:32

作为一名Android开发人员,由于debug或者是某些别的需要,我们经常要去反编译一些apk,在这里讲述一下如何反编译一个apk文件。

首先我们需要下载三个反编译工具:

  • apktool(用于反编译apk资源文件)
  • dex2jar(用于把dex文件转为jar文件)
  • jd-gui(jar反编译工具)
这里以一个decompile.apk的反编译过程为例:

这里有一个名为decompile的apk,我们想看看里面究竟有什么东西:


下载完apktool之后我们一般会发现下面三种东西:


前两个是脚本文件不用管它(话说博主在windows下载了Linux版本的……apktool文件居然是shell脚本……)
不过我们只要使用apktool,jar就好,问题不大。值得注意的是我们的Java环境需要事先配置好
使用java -jar apktool.jar使用apktool工具,使用命令d表示反编译,-f 参数为反编译的apk文件,-o 参数为文件输出地址:
apktool

然后在decompile文件夹中可以看到,所有的资源文件一目了然:

接下来我们来反编译apk的代码:
利用解压工具解压apk,从解压出的文件中找到class.dex:


利用dex2jar把它转化为jar文件:


然后在使用jd-gui打开得到的jar文件:
jd-gui

大功告成!这里博主反编译的apk只是随便生成的,并没有经过代码混淆,可读性还是非常强的。然而一般发布的apk都会有代码混淆的流程,变量都会被一些毫无意义的字符代替,反编译出来后能看懂多少就看各位的造化了~

值得注意的是直接解压出来的xml文件会是一团乱码,大伙也可以不使用apktool反编译,而是使用AXMLprinter2.jar来反编译xml文件:
直接解压后:
xml before

使用AXMLprinter2.jar:
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

得到的txt文件:
xml after

0 0
原创粉丝点击