Java反编译Jar包和Android APK(类似.NET Reflector)
JD-GUI
这个JD-GUI可以反编译jar包,用法就是打开jar包直接浏览。
JD-Eclipse
JD-Eclipse是个Eclipse插件,安装方法是打开Eclipse,菜单 Help – > Install new software… 输入 http://java.decompiler.free.fr/jd-eclipse/update,然后一路安装即可。然后行会乱掉,需要安装另外一个插件:Realignment for JD-Eclipse, 下载了以后复制到Eclipse的plugin目录下,重启。然后配置默认打开方式:Eclipse,菜单 Window – > Preference – General – Editors – File Association – *.class,设置Realignment for JD Class File Editor为Default。保存即可。
在Eclipse新建一个项目,新加一个目录叫lib,然后从机器上拷贝所有需要反编译的jar包,点那个目录右键:粘贴。设置项目的compile path把那些jar加到libraries里面,这样就可以打开每个jar包了。还能跳转。
JAD Command
首先下载Jad.exe,这个是个批处理命令行工具,没有界面的,而且只能处理.class文件。你可以把所有的jar包用winrar或者7z先解压到一个目录叫classes,然后写个bat批处理文件内容如下:
jad.exe -r -ff -d src -s java classes/**/*.class
这样就会反编译为*.java文件了。当然,坏处就是目录没了。
1. 全选jars目录下面所有jar包,然后右键选择7z解压:解压到*\
2. 这样就可以把所有jar包解压到以jar包文件同名的目录里面
3. 然后在系统环境变量注册path:把当前jad路径注册进去
4. 然后cmd运行脚本:jad -r -sjava jars/**/*.class
运行之前chdir /d 到 jars目录平级目录
5. 这样就可以全部批量反编译为*.java并原有目录结构不会破坏。
6. 这样可以在Notepad++里面可以用文件查找对文件进行搜索
Android APK的反编译
第一步是把apk重命名为zip并解压,然后用dex2jar处理其中的classes.dex。方法是将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex,生成classes.dex.dex2jar.jar,运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了。如果要处理里面的资源文件、配置文件、图片等,可以用apktool这个工具。
反编译以后的编译
即使你得到了所有的*.java文件,可能还是不能正常编译,因为不清楚各个项目之间的依赖关系,而且还有资源文件、配置文件等。总之,越大的项目,越混淆的项目,越难搞定。