登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

Android安全之APP去广告

ivonhoe   2018-03-20 21:11   收藏 我也要投递项目>>

本文为转载文章
原文出自:https://ivonhoe.github.io

一、工具介绍

更多反编译工具可查看: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