如何反编译一个Jar文件?| Java Debug 笔记

本文正在参加「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
喜欢就支持一下吧
点赞0 分享