Android apk反编译和*.class反编译到*.java

先说一下,反编译并非完全编译,越复杂的越难反编译,只能保证将其反编译为机器语言(汇编语言)。但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。像*.exe之类的很难反编译,比如使用eXeScope,就算是最简单程序也只能反编译成机器码,一般人是看不懂的,也很难看懂的。而java则是使用的JVM,所以教容易反编译,能大概反编译成源代码。这里我说的是大概,差不多的意思。下面简单介绍一下反编译。

   高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。
  反编译: 机器码(汇编语言) → 高级编程语言
  
  计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
  反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件:
  VB: VBExplorer 、VB反编译精灵和VBRezQ;只能反编译界面图像,好像代码不能完全反编译
  JAVA: JAD(Joint Application Development) ;java的反编译比较常见,所以反编译比较完全, 将class文件反编译成java文件也是有可能的
  C++: eXeScope
  Dephi: DEDE
  c#:Reflector
  易语言:E-Code Explorer.exe(易格式可执行文件分析器)


工具下载地址:
    1.dex2jar 
下载地址: http://code.google.com/p/dex2jar/ 
    2.jd-gui   下载地址: http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 
    3.apktool  下载 地址: https://code.google.com/p/android-apktool/ (注:将apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录,即包含三个文件分别为:aape.exe,apktool.bat,apktool.jar


Android apk反编译(参考文献:Android_反编译apk_到java源码的方法)
一.获取apk的资源图片 直接用 WinRAR打开,res/drawable直接拖拽出来即可。
二.获取xml文件信息  
    DOS在cmd下进入apktool所在路径,然后输入apktool d "XXX1" "XXX2",XXX1指的是你要反编译的apk文件,XXX2指的是反编译后文件存放的路径 
例如:D:\apktool>apktool d "D:/lbs.apk" "D:/name"


三.反编译 *.dex获取 Java 源代码 
1.解压lbs.apk文件,找到lbs.dex文件 
2.在cmd下进入dex2jar.bat所在路径 
     C:\Users\HP>D:
     D:\>cd dex2jar
     D:\dex2jar>dex2jar.bat D:/lbs.dex
这样会生成一个 lbs_dex2jar.jar文件
3.用jd-gui工具将jar文件反编译成java文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了


*.class反编译到*.java

  直接运行jd-gui工具即可,当然也可以使用java自带的反编译工具


你可能感兴趣的:(java,android,汇编,application,语言,反编译工具)