问题

如何将Android DEX(VM字节码)文件反编译成相应的Java源代码?

#1 热门回答(822 赞)

这很容易

获取这些工具:

1)dex2jar将dex文件转换为jar文件

2)jd-gui查看jar中的java文件

源代码非常易读,因为dex2jar进行了一些优化。

##程序:

这是关于如何反编译的程序:

步骤1:

将test_apk-debug.apk中的classes.dex转换为test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk

注意:在Windows机器中,所有.sh脚本都被.bat脚本替换

dex2jar documentation

第2步:

在JD-GUI中打开jar

#2 热门回答(124 赞)

为了澄清一点,根据你想要完成的任务,你可以在此处使用两条主要路径:

将Dalvik字节码(dex)反编译为可读的Java源代码。你可以轻松地使用dex2jar和jd-gui轻松完成此操作,正如fred提到的那样。生成的源可用于阅读和理解应用程序的功能,但可能不会产生100%可用的代码。换句话说,你可以阅读源代码,但无法真正修改和重新打包它。请注意,如果使用proguard对源进行了混淆,则生成的源代码将难以解开。

另一个主要的替代方案是将字节码反汇编为306349880,这是一种专为此目的而设计的汇编语言。我发现最简单的方法是使用apktool。一旦你安装了apktool,你就可以将它指向一个apk文件,然后你将获得应用程序中包含的每个类的一个smali文件。你可以通过从新Java源生成smali来完全读取和修改smali甚至替换类(为此,你可以使用javac将.java源编译为.class文件,然后使用Android将.class文件转换为.dex文件dx编译器,然后使用baksmali(smali反汇编程序)将.dex转换为.smali文件,如this question中所述。这里可能有一个快捷方式)。完成后,你可以使用apktool轻松打包apk。请注意,apktool不会对生成的apk进行签名,因此你需要处理该just like any other Android application。

如果你去了smali路线,你可能想尝试APK Studio,这是一个自动执行上述一些步骤的IDE,可以帮助你反编译和重新编译apk并将其安装在设备上。

简而言之,你的选择几乎要么反编译为Java,哪个更具可读性,但可能是不可逆转的,或者反汇编为smali,这更难以阅读,但更灵活地进行更改并重新打包修改后的应用程序。你选择哪种方法取决于你希望实现的目标。

最后,dare的建议也值得注意。它是一个重定向工具,可将.dex和.apk文件转换为java .class文件,以便使用典型的java静态分析工具对其进行分析。

#3 热门回答(59 赞)

它提供了BAKSMALI,这是DEX文件最优秀的逆向工程工具。它是由JesusFreke制作的,他为Android创造了成名的ROM。

java 解析dex_将DEX反编译成Java源代码相关推荐

  1. 将DEX反编译成Java源代码

    本文翻译自:decompiling DEX into Java sourcecode 如何将Android DEX(VM字节码)文件反编译成相应的Java源代码? #1楼 参考:https://sta ...

  2. Java的class文件批量反编译成Java文件

    Java的class文件批量反编译成java文件 Class文件是java文件编译后产生的一个文件,class文件便于在软件上运行,但是我们无法阅读中间的程序,所以我们需要将class文件转换成jav ...

  3. java的class文件批量反编译成java

    近来刚做完项目闲来无事就研究起了反编译,之前做一个orc识别vin码功能在度娘出来的全是那几家公司在做广告,后在在公司数据破解的同事帮助下弄了个apk过来.反编译看看是怎么实现的,后面反编译出来看到是 ...

  4. jar反编译成java工具

    在开发过程中,经常使用到jar包.有的jar是在ide不能查看源码的. 这时就可以使用到jar的反编译工具. 传送门: http://download.csdn.net/detail/wzp09tjl ...

  5. .java编译成.class 与 .class反编译成.java

    了解下这两个文件类型:.java文件是给人看的,.class是给计算机看的.程序员编写的是.java文件,经编译后生成.class文件给计算执行. 相信这两句话很形象的说明了这两个文件的关系了. 1, ...

  6. Java开发必会的反编译知识

    转载自 Java开发必会的反编译知识 编程语言 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language).编程语言(Programming Language)分为 ...

  7. xjc java_JDK Tools - xjc: 将 XML Schema 编译成 Java 类

    xjc 是 JAXB 将 xsd 生成 Java 类的工具. 命令格式 xjc [ options ] schema file/URL/dir/jar ... [-b bindinfo ] ... 命 ...

  8. 反编译apk获得源代码

    花点时间折腾了一下,把apk反编译查看源代码 0.将apk拖入AndroidStudio,利用AS自带的APK Analyzer 可直接查看apk内的图片,xml内容,dex结构,文件尺寸 1.把ap ...

  9. class反编译成java_省事情的java(3)-编译

    摘要 jvm是为了支持java语言的.jvm的具体实现就是运行时环境.那么java语言的源代码怎么变成jvm认可的指令呢?-----这就需要编译器编译. jvm代码 java源程序(.java)是通过 ...

  10. 【反编译】安卓APK反编译为java文件

    [反编译]安卓APK反编译为java文件 准备工具 要反编译的apk文件, 以微信8.0.apk为例子 dex2jar   下载地址 dex2jar-2.0反编译.zip-Android文档类资源-C ...

最新文章

  1. python路径拼接os.path.join()函数的用法
  2. Python零碎知识(2):强大的zip
  3. 在word文档的后面开始页码编
  4. Distinct Characters Queries CodeForces - 1234D(线段树求区间字母种类数)
  5. java处理url中的特殊字符%等
  6. linux 脚本 java_linux系统下运行java项目的脚本编写
  7. 通过u盘装window7
  8. 客户端控件Javascript验证类
  9. 分段式多级离心泵_D型卧式多级泵结构组成及工作原理
  10. Leetcode 刷题 - 排序(day4)_颜色排序
  11. 解决Commend 'ifconfig' not found , but can be installed whith............ifconfig不能查看ip问题
  12. 车载系统大战:左边是BAT,右边是华为小米们
  13. b站评论功能(一级评论到n级)
  14. centos7安装docker并配置镜像加速
  15. NuxtJS 项目部署如何部署到nginx
  16. MUSIQ: Multi-scale Image Quality Transformer【图像质量评估】
  17. 马无夜草不肥,人无横财不富
  18. 利用Google API 进行IP地址定位
  19. 锐捷网络C++应用软件开发助理实习生面试
  20. Mat::ones() 和 Mat::zeros()

热门文章

  1. 记事本写小程序C语言,抖音上用记事本编写爱心小程序教程
  2. java笔记框架部分
  3. 时域有限差分法matlab程序,时域有限差分法的Matlab仿真
  4. 快来看!我把小时候最喜欢的连连看游戏源代码拿来了~
  5. C语言实现直接选择排序
  6. 乐讯网python论坛_麻瓜编程Python Web基础视频教程 - 里客云
  7. 向量的夹角余弦公式_向量的夹角公式是什么?
  8. MAC常用终端命令行
  9. 神策分析 2.1 版本正式发布!
  10. 差分进化算法_差分进化变体-JADE