首页 > 编程知识 正文

ios如何关闭网易云音乐启动广告,iphone通知栏网易云音乐去不掉

时间:2023-05-06 09:59:00 阅读:276984 作者:773

最近更换了自己的Apple账号,然后发现网易云音乐在该区没有上架。由于不想在一台手机上搞两个账号互相切换,于是便想到将App重签名一下安装到手机中。同时,自己蛮讨厌开屏广告的,就顺手写了个Tweak来屏蔽开屏广告。期间有一些小坑,写篇博客来记录一下。

离合器砸壳失败

第一步就是砸壳了,结果发现使用离合器砸壳出错,没有成功生成脱壳的IPA文件。具体原因没有深研,但是看错误提示,猜测应该是离合器不支撑StickerPack的扩展导致的。

尝试使用dumpdecrypted来砸壳,测试成功。砸壳的方法参考了这篇博客。得到砸壳后的可执行文件之后,从越狱机中将App拷贝贝出来,替换掉可执行文件即可。

Theos默认不支持ARC

Theos工程的Makefile中添加下面一句:

ADDITIONAL_OBJCFLAGS = -fobjc-arc复制代码 Tweak实现原理

由于开屏广告的显示时间非常靠前,不可能等到App启动后,从网络获取到数据后再显示,一般的做法就是提前加载好之后要显示开屏广告数据缓存到本地,App每次刚启动后,直接从本地取出数据,然后显示需要的开屏广告给用户。

将二进制拖到Hopper中,搜索关键字advertisement浏览一下搜索结果,很快便发现了一个NMAdvertisementManager名叫类。一番分析后,实现逻辑的Tweak的代码如下:

%hook NMAdvertisementManager- (void)fetchStartupAdvertisement {[[%c(NMAdvertisementManager) defaultManager] performSelector:@selector(clearCachedResources)];[[%c(NMAdvertisementManager) defaultManager] performSelector:@selector(removeOldAdItems)];}%end复制代码

逻辑是:hook了获取数据的函数,每次这个函数被调用的时候,就清除本地缓存的广告数据。这样本地没有了广告数据,也就不会再显示开屏广告了。

最后

虽然我理解App加开屏广告的初衷,但是作为一个用户,真的非常讨厌这个行为。有些App甚至是在程序从后台切到前台的情况都会显示广告,非常烦人。好了,用逆向来把生活变得美好一些吧。

参考资料 小编这里推荐一个群:691040931 里面有大量的书籍和面试资料,很多的iOS开发者都贪玩的树叶交流技术

iOS10.2下的IPA砸壳

本文链接: blog.nswebfrog.com/2018/01/28/…

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。