我也来一发,apk去广告
之前坛友yyshun发了个帖子,关于去广告的,原帖在这里 http://www.52pojie.cn/thread-596219-1-1.html。看了一看,于是乎自己将该apk下载过来,玩一玩,目的自然也是将广告给干掉,不过思路不一样,我想从广告加载view的地方杀掉广告。顺手也发个帖子。使用工具:apktool,Android Studio,Notepad++,jadx一、观察整个布局,利用Android Studio的ddms工具,撸一撸它的整体布局,做到心中有数
1.点击此按钮,DDMS将模拟器的当前显示截图并显示出来
2.各个布局的显示块,此时2指向广告区域的布局,
3.具体的子view,
4.在3的上方,其实4是3的父类组件,按照这个树状结构,从3向上点击,就能发现他们的关系,父类组件下面是子组件,细分到最后就是view
由ddms还可以查到一系列的view的ID等等信息,是很有用的工具.
由此得知,广告在一个LinearLayout中
二、其实广告页面在app的初始页面就有了,我上面截的图是按下START按钮后的截图,也就是第二个activity的截图。因此我们可以将注意力放到app的初始页面,由点破面,看看广告在初始页面如何加载的。
现在上apktool,反编译它
反编译成功的话,这个apk的资源啊,代码啊,清单文件都有了,先看清单文件找他的入口activity,由intent-filter可知,这个com.piviandco.app.activities.mHomeActivity就是入口activity,红线圈住的就是证据,呵呵。
三、使用jadx看他的反编译代码,就定位到mHomeActivity
可见这个mHomeActivity是空的,入口activity居然是空的. 但是,但是,但是,它继承自HomeActivity。呵呵,空的又如何,找父类去。所以,要继续找HomeActivity,源码中有个导包,import com.piviandco.boothcore.activities.HomeActivity;
所以定位HomeActivity很容易
观察这个HomeActivity的成员,还有方法,也就是读代码了。发现没有什么和广告相关的,但是这个HomeActivity也是有父类的,它的父类是public class HomeActivity extends BoothActivity,可以从截图上看出来
于是,就到这个BoothActivity中看一看,没办法,就得一层层的看!
在这个类注意到有个成员叫: private AdsContainer adsContainer; 大概意思不就是广告容器吗,命名规范真好啊!再读读代码,几乎都在操作这个adsContainer,因此必须看看它的代码文件去了,或许他就是关键的显示广告的类
在这个AdsContainer 的类文件中,读读代码,有个addView感觉上就是将广告view给加入到布局。这里可以尝试删掉它,找到这个文件的smali文件,删掉这句代码,然后回编译成apk重新安装。
运气很不错的,我开着模拟机几分钟,也没看见广告。大概可知我们准确的从源头关掉了广告view。
其实还有其他方法可以很快的定位,还记得第一步的DDMS吗?它可是将整个广告布局也就是那个LinearLayout的ID都显示出来了,叫做id.ad,可以在jadx中搜这个id.ad来找突破点,也是一种思路的。在代码中总得加载这个LinearLayout的,关于这种思路,有兴趣的朋友可以试试!
附个apk:
链接:http://pan.baidu.com/s/1qYqIcXm 密码:mbbr 确实很不错!来支持一下 谢谢大神提供思路 确实很不错! 确实很厉害啊。 收到 试试楼主的作品 不错的方法 可以,有前途 哎!还没有学会呢 看看怎么样