Android APP破解去广告完整教程

最近下了一款小众APP,功能实用,界面简洁,然而用了几分钟页面下方竟然弹出了小窗口广告!并且每分钟自动更新!!耗电、耗流量、占屏幕空间、闪烁吸引眼球、不小心还会误触,这种广告方式是本强迫症患者无法容忍的,相信大部分人也会反感,因此常用的那些APP中也几乎没有看到过。从学习的角度出发,本人尝试对这款应用进行破解,“屏蔽”其中的广告功能。

1. 解压

下载apk文件,修改后缀名为.zip,解压到文件夹中

apk解压文件夹.png

其中:

  • assets文件夹 -- 放原生资源文件
  • lib文件夹 -- 放引用库文件
  • META-INF文件夹 -- 放清单文件
  • res文件夹 -- 放资源文件
  • AndroidManifest.xml -- 安卓清单
  • resources.arsc -- 主资源文件

以上这些主要跟资源有关,如果需要提取一些图片或声音资源可以直接在文件夹中找,剩下的classes.dex文件就比较重要了,它是安卓中classes类的打包格式,代码都在这里面。

2.查看jar

查看代码需要将dex文件转换为jar文件,这里推荐一款软件“安卓逆向助手”

安卓逆向助手.png

里面集成了apktool、autosign、dex2jar、jd-gui等常用工具,十分方便。
这里选择其中的dex2jar功能,源文件浏览选中解压出来的classes.dex文件,点击操作按钮,即可自动生成classes_dex2jar.jar文件。
再选jd打开jar功能,就可以调用jd-gui查看jar文件了。

jd-gui查看代码.png

jd-gui中可以看到,大部分代码经过了混淆,而且经过编译器优化后的代码跟源码会有所不同,不过逻辑还是一样的,认真看还是能大致看懂。

3.寻找广告页面和代码

要找到广告页面的Activity,将手机连接电脑,在Android Studio或Eclipse的logcat中会输出日志,在日志搜索栏输入“ActivityManager”,这样启动广告页面时,log中就能看到Acitivty的全名,然后在jd-gui中找到这个Activity。

无标题.png

分析代码:
广告主要使用了adStream和adwo这两个view,它们分别在adInit_av() 和 adInit_aw()这两个方法中初始化和添加到页面。如果修改这两个方法,不让它们初始化和添加,那么就达到目的了,同时其他用到这两个view的地方要进行判断,防止引起程序崩溃,幸运的是原代码中已经对它们进行了空判断。

3.解包修改smali汇编代码

找到广告页面和方法后需要修改,直接改jar文件肯定是不行的,需要对原apk文件进行解包,解包后生成的smali文件可以直接用文本编辑器修改。解包使用apktool,将apk文件(如果刚才改成了.zip,就改回.apk)复制到apktool文件夹下,输入命令(xx.apk换成实际名字):

apktool d xx.apk
apktool解包.png

注意:apktool工具版本太老可能会解包失败,这时需要下载一个较新版本的

很快在相同文件夹下就能看到解包后的文件夹,与apk同名

解包.png

进入解包生成的目录中,看到文件夹基本与直接解压类似,不同的是生成了smali文件夹,生成的汇编代码都在里面,目录结构跟包名相同

解包后目录.png

很容易找到需要修改的页面代码XXXActivity.smali,用文本编辑器可以直接打开修改。

smali代码.png

搜索需要修改的方法adInit_av(),如下是方法的定义:

.method private adInit_av()V
    .locals 2
    .prologue
    ...
    return-void
.end method

中间省略号部分是方法的主体,根据上面对代码的分析,删除方法主体就可以。然后找到另外一个方法adInit_aw(),同样删除方法主体,保存文件。

4.重新打包签名

修改好之后使用apktool重新打包。
输入命令(-o代表输出文件名):

apktool b xx -o xx_new.apk
重新打包.png

很快重新生成apk文件,不过这个apk文件不能直接安装的,因为没有签名。使用安卓逆向助手进行签名。

重新签名.png

因为使用的是非官方签名,与官方的APP是不兼容的,安装前先需要卸载官方的,安装后也是不能正常升级的。
运行一下,一切正常,广告没有了,世界清静了~~~

5.总结

  • 现在有的apk使用了较好的加密机制,可能解压后classes.dex代码文件被封装进.so文件中,需要另行破解,难度会比较大,这里不作讨论;
  • 据说jar文件里的class文件也能使用工具修改,修改后重新打包成jar,这样可能不用重新签名。本人没有试过,有兴趣的读者可以尝试看看是否有效;
  • smali是Dalvik虚拟机指令语言,语法跟Java不同。在短时间不熟悉的情况下,修改常量、删除方法内容等是比较简单的操作。如果需要其他操作,比如添加类、修改语句等,可以自己建立一个安卓工程,将相同逻辑的Java语句写进去,生成apk解包查看生成的smali语句,再参照这些生成语句修改;
  • 破解成功主要因为这个应用功能较简单,逻辑比较清晰,没进行彻底的混淆,破解其他应用可能难度完全不同。

重申:本人出于学习的目的对这款带小窗口广告APP进行了破解去广告,APP开发不易,大家不要进行恶意破解。此外,本人技术水平有限,希望抛砖引玉,文中有误处还望不吝赐教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容