本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>
提问:如何反编译一个Jar文件?
有人知道是否有免费的反编译器可以反编译整个Jar文件,而不是单个类吗?
回答一
首先需要记住的是,所谓Java archive文件(.jar/.war/etc
)基本上都是fancy.zip文件,并添加了一些清单和元数据。
第二,为了解决这个问题,我在各个层面都使用了不同的工具:
jad
+jadclise
在IDE中反编译.class
文件。
WinRAR
我比较喜欢使用的压缩工具
Beyond Compare
这是我比较喜欢的文件对比工具,如果配置正确的话,可以对任何文件类型进行比较。
以上所有这些的优点是,我不需要持有任何其他扰乱我工作环境的外部工具。所有这些文件我都可以在IDE中直接处理。
回答二
将以下命令插入到decompile.jar.sh
中
unzip -q $jar -d $unjar
jad -d $src -ff -r -lnc -o -s java $unjar/**/*.class > $jad_log 2>&1
if [ ! $debug ]; then
clean_stuff
fi
if [ -d $src ]
then
echo "$jar has been decompiled to $src"
else
echo "Got some problems check output or run in debug mode"
fi
}
function usage {
echo "This script extract and decompile JAR file"
echo "Usage: $0 some.jar [-d]"
echo " where: some.jar is the target to decompile"
echo " use -d for debug mode"
}
# check params
if [ -n "$1" ]
then
if [ "$2" == "-d" ]; then
debug=true
set -x
fi
work $1
else
usage
fi
复制代码
chmod +x decomplie.jar.sh //executable
ln -s ./decomplie.jar.s /usr/bin/dj
准备好使用了,你只需输入dj your.jar
就可以得到包含源代码的jar.src
文件夹了。调式模式的话需要添加-d
选项。
文章翻译自Stack Overflow:stackoverflow.com/questions/6…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END