apk 反编译

758 阅读1分钟

安装java

www.oracle.com/java/techno…

下载工具

apktool:ibotpeaches.github.io/Apktool/
jad:varaneckas.com/jad/
dex-tools:github.com/pxb1988/dex…

apk反编译脚本

#shell脚本 apk.sh
work_path=$1

apktoolDir=apktool
jad=Jad/jad
dex2jarSH=dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh

if [[ $1 =~ "/" ]];then
apkdir="${1%/*}"
else
	apkdir=./
fi
apkname="${1%*.apk}"
apkname="${apkname##*/}"

echo $apkdir
echo $apkname

pushd $apkdir

unzip $apkname.apk -d ${apkname}_unzip
bash ${apktoolDir}/apktool.sh apktool d $apkname.apk
rm -r ./$apkname/original

pushd  ${apkname}_unzip
rm -r ./*xml
rm -r res
bash $dex2jarSH *.dex
unzip ./*.jar -d apk_src
$jad -o -r -sjava -dsrc 'apk_src/**/*.class'
popd

popd

替换工具 apktoolDir、jad、dex2jarSH路径,linux、mac(window需要安装虚拟机或者power shell)
命令行运行: bash apk.sh androidtest.apk 在androidtest.apk 同级目录下生成 androidtest_unzip目录,里面的apk_src 为java源码文件
在androidtest.apk 同级目录下生成 androidtest目录,里面为资源文件

aar反编译脚本

#shell脚本 aar.sh
work_path=$1

apktoolDir=/Users/zhoujie/Documents/Android/apktool
jad=/Users/zhoujie/Documents/Android/Jad/jad
dex2jarSH=/Users/zhoujie/Documents/Android/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh

if [[ $1 =~ "/" ]];then
aardir="${1%/*}"
else
    aardir=./
fi
aarname="${1%*.aar}"
aarname="${aarname##*/}"

echo $aardir
echo $aarname

pushd $aardir

unzip $aarname.aar -d ${aarname}_unzip

pushd  ${aarname}_unzip
unzip ./*.jar
$jad -o -r -sjava -dsrc com/**/*.class
popd

popd

替换工具 apktoolDir、jad、dex2jarSH路径,linux、mac(window需要安装虚拟机或者power shell)
命令行运行: bash aar.sh androidtest.aar
在androidtest.aar 同级目录下生成 androidtest_unzip目录,里面为java源码文件和资源文件