Android Java 反编译工具:jadx

对于Android 的Java 反编译工具,我最先用的是Dex2Jar, 这个工具用了很长时间,也非常好用。为了有更多的选择,扩展视野,此篇介绍另一个开源的反编译工具jadx!

开源地址:https://github.com/skylot/jadx

我是一个懒人,直接copy开源文档如下,自己凑合着看吧,相信大家看懂应该都没有问题!

Downloads

Building from source

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

(on Windows, use gradlew.bat instead of ./gradlew)

Scripts for run jadx will be placed in build/jadx/bin and also packed to build/jadx-<version>.zip

Run

Run jadx on itself:

cd build/jadx/
bin/jadx -d out lib/jadx-core-*.jar
#or
bin/jadx-gui lib/jadx-core-*.jar

Usage

jadx[-gui] [options] <input file> (.dex, .apk, .jar or .class)
options:
 -d, --output-dir        - output directory
 -j, --threads-count     - processing threads count
 -f, --fallback          - make simple dump (using goto instead of 'if', 'for', etc)
 -r, --no-res            - do not decode resources
 -s, --no-src            - do not decompile source code
     --show-bad-code     - show inconsistent code (incorrectly decompiled)
     --cfg               - save methods control flow graph to dot file
     --raw-cfg           - save methods control flow graph (use raw instructions)
 -v, --verbose           - verbose output
     --deobf             - activate deobfuscation
     --deobf-min         - min length of name
     --deobf-max         - max length of name
     --deobf-rewrite-cfg - force to save deobfuscation map
 -h, --help              - print this help
Example:
 jadx -d out classes.dex

Troubleshooting

Out of memory error:
  • Reduce processing threads count (-j option)
  • Increase maximum java heap size:
    • command line (example for linux): JAVA_OPTS="-Xmx4G" jadx -j 1 some.apk
    • edit 'jadx' script (jadx.bat on Windows) and setup bigger heap size: DEFAULT_JVM_OPTS="-Xmx2500M"

Contribution

To support this project you can:

  • Post thoughts about new features/optimizations that important to you
  • Submit bug using one of following patterns:
    • Java code examples which decompiles incorrectly
    • Error log and link to public available apk file or app page on Google play

And any other comments will be very helpfull, because at current stage of development it is very time consuming to findnew bugs, design and implement new features. Also I need to prioritize these task for complete most important at first.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。 使用方法 打开apk文件java -jar ClassyShark.jar -open <YOUR_APK.apk> 将生成的所有数据导出到文本文件里java -jar ClassyShark.jar -dump <BINARY_FILE> 将指定类生成的文件导出到文本文件里java -jar ClassyShark.jar -dump <BINARY_FILE> <FULLY_QUALIFIED_CLASS_NAME> 打开ClassyShark,在GUI界面展示某特定的类 java -jar ClassyShark.jar -open <BINARY_FILE> <FULLY_QUALIFIED_CLASS_NAME> 检测APKjava -jar ClassyShark.jar -inspect <YOUR_APK.apk> 导出所有的字符串 java -jar ClassyShark.jar -stringdump <YOUR_APK.apk> 工具介绍: apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar 作用:将apk反编译java源码(classes.dex转化成jar文件) jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源码文件、 smali-1.2.6.jar  用途:.smali文件 转成 classes.dex文件  说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改。 用法举例:命令行:java -jar smali.jar classout/ -o classes.dex 下载:http://code.google.com/p/smali/downloads/list 2、baksmali-1.2.6.jar  用途:classes.dex文件 转成 .smali文件  说明:classes.dex不便于查看和理解,使用此工具转成的.smali文件易于阅读和修改。 用法:命令行:java -jar baksmali.jar -o classout/ classes.dex 下载:http://code.google.com/p/smali/downloads/list
### 回答1: jadx是一款开源的Java反编译工具,可以将已编译的Java代码转换为可读性较高的源代码。它支持将Android APK、DEX和JAR文件进行反编译,并以可视化界面展示转换后的代码。 jadx具有简单易用的特点,使用者只需选择目标文件,然后点击反编译按钮即可开始转换过程。转换后的代码可以直接在IDE中进行查看、编辑和调试。相比其他反编译工具jadx输出的源代码结构清晰,保留了类、方法、变量和注释等重要信息,使得开发者能更容易理解和修改源码。 此外,jadx还提供了一些额外的功能,如搜索功能、搜索结果高亮显示、导出代码等。这些功能进一步增强了开发者对源代码的理解和控制能力。 jadx的开源性质使得它具有高度的可扩展性和灵活性。用户可以自己定制特定的转换策略或添加额外的功能,满足自己的需求。 总而言之,jadx是一款方便、强大的Java反编译工具,可帮助开发者更好地理解和分析已编译的Java代码。无论是逆向工程、故障诊断还是学习他人代码,jadx都是一个非常有用的工具。 ### 回答2: Jadx是一个用于反编译Java代码的工具。它可以将Java字节码文件(.class文件)转换回可读性较高的Java源代码。 Jadx具有以下一些主要功能: 1. 完整支持Java 8:Jadx可以处理Java 8及更高版本的代码,包括使用Lambda表达式、方法引用和其他新特性编写的代码。 2. 用户友好的界面:Jadx提供了一个简洁直观的用户界面,使得使用该工具变得非常容易。用户可以轻松地导入需要反编译的.class文件,然后立即查看源代码。 3. 多平台支持:Jadx可在Windows、Linux和macOS等多种操作系统上运行,因此可以满足不同用户的需求。 4. 高质量的源代码输出:Jadx生成的源代码质量很高,经过反编译的代码结构清晰,易于理解和修改。 5. 快速的反编译速度:Jadx的反编译过程很快,可以在几秒钟内完成大部分工作。 6. 适用于安全审计:Jadx可用于检查编译后的代码的安全性,帮助开发人员发现潜在的安全问题。 总之,Jadx是一款强大且易于使用的Java反编译工具,可以帮助开发人员或安全专家分析和理解Java代码,尤其是处理第三方库或闭源代码时非常有用。 ### 回答3: jadx是一款流行的Java反编译工具,用于将Java字节码文件转换回可读的源代码。它可以帮助开发人员或安全研究人员分析、理解和修改已编译的Java应用程序。 使用jadx时,只需将目标Java应用程序的字节码文件(.class文件或.jar文件)加载到工具中,jadx会将字节码还原为原始的Java源代码。这使得开发人员可以查看和分析程序的逻辑、算法以及底层实现。 jadx具有用户友好的界面,可以将源代码以层次结构的方式进行显示,以便更好地理解和导航代码。它还提供了搜索和过滤功能,让用户可以根据关键字或特定的代码细节来查找和浏览源代码。 jadx工具还支持将反编译的源代码导出为可供其他IDE使用的格式,如Eclipse或IntelliJ IDEA。这让开发人员可以在自己熟悉的开发环境中继续分析和修改代码。 总的来说,jadx是一款功能强大且易于使用的Java反编译工具,它为开发人员和安全研究人员提供了分析、修改和理解Java应用程序的有力工具。无论是用于学习、调试还是安全评估,jadx都是值得推荐的工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值