一个比较jar包差异的脚本(解压+反编译+diff)

因为要hack别人的jar包,搞完打出新jar包,总是有不放心,
于是写了这个脚本。

还真让我发现原始的jar包,好有些ajc增强的东西,也是醉了。。。

。。不过,看来这脚本挺有用的。

于是分享出来,欢迎拍砖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

if [ $# -lt 2 ] ; then
echo "USAGE: $0 \$leftJar \$rightJar"
exit 1
fi

leftJar=$1
rightJar=$2

DATETIME=`date +%Y%m%d%H%M%S`

function preProcess(){
targetJar=$1
unzipDir=$2
echo "Unzip $targetJar to $unzipDir now."
unzip -qq -o $targetJar -d $unzipDir 2>&1
echo "Jad decompile all java file."
# find . -type f -name \*.class
jad -o -r -d$unzipDir/src -sjava $unzipDir/**/*.class 1>/dev/null 2>&1
}

preProcess $leftJar /tmp/diffjar_${DATETIME}_left
preProcess $rightJar /tmp/diffjar_${DATETIME}_right
diff -r -w /tmp/diffjar_${DATETIME}_left/ /tmp/diffjar_${DATETIME}_right/ > /tmp/diffjar_${DATETIME}.diff
echo "Finish. PLS use vim open:"
echo " /tmp/diffjar_${DATETIME}.diff"

PS:需要提前安装好unzipjad