首页
社区
课程
招聘
[原创]TXT听书去广告
2012-11-21 17:11 23580

[原创]TXT听书去广告

2012-11-21 17:11
23580
声明:本文章仅做技术研究,请勿用于非法用途。

这个软件还不错但是有广告,我的手机安装了手机毒霸,也没能阻止其广告,遂有了自己手动去掉其广告的想法。
软件版本1.6,大家可在网上下载。

有两个目的:
一、去掉右边的应用推荐
二、去掉底部的广告


一、去掉右边的应用推荐:

1、用apktool反编译该程序,在\res\layout布局文件中搜索关键字:“应用推荐”,有三处地方,如下图:

其中在activity_main_book_list.xml 和activity_online.xml 的两处需要修改,还要一处不是我们要找的应用推荐所在的按钮,因此无需改动。
第一处:
<Button android:textSize="15.0sp" android:textColor="@color/red" android:layout_gravity="right|center" android:id="@id/btn_goods" android:background="@drawable/btn_goods_bg" android:layout_width="30.0dip" android:layout_height="wrap_content" android:text="应用推荐" />

第二处:
<Button android:textSize="15.0sp" android:textColor="@color/red" android:layout_gravity="right|center" android:id="@id/btn_goods" android:background="@drawable/btn_goods_bg" android:layout_width="30.0dip" android:layout_height="wrap_content" android:text="应用推荐" />

第三处:
<TextView android:textSize="18.0sp" android:textColor="#ff595959" android:ellipsize="marquee" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="3.0dip" android:layout_marginRight="3.0dip" android:text="免费实用应用推荐" android:singleLine="true" android:layout_weight="1.0" android:layout_centerInParent="true" />


把这两处的android:layout_width和android:layout_height的值都改成0dip,让这个按钮不可见,就OK了,这个很简单。

二、去掉底部的广告
1、在布局文件中容易发现广告的关键字adlayout,可以猜测是放广告的位置,那么在\res\layout布局文件中搜索关键字:“id/adlayout”共有5处,如下图:

<LinearLayout android:gravity="center_horizontal" android:id="@id/adlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" />

同样高度和宽度都改成0dip,那么广告是看不见了,但是不能阻止程序加载广告,实际上广告是运行了,只是我们没让它显示出来,由于广告也很费手机的流量,所以我们要通过改变代码让广告不运行。

2、通过adlayout来找是程序的何处访问了该布局文件,我们可以在smali\com\aitingshu\R$id.smali里发现:
Line 8: .field public static final adlayout:I = 0x7f09000b
再次搜索smali文件中有哪些方法调用了0x7f09000b,发现在smali\com\aitingshu\base\BaseAdActivity.smali当中的.method protected final b()V方法调用了:

.method protected final b()V
    .locals 5

    const v4, 0x106000c

    const v0, 0x7f09000b

    invoke-virtual {p0, v0}, Lcom/aitingshu/base/BaseAdActivity;->findViewById(I)Landroid/view/View;

    move-result-object v0

    check-cast v0, Landroid/widget/LinearLayout;

    if-eqz v0, :cond_0

    new-instance v2, Landroid/common/d;

    sget-object v1, Landroid/common/c;->a:Landroid/common/c;

    invoke-direct {v2, p0, v1}, Landroid/common/d;-><init>(Landroid/app/Activity;Landroid/common/c;)V

    invoke-virtual {v2, v4}, Landroid/common/d;->setBackgroundColor(I)V

    invoke-virtual {v2}, Landroid/common/d;->a()V

    const/4 v1, 0x2

    invoke-virtual {v2, v1}, Landroid/common/d;->findViewById(I)Landroid/view/View;

    move-result-object v1

    check-cast v1, Landroid/widget/TextView;

    const/4 v3, -0x1

    invoke-virtual {v1, v3}, Landroid/widget/TextView;->setTextColor(I)V

    const/4 v1, 0x3

    invoke-virtual {v2, v1}, Landroid/common/d;->findViewById(I)Landroid/view/View;

    move-result-object v1

    check-cast v1, Landroid/widget/TextView;

    const v3, -0x777778

    invoke-virtual {v1, v3}, Landroid/widget/TextView;->setTextColor(I)V

    sget-object v1, Lcom/aitingshu/base/BaseAdActivity;->b:Landroid/widget/LinearLayout$LayoutParams;

    invoke-virtual {v0, v2, v1}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V

    invoke-virtual {v0, v4}, Landroid/widget/LinearLayout;->setBackgroundColor(I)V

    const-string v0, ""

    const-string v1, "init ad done"

    invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    :cond_0
    return-void
.end method

这段代码较长,实际上我们不需要关注代码具体做了什么,只要注意到尾部 "init ad done",表示广告初始化结束,那么之上的一段代码就是广告初始化的过程,我们要跳过去,不让广告初始化,在此方法的前面几句代码中,有一个条件跳转:
if-eqz v0, :cond_0
直接跳到方法尾部返回,因此,我们把if-eqz v0, :cond_0改成goto :cond_0,无条件跳转,越过广告初始化过程,保存文件,重新编译,签名,测试,成功去掉底部广告。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (24)
雪    币: 4181
活跃值: (2497)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lylxd 2012-11-21 18:35
2
0
学习~ 
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GGLHY 2012-11-21 21:22
3
0
学习了!!!
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
孤单的狼 2012-11-21 23:36
4
0
mark 留名待看
雪    币: 85485
活跃值: (198795)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2012-11-22 17:17
5
0
Thanks for share.
上传的附件:
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
qyc 4 2012-11-22 19:50
6
0
学习。。。。。。。。。
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
hrpirip 1 2012-11-23 13:13
7
0
Mark。。。。。。。
雪    币: 327
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cheryl 2012-11-23 14:04
8
0
不错不错 虽然看起来简单  但是想必分析过程还是不简单
雪    币: 23
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
火鸽 2012-11-23 15:20
9
0
学习了,
雪    币: 645
活跃值: (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wixi 2012-11-23 18:00
10
0
看到我熟悉的notebook++
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kingcomer 2012-11-23 22:24
11
0
现在都转到andiron平台了,小菜表示压力很大~
雪    币: 1579
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
柔情似水 2012-11-25 16:18
12
0
高手啊,学习了,呵呵
雪    币: 34
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
praying 2012-11-26 15:08
13
0
不错。
还有读一段就会 播放语音 好像是 ‘**’ 语音。欢迎使用
可以去掉不。。~~
雪    币: 507
活跃值: (120)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
鬼谷子c 1 2012-12-9 07:26
14
0
其实,更加深入的去除广告,我们可以从manifest文件,或者smali/com下护着smali文件夹下找到对应的广告包,进行删除,然后在eclipse中进行调试,按照出错的提示进行寻找代码,然后删除调用这个广告包的代码即可,针对一般广告都可以去除,不过对于google的云端推送有难度,需要花时间分析才行,楼主辛苦~
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
uwmnth 2012-12-11 08:22
15
0
新手路过,简单的思路,非常适合上手
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
YuSheng 1 2012-12-15 23:04
16
0
学习了,谢谢。
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yodamaster 2012-12-20 12:31
17
0
感谢分享,学习。
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
VicentWJ 2012-12-22 00:21
18
0
楼主的思路非常好,感谢分享!
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2012-12-26 11:11
19
0
软件作者使用了文字来显示。 所以在搜索上有捷径。 若使用图片。  在处理 上会浪费一些时间。
雪    币: 202
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jonepjxh 2013-3-18 12:12
20
0
谢谢了,学习了
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
透明色 2 2013-3-19 06:23
21
0
都转移动啦。。。表示严重out
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
diqi 2013-4-7 00:27
22
0
怎么不提供下破解完的软件下载下呢?
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
janecd 2013-4-8 11:41
23
0
收获很大,学习了。
雪    币: 1110
活跃值: (554)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
王嘟嘟 2017-12-6 16:14
24
0
有没有apk什么可以学习的
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mogoyu 2017-12-8 11:16
25
0
不错了对于新手而言比较有用
游客
登录 | 注册 方可回帖
返回