android的apk之反编译

http://blog.csdn.net/superjunjin/article/details/7643666

总结:

1,apk就是一个压缩包

2,反编译apk就是反编译dalvik(Dalvik是Google公司自己设计用于Android平台的Java虚拟机)二进制文件dex和压缩的xml文件

3,常用的方法,apktool+dex2jar+xjad

首先了解一下,源文件到apk的变化,看图


apk解压缩后会有如下文件


首先,通过apktool去解压apk,得到可视的xml文件和smali文件

1,去google搜索apktool,下载前两个包


2,解压缩两个包,把需要的两个工具apktool.bat和apktool.jar拷到android-sdk-windows\platform-tools下


3,用apktool解压缩apk到新文件夹


4,普通解压和apktool解压后文件的区别

普通解压


apktool解压


此时xml文件已经可见,但smali文件夹下的smali文件需进一步反编译才能得到java类文件

重大发现:此种方法解压后不仅xml可见,困扰我的png9图片的问题也解决了。如果是普通解压,

解压后的png9图片都要自己重新加黑边(不小的工作量哦)


然后,通过dex2jar+xjad继续反编译,得到可视化的java类文件

1,google下载dex2jar包,解压缩后的工具都拷到android-sdk-windows\platform-tools下

2,需要普通解压的classes.dex文件,和如下命令把dex文件转成jar包


3,解压缩jar包,得到class文件

4,根据实际操作xjad工具解压jar包未成功,此方法弃用(win7下未成功)

5,终于搜得方法,好吧,此工具太好用了Java反编译器 Java Decompiler,对于查看class文件超级方便

官网下载 http://java.decompiler.free.fr/?q=jdgui



 

 

-------------------------------------------

包含 apktool、dex2jar、jdgui等三个工具。

apktool

dex2jar反编译步骤:
1、把 class.dex 拷贝到 dex2jar.bat 所在目录,直接拖动 class.dex 到 dex2jar.bat,生成 classes.dex.dex2jar.jar。
2、用 rar 解压出 jar 文件中的 class 文件,然后 用jad 或 DJ Java Decompiler 反编译工具将 .class 文件反编译成 .java 文件
3、运行 JD-GUI工具(绿化软件),打开上面的 jar 文件,在File下有个 Save JAR Source,它可以生成 src 源代码。

Android用的Dalvik压根不是标准的Java VM的Jar,而是DEX格式的,怎么办?附件是dxe2jar和JD,两个工具都是open source的,我已经全部放在一个压缩包了。

别着急,有办法:
1. 假设你要反汇编的是app.apk,那么先改名成app.zip
2. 解压
3. 在解压出来的里面找到classes.dex,这个就是目标的程序的二进制文件
4. 用附件的dex2jar,在Windows命令行下运行 dex2jar classes.dex
5. 生成classes.dex.dex2jar.jar,这个就是转换后的JAR文件了
6. 执行jd-gui,找到刚才生成的JAR文件,打开之。
7. 偷偷乐吧,90%以上的Java源代码跃然眼前.

JD-GUI version 0.3.3,JD-Core version 0.6.0,Java反编译工具,实现了eclipse的高亮着色功能,多文件标签浏览

此程序jd-gui.exe使用C++开发,主要具有以下功能:
一、支持众多Java编译器的反编译;
二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值