我觉得百度可以出个会员去广告的特权,我自己是超级会员,我个人感觉单个文件下载速度很不理想,2个还行。而且广告奇多,像一些横幅广告可以通过修改布局去掉,这个比较简单,但是启动广告如果修改了布局还是要等待才能进入主界面。所以要从dex入手。软件有签名校验,一键爆破即可,不怕麻烦可以手动修改dex,百度有教程。
方法一:禁止创建窗口
如图,软件启动时抓一下布局,可以发现布局id是【flash_fr_image】,classes2搜索一下,看看有什么结果。
有2个地方,定位到onCreateView方法的结果。其中关键代码如下:
- .line 127
- iget-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mLayoutView:Landroid/view/View;
- sget p3, Lcom/baidu/netdisk/R$id;->flash_fr_image:I
- invoke-virtual {p1, p3}, Landroid/view/View;->findViewById(I)Landroid/view/View;
- move-result-object p1
- check-cast p1, Landroid/widget/ImageView;
- iput-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mFlashFixedImage(固定图片):Landroid/widget/ImageView;
- .line 128
- iget-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mLayoutView:Landroid/view/View;
- sget p3, Lcom/baidu/netdisk/R$id;->flash_fs_video:I
- invoke-virtual {p1, p3}, Landroid/view/View;->findViewById(I)Landroid/view/View;
- move-result-object p1
- check-cast p1, Landroid/view/TextureView;
- iput-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mFlashFullVideo(全屏动画):Landroid/view/TextureView;
- .line 129
- iget-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mLayoutView:Landroid/view/View;
- sget p3, Lcom/baidu/netdisk/R$id;->flash_fs_image:I
- invoke-virtual {p1, p3}, Landroid/view/View;->findViewById(I)Landroid/view/View;
- move-result-object p1
- check-cast p1, Landroid/widget/ImageView;
- iput-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mFlashFullImage(全屏图片):Landroid/widget/ImageView;
- .line 130
- iget-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mLayoutView:Landroid/view/View;
- sget p3, Lcom/baidu/netdisk/R$id;->flash_fr_video:I
- invoke-virtual {p1, p3}, Landroid/view/View;->findViewById(I)Landroid/view/View;
- move-result-object p1
- check-cast p1, Landroid/view/TextureView;
- iput-object p1, p0, Lcom/baidu/netdisk/ui/advertise/FlashAdvertiseFragment;->mFlashFixedVideo(固定动画):Landroid/view/TextureView;
可以清楚的看到创建的界面,改法比较简单,删掉即可。上面列出的代码全部删掉,启动广告即可去除。但是会有滑动效果,和手动点击跳过一致,有点拖泥带水的感觉,因此我不是很推荐这种方法。当然现在网上大多数的去广告版本都是这种效果,具体是不是这么改的我没去研究。
方法二:找到广告倒计时的老巢
通过MT管理器(或者用NP管理器,智友论坛有下载)的活动记录功能,可以发现他的启动顺序是com.baidu.netdisk.ui.Navigate→com.baidu.netdisk.ui.MainActivity。废话不多说,直接翻Navigate这个文件。
通过smali和java对比,可以发现广告倒计时是3.5秒,16进制是0xdac。当然这些都不是重点。
查看方法列表,enterMainActivity(Z)V和showFlashScreen()V才是关键,因为通过活动记录,最后是运行到MainActivity。先看看showFlashScreen。
通过跳转逻辑,move-result v2为0时才会跳转。改法如图,让v3返回0即可,这个比较简单,改成什么样我不列出来了。当然不要这么改,目的不是这个。
通过分析,可以知道showFlashScreen()V是显示启动广告倒计时的方法,那么现在回到enterMainActivity(Z)V,找到调用的位置,把他删掉。
如图,地址:cond_5有iput-boolean v4, p0, Lcom/baidu/netdisk/ui/Navigate;->mIsCheckDone:Z和invoke-direct {p0}, Lcom/baidu/netdisk/ui/Navigate;->showFlashScreen()V,现在不能让他运行到这个地方,所以删掉红框部分即可,让他直接startMainActivity。
已测试,该方法启动软件直接进入主界面,不会有任何的不适感,不影响第一次登陆。
声明:本站所有资源均由网友分享,如有侵权内容,请在文章下方留言,本站会立即处理。