Windows平台

Android平台

反编译&反汇编

程序名称 作者 说明
APK解析
   APK是Android Package的缩写,即Android安装包。APK文件其实是zip格式的一个压缩包,但后缀名被修改为apk,通过UnZip解压后,就可以看见Dex文件。
APKTool r05 windows
APKTool r05 macosx
APKTool r05 linux
  APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境。可以对APK进行反编译,使用它可以将其反编译成非常接近打包前的原始格式。逆向AndroidManifest.xml、资源文件resources.arsc以及将dex文件反编译成可以调试的smali文件。修改后,可以将其编译回apk文件。APKTool也可以用来汉化Android软件然后重新打包发布。
官方:http://code.google.com/p/android-apktool/
vts_1.11.21.7217.rar(Virtuous Ten Studio )   Virtuous团队开发制作的Virtuous Ten Studio (VTS)是迄今为止功能最强的APK、JAR编辑工具, 这个程序允许您在一个易于使用和熟悉的环境管理整个Android项,可以反编译M10、APK、JAR。需要.NET 4.0环境支持,Microsoft .NET Framework 4(独立安装程序)
官方:http://www.virtuous-ten-studio.com/
ApkAnalyser 5.2   一款APK可视化分析工具。
官方:https://github.com/sonyxperiadev/ApkAnalyser
使用教学:单击此处
     
ApkToolkit v2.1   有如下功能:反编译.apk ,重建.apk,签名.apk,优化.apk,.apk转.jar,反编译.dex,重建.dex,.dex转.jar
链接:http://www.kanxue.com/bbs/showthread.php?t=171368
APK签名工具
signapk   APKtool编译生成的apk若没签名,不能安装,可以用signapk对apk文件签名。signapk是Android源码包中的一个签名工具,源码路径为/build/tools/signapk/SignApk.java
Dalvik虚拟机
   Google为Android平台设计了一套虚拟机来运行Android程序,它就是Dalvik Virtual Machine。Dalvik虚拟机运行的是Dalvik字节码,其以一个DEX(Dalvik Executable )可执行文件形式存在,Dalvik虚拟机通过解释DEX文件来执行代码。本栏提供的工具,主要是将DEX文件反汇编成Dalvik汇编代码。
DEX文件反汇编
BakSmali v2.0b5
smali v2.0b5
 

baksmali可以反编译dex文件,输出Dalvik汇编文件。smali将Dalvik类型的文件编译回dex,这个功能应用于apk修改、补丁、破解等场合。使用方法:将baksmali、smali以及目标文件classes.dex放到android sdk安装路径下的tools目录下。
反编译:java -jar baksmali.jar -o classout/ classes.dex
编译:java -jar smali.jar classout/ -o classes.dex

主页:http://code.google.com/p/smali/

Dedexer 1.26  

反编译dex文件,输出Dalvik汇编文件

使用方法:java -jar ddx.jar -o -D -d <destination directory> <source>

主页:http://sourceforge.net/projects/dedexer/

dexdump   Android开发包提供了一个dex的反编译工具dexdump,在Android SDK的Tools目标下。总的来说dexdump功能比较弱,反编译的结果可读性较差。
用法: dexdump.exe -d classes.dex > test.txt
dexinspecto 03-12-12r   dex文件反编译工具。
主页:http://zairon.wordpress.com/dexinspector/
Dalvik反编译
dex2jar 0.0.9.15   将Dalvik虚拟机的dex文件转换回标准Java的class文件的工具,然后可以用JD-GUI工具直接打开查看。
用法:dex2jar.bat 目标文件
主页:http://code.google.com/p/dex2jar/
Java反编译
   逆向分析时,将Android的Dalvik虚拟机字节码转成JAVA语言字节码,以*.jar文件存在。为了达到源码级的反编译效果,可以用JAVA反编译工具将*.jar文件转换成JAVA源文件。
jd-gui-0.3.5.windows.zip
jd-gui-0.3.5.linux.i686
jd-gui-0.3.5.osx.i686.dmg
 

一款用C++开发的JAVA反编译工具,该工具省掉了将jar文件转换成java源文件步骤,直接以源码的形式显示jar文件中的内容。

官方:http://java.decompiler.free.fr/?q=jdgui

Jad 1.5.8g for Windows

Jad 1.5.8g for Mac OS X

Jad 1.5.8e for Linux

 

可以将jar文件转换成java源文件。

JAD下载镜像:http://varaneckas.com/jad/

DJ Decompiler v3.9.9.91   Java Class的反编译软件
Decafe Pro V3.8   Java Class的反编译软件
安卓原生文件反汇编
   目前Android支持ARM、x86、MIPS三种架构的处理器。除了通过Java语言编写Android程序,Google还为开发者提供Android NDK(Native Development Kit),即安卓原生开发套件。NDK可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件中直接嵌入原生库文件。这类文件,就需要反汇编成ARM、x86等汇编指令分析。

   ARM架构下有三种指令集:ARM、Thumb、Thumb-2。在Android的NDK中,默认使用Thumb;在其他代码中,ARM与Thumb的混合使用也是经常出现的。

ARM架构
IDA Pro DataRescue

在ARM反汇编和反编译上,IDA Pro的功能无疑是最强大的,除了x86程序,也能逆向Android程序,包括Dalvik指令集反汇编、原生库的反汇编和动态调试。IDAPython是对IDA Pro的一个功能扩展接口,封装了IDC的几乎所有API,接口也非常丰富,完全可以获得需要的每个细节信息。

radare  

radare应该是最好的开源逆向框架了。它使用C语言书写,支持多种指令集和文件格式,包括ARM和Thumb。radare对逆向的抽象非常到位,可以说是框架设计的一个典型。ARM的反汇编是线性扫描反汇编,不支持递归。

主页:http://radare.org/y/

smiasm  

smiasm是一个纯Python的反汇编框架。它由三个子项目构成,其中elfesteem实现ELF和PE格式解析,miasm实现反汇编。smiasm目前仍不支持Thumb指令集,可以递归反汇编。

主页:http://code.google.com/p/smiasm/