这里讲解所用到的包就在阿里云盘中【java反编译jar包-binc_decompile.7z,这个自行下载】:
由于阿里云盘不能分享压缩包,所以这里提供了一个快捷下载链接 下载地址 ;将【反编译工具—脚本版】整个下载下来就行了(这个里边缺少一个bat脚本,我们可以不用,直接使用shell版本就行了;)
注意:阿里的原因,用idm 、fdm下载失败的话,关掉idm、fdm的chrome插件,用chrome直接下载就行了;
0 使用步骤:
- 下载
- 将下载文件解压
- 建议使用shell版本的脚本执行,bat脚本长时间为用了, 可能不好使了!
- 进入shell_fanbianyi目录
- 创建一个目录(随便起名,我这里留了一个source_jar的目录,可以直接用)
- 将要反编译的*.jar包放入第四步创建的目录中
- 回到shell_fanbianyi目录
- 右键鼠标,选择
Git bash here ,
执行命令:./foreach.sh
- 或者直接双击foreach.sh ,也能运行;
- 结束后进入shell_fanbianyi目录就能看到目标java文件了;(每个jar包反编译后都有一个对应的文件夹存放jar中的java文件)
- 记住上边的路径,这个就是源码包了,我们可以在idea中导入这个源码包了,这样的话,我们就能全局搜索jar中的方法了(**没有源码的只能搜到jar中文件,有了源码之后就能搜索jar包中的内容了(比如方法名,代码片段等)**)
- idea导入源码有两种方式
- 第一种:随便找个jar点进去,显示的都是**.class名;右上角有个
choose resource
即可导入源码; File -> Project Structure -> Modules-> Sources-> Add Content Root
- 第一种:随便找个jar点进去,显示的都是**.class名;右上角有个
- 导入源码之后,就可以愉快的玩耍了;再看源码就可以随便点击随便搜索了;住就是能够搜索了,没有源码的话有些搜索是搜索不到jar内部去的;
0.5 补充
maven项目导出所有的jar包**mvn dependency:copy-dependencies -DoutputDirectory=lib**
1 这个脚本的编写过程(演变过程)
1 例0 单个jar反编译
java -jar procyon-decompiler-0.5.36.jar -jar [target.jar] -o [dist_dir]
java -jar procyon-decompiler-0.5.36.jar [target.class] -o [dist_dir]
这里依赖jdk1.7及以上,测试的时候,我用的是jdk8;
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/strobel/decompiler/DecompilerDriver : Unsupported major.minor version 51.0
改变环境变量太麻烦的话,可以将path中java的路径往后放放,不要放在第一位;这样的话,用java_home的还是1.6,不用java_home的还是1.7(因为在system32中有一个java.exe的文件,这个是1.7的)
修改环境环境变量JAVA_HOME win+Pause
java_home >> D:\programs_my\java\JAVA1.6_32bit\jdk1.6
java_home >> D:\programs_my\java\JDK1.8
例如 反编译jar:
解压当前目录下的f22.jar (当前目录打开cmd)
2 例1、 —这个能反编译一个class
java -jar procyon-decompiler-0.5.36.jar LoadDataToScm.class -o f11<br /> java -jar D:_binC\download\邮件\00_反编译_00\procyon-decompiler-0.5.36.jar 11\LoadDataToScm.class -o f44
3 例2、 —这个能反编译一整个jar包
java -jar procyon-decompiler-0.5.36.jar -jar eos-xml-factory.jar -o eos-xml-factory<br /> java -jar D:_binC\download\邮件\00_反编译_00\procyon-decompiler-0.5.36.jar -jar 【jar名称】 -o 【输出路径】
4 例3、 —如果想一次性处理反编译多个class,
可以选择将整个项目打成jar包,然后用例2中的命令反编译;
即:将 想反编译的所有的class文件 统统复制到一个新文件夹中,然后手动将这个文件件打jar包,然后再反编译这个jar
步骤1: 先将所有class文件复制到 11目录下
步骤2: jar cf j11.jar 11 //将11 目录 打成 j11.jar
步骤3: java -jar procyon-decompiler-0.5.36.jar -jar j11.jar -o 111 //将j11.jar 反编译,并输出到111文件夹;即所有得class文件反编译结果都在 111 目录下;
5 例3最通用了;针对例3,我们可以写脚本,然后自动执行
!!!windows脚本!!! (脚本很久没有用过了,用的时候检查一下,推荐使用shell版本)
—一次将多个class全部反编译,且结果会按照java的目录结构进行创建目录
将要反编译的文件放到新建的文件夹中,然后将该文件夹作为参数,执行下面命令
cmd
auto.bat 文件夹名 !!!!!!!!!!!
例如
auto.bat D:binC\download\邮件\00反编译_00\11
示例
auto.bat C:\Users\yxyc-chebin\Desktop\window反编译脚本版\1031
6 !!!!shell 脚本 !!!!(强烈推荐)
一次将多个jar包全部反编译,且每个jar的内容都会单独存放到一个目录中(abc.jar反编以后源码存放在abc目录中)<br /> 过程:<br /> 将所有的jar放到 C:\Users\yxyc-chebin\Desktop\window_fanbianyijiaobenban\fanbianyilujing\ 下,注意不要有中文<br /> 然后进入C:\Users\yxyc-chebin\Desktop\window_fanbianyijiaobenban\fanbianyilujing路径;右键git bash here;<br /> 最后执行命令<br /> sh C:\Users\yxyc-chebin\Desktop\window_fanbianyijiaobenban\fanbianyilujing\foreach.sh