赞
踩
获取工具:提供两个链接,一个是github的,需要翻墙,有更新,另一个不用翻墙的,但从16年后就没有更新了
Releases · pxb1988/dex2jar · GitHubhttps://github.com/pxb1988/dex2jar/releases
dex2jar download | SourceForge.nethttps://sourceforge.net/projects/dex2jar/
dex2jar提供了一组批处理和sh脚本来支持windows和Linux上执行
下面是git hub上 Bob Pan 在 3 Nov 2014 写的操作流程,与现在的实际条件已经有所不同,但这几步流程是一样的,有所不同的是jdk现在可以使用jdk8,后续应该还可以使用jdk17。
Install JDK7
- // For Ubuntu
- sudo apt-get install openjdk-7-jre
Download dex2jar from dex2jar - Browse Files at SourceForge.net
Extract dex2jar-version.zip to a folder. for example /home/panxiaobo/, _C:_
- // For Linux
- unzip -x dex2jar-version.zip -d /home/panxiaobo
use dex2jar to generate .jar file. dex2jar will generate a file named someApk-dex2jar.jar in the working folder.
- // For Linux, Mac OSX, Cygwin
- sh /home/panxiaobo/dex2jar-version/d2j-dex2jar.sh /home/panxiaobo/someApk.apk
- // For Windows
- C:\dex2jar-version\d2j-dex2jar.bat someApk.apk
use a decompiler to view the source.
that's it
下面的链接是反编译出jar包之后的查看工具,jd-gui并不是唯一的工具,使用AS也是可以通过加载jar包的方式但看到反编译出来的代码。jd使用很简单,和普通的文件工具差不多,就不专门介绍了。
获取工具:以下站点提供了原始的jar包下载,读者可以按需下载对应版本。如果有兴趣,读者也可以在这个git仓库上阅读源码。JesusFreke / smali / Downloads — Bitbuckethttps://bitbucket.org/JesusFreke/smali/downloads/
示例:反编译serivces.odex文件,
第一步把odex解码为smali文件,这一步会把对应odex文件编译出当前目录的out路径下
java -jar baksmali-2.5.2.jar x services.odex
第二步把smali文件编译为dex包
java -jar smali-2.5.2.jar ass -o classes.dex out
第三步,使用dex反编译方法,反编译出源代码。
注意,odex反编译时,应尽可能保证当前odex有依赖的包都在当前路径下
针对特定的版本,命令可能存在差异,可以使用 -h或--help列出当前版本的命令列表
如我使用的2.5.2的版本,如果是用于反编译 odex或oat文件,使用deodex,de,x三个命令都可以
参考命令如下:java -jar baksmali-2.5.2.jar x services.odex
E:\tools\bux2.0\push\bak\framework\oat\arm64>java -jar baksmali-2.5.2.jar h
usage: baksmali [--version] [--help] [<command [<args>]]
Options:
--help,-h,-? - Show usage information
--version,-v - Print the version of baksmali and then exit
Commands:
deodex(de,x) - Deodexes an odex/oat file
disassemble(dis,d) - Disassembles a dex file.
dump(du) - Prints an annotated hex dump for the given dex file
help(h) - Shows usage information
list(l) - Lists various objects in a dex file.
See baksmali help <command> for more information about a specific command
E:\tools\bux2.0\push\bak\framework\oat\arm64>
smali的命令列表如下
E:\tools\bux2.0\push\bak\framework\oat\arm64>java -jar smali-2.5.2.jar h
usage: smali [-v] [-h] [<command [<args>]]
Options:
-h,-?,--help - Show usage information
-v,--version - Print the version of baksmali and then exit
Commands:
assemble(ass,as,a) - Assembles smali files into a dex file.
help(h) - Shows usage information
See smali help <command> for more information about a specific command
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。