android 反编译

来源:互联网 发布:plsql跨数据库复制表 编辑:程序博客网 时间:2024/06/05 16:10

1、下载文件apktool  解压,进入命令行,进入apktool文件夹,执行apktool d xxx.apk 目标文件夹

2、生成的目标文件夹有一个叫做“smali”的文件夹,只不过Java文件被.smali的文件取而代之了

  Smali文件其实就是dalvik虚拟机运行的dex字节码文件对应的汇编文件了。

   如果你了解Java虚拟机的汇编语言Jasmin的话,你会发现两者的语法非常相似。

   如果你想了解更多,可以访问Google CodeSmali项目主页:http://code.google.com/p/smali/

3、资源文件,代码。重新编译打包。打包命令: apktool b 目标文件夹。

  这时会在这个文件夹下生成两个文件夹:存放中间文件的文件夹build和存放最后的apk文件的文件夹dist

4、这个APK文件是还没有签名的,所以无法安装运行。签名我们需要用到的工具是Auto-sign

      它主要是利用批处理命令,使用signapk.jarAPK文件进行签名的。你可以用记事本打开Sign.bat,看看它的具体调用关系。关键如下:

   java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk

5、ok。结束。

---------、Apk反编译得到Java源代码
下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。
apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件
源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码

dex2jar 和 jdgui 最新版本下载,分别见google code:
dex2jar(google code)
jdgui(google code),最新版本请见 官方

具体步骤:
首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。
在命令行下定位到dex2jar.bat所在目录,运行
dex2jar.bat classes.dex 生成 classes_dex2jar.jar
把classes_dex2jar.jar直接拖进jdgui就能看到java的源代码了