本文为转载文章
原文出自:https://ivonhoe.github.io
一、工具介绍
- apktool: google提供Android apk编译与反编译工具,https://ibotpeaches.github.io/Apktool/
- dex2jar: dex文件转jar文件工具,https://github.com/pxb1988/dex2jar
- jd-gui: 查看jar文件,http://jd.benow.ca/
- keytool: 制作和管理数字证书
- jarsigner: 使用数字证书对jar和apk进行签名
- Android killer: Window系统中,上述工具的集成工具
更多反编译工具可查看:Uncle Chen—Android反编译技术总结
二、去除应用开发助手的广告
CodeKK公众号在17年初推出了一个应用开发助手。V1.0版本是有广告版本的,下面以这个版本为例,简单看下去广告过程。它的后续的V1.1.0和V1.2.0已经去除了广告功能。
2.1、反编译
apktool.sh d -f ./dev-tools.apk
2.2、注释广告代码
这里可以先用dex2jar转jar后查看下源码,会发现使用的是Google AdMob作为广告平台,简单看下代码可以发现在主页面activty_main.xml中包含广告视图的布局文件。所以只需要找到ad_layout.xml
将其android:visibility="gone"
属性设置成gone
就可以了。
2.3、重打包
这里重打包的过程可能会遇到一些错误,不过认真查看日志并结合Google都是可以找到解决方案的,这里暂且不表。使用apktool b命令,生成的apk默认路径为/dist
路径下
apktool.sh b ./dev-tools
2.4、制作一个名为hackapk.keystore的证书,并重新签名应用
制作证书:
keytool -genkey -keystore hackapk.keystore -keyalg RSA -validity 10000 -alias hackapk
签名:
jarsigner -verbose -keystore hackapk.keystore -signedjar dev-tools-no-ads.apk ./dev-tools/dist/dev-tools.apk hackapk
详细的参数可以参考:
APK签名之keytool生成keystore和jarsigner签名apk
2.5、安装
adb install -r dev-tools-no-ads.apk
2.6、下载去广告版本的应用开发助手
三、反编译脚本
#!/bin/sh
workDir=./
if [ "$2" ]
then
mkdir $2
workDir=./$2/
fi
echo $workDir
name=`basename $1 .apk`
zipPath=$workDir$name.zip
##apkTool反编译
smaliDir=$workDir$name@smali
apktool.sh d -f $1 -o $smaliDir
## 解压缩,使用dex2jar处理
unzipDir=$workDir$name@unzip
cp $1 $zipPath
unzip $zipPath -d $unzipDir
d2j-dex2jar.sh -f $unzipDir/classes.dex -o ${workDir}dex2jar.jar
d2j-dex2jar.sh -f $unzipDir/classes2.dex -o ${workDir}dex2jar2.jar
d2j-dex2jar.sh -f $unzipDir/classes3.dex -o ${workDir}dex2jar3.jar
open $workDir
将上述内容保存到本地hack.sh
文件中,使用下面的命令就会把apktool和dex2jar的结果输出到meipu
这个目录中,这样就不需要每次收到敲命令喽,只要知道需要反编译的apk和输出的文件夹名称就可以~
./hack.sh ./美铺_1487845975713.apk meipu