吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 40118|回复: 97
上一主题 下一主题
收起左侧

[iOS 原创] iOS 逆向 今日头条-去除置顶、广告,还你一个清爽的头条

  [复制链接]
跳转到指定楼层
楼主
阿布很拽 发表于 2018-9-10 15:13 回帖奖励
本帖最后由 阿布很拽 于 2018-9-10 15:29 编辑

求评分,求热心  哈哈

注册吾爱很多年了,终于自己也可以发布原创帖子了。嘿嘿
很喜欢今日头条这个App,但是又很反感他的广告和置顶,那就动起手来优化吧。
个人网站 十一同学 欢迎大佬点评 只有浏览 没评价 好凄惨

目的

1.去除启动页广告
2.去除列表推荐广告
3.去除评论顶部推荐广告
4.去除烦人的置顶

工具及软件

越狱的手机,iOS 9.3.1
dumpdecrypted.dylib ipa脱壳
class-dump 导出头文件
Thor 手机上抓包
Reveal Mac上界面布局分析

开干

抓包

利用Thor软件,抓一个列表返回的json数据,分析特定的字符串。
json数据
通过分析返回的数据,我们可以知道,“stick_label:'置顶'”。暂时记录,留着后面用。

去除启动页广告

用Reveal分析app布局,由于广告闪屏跳转太快,未能捕捉到完整的页面,不过没关系。通过最底层的红色view,我们可以找到这是一个由TTAdSplashControllerView展示的视图,也就是启动页广告。
启动页
我们在头文件中看看TTAdSplashControllerView有什么方法。图中方框标记的,即为当前广告视图的初始化方法,我们利用Theos去hook该方法。
头文件
另外,我们也将广告视图上面的子视图的show方法hook掉。

%hook TTAdSplashControllerView

/*去除启动页广告*/

- (void)setModel:(NSArray *)model{}#这个是广告的数据模型的set方法,我们直接替代。这样也不会给他返回数据了

- (id)initWithFrame:(struct CGRect)arg1 model:(id)arg2{

return nil;

}

%end

%hook TTAdSplashView /*这个是广告视图的子视图,我们直接hook掉他们的显示方法,这样他们也不会再显示*/

- (void)showADVideoView{};

- (void)showADImage{};

%end

去除评论顶部广告

每篇文章的评论顶部都有一个推广App的广告,我们通过Reveal分析可以知道它的类是ExploreDetailADContainerView。方法和去除启动页广告一样,就是直接去除他的数据,这样就不会显示广告。但是这种做法的前提是开发这个App的人员对数据做了判断,如果他没有判断,那App肯定会崩溃的,我之所以敢肯定他做了判断是因为,有的评论页面有广告,有的评论页面没广告,因此他肯定做了判断的。

+ (void)trackAppHideIfExists:(id)arg1;

@property(nonatomic) double referHeight; // @synthesize referHeight=_referHeight;

@property(retain, nonatomic) NSMutableDictionary *showEvents; // @synthesize showEvents=_showEvents;

@property(retain, nonatomic) NSMutableDictionary *adViewFrames; // @synthesize adViewFrames=_adViewFrames;

@property(retain, nonatomic) NSMutableArray *adViews; // @synthesize adViews=_adViews;

@property(retain, nonatomic) TTAdDetailViewModel *viewModel; // @synthesize viewModel=_viewModel;

@property(nonatomic) __weak id <TTAdDetailContainerViewDelegate> delegate; // @synthesize delegate=_delegate;

@property(nonatomic) _Bool isVideoAd; // @synthesize isVideoAd=_isVideoAd;

@property(copy, nonatomic) NSArray *adModels; // @synthesize adModels=_adModels;

可以清楚的看到一个属性TTAdDetailViewModel *viewModel;,我们hook它的set方法。

%hook ExploreDetailADContainerView

/*去除顶部广告*/

- (void)setAdModels:(NSArray *)adModels{

}

%end

去除置顶咨询和列表广告

上面两个去除都很简单,我们找到他的初始化方法或者启动数据模型,直接干掉就可以了。但是这个置顶的咨询和列表中的广告就不一样了。他是在数据源里面,因此我们找到数据源,删除数据源中的广告模型即可。这样既不影响App的正常使用,而且也非常便捷。

我们找到当前列表的dataSource,为ExploreMixedListBaseView,但是在ExploreMixedListBaseView的头文件里面没有看到任何数据和数据模型之类的,因此推测有一个专门管理数据的类,通过各个属性名的直接排除,我们看到@property(retain, nonatomic) ExploreFetchListManager *fetchListManager;  我们直接查看ExploreFetchListManager 的头文件  

在ExploreFetchListManager的头文件中,我们看到一个数组@property(retain, nonatomic) NSArray *items;,那我们直接打印这个数据,看看运行的时候,输出的是啥。

NSArray *items
不难发现,这就是我们要找的数据。查看ExploreOrderedData的头文件,也不难发现我们之前抓包提取的特殊参数stick_label

到此,我们找到数据了,我们只要对数据进行判断,处理,然后重新返还给他即可

%hook ExploreFetchListManager

- (void)setItems:(NSArray *)items{

NSMutableArray *temArray = [NSMutableArray new];

NSMutableArray *adArray = [NSMutableArray new];

NSLog(@"****1items = %@",items);
if(items.count > 0){

for (ExploreOrderedData * model in items) {

[temArray addObject: model];

}

}
[temArray enumerateObjectsUsingBlock:^(ExploreOrderedData * model, NSUInteger idx, BOOL * _Nonnull stop) {

if([[model stickLabel] isEqualToString:@"置顶"] || [[model adIDStr] length] > 0){

[adArray addObject: model];

}
}];
if(adArray.count > 0){

[temArray removeObjectsInArray:adArray];

}
items = [temArray mutableCopy];

%orig;

}
%end

到此,所有的广告,都被去除了。
deb插件下载
上面这个是去广告的deb插件,越狱手机直接安装即可。安装完,重新打开软件,还你一个清爽的头条。

个人网站 十一同学 欢迎点评 只有浏览量,一直没评论😂😂

免费评分

参与人数 27威望 +2 吾爱币 +38 热心值 +25 收起 理由
sjilies + 1 + 1 热心回复!
wstclzy2010 + 1 + 1 来学习下大牛的操作
店小三丶 + 1 用心讨论,共获提升!
wood_z + 1 + 1 用心讨论,共获提升!
infox + 1 + 1 我希望有安卓版呀
SunnyBoy314 + 1 + 1 谢谢@Thanks!
冥界3大法王 + 1 厉害的大牛~~
福仔 + 1 + 1 ios8.3测试有效,评论的广告,列表的广告没有了,启动广告还在
风吹PP凉 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小寒。 + 1 + 1 我很赞同!
sdye + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
嘉嘉大仙 + 1 + 1 我很赞同!
851365960 + 2 + 1 热心回复!
sunnylds7 + 1 + 1 热心回复!
归路碧迢迢 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Zzz奈斯 + 1 + 1 我很赞同!
hjdper + 1 + 1 我很赞同!
h080294 + 1 + 1 热心回复!
qtfreet00 + 2 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zyl1786 + 1 + 1 虽然不知道怎么弄,但是看起来很牛逼的样子。
Devin_ + 1 + 1 谢谢@Thanks!
tzxinqing + 2 + 1 多出教程,大神
xinkui + 1 + 1 谢谢@Thanks!
砼小砼 + 1 + 1 多出教程,大神
悠悠娴娴 + 1 热心回复!
vistal + 1 哥们怎么联系 有点事情请教您
我来看看看 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| 阿布很拽 发表于 2018-9-10 20:21 |楼主
IT万岁 发表于 2018-9-10 18:27
搞逆向 能了解到这个APP的一些架构 或者 实现原理不

那肯定了解到的。本人也就是做iOS开发的。一般做iOS开发的,做逆向都感觉很简单的。就是推测别人代码怎么写,在关键点去hook就可以了
推荐
 楼主| 阿布很拽 发表于 2018-9-12 09:04 |楼主
福仔 发表于 2018-9-12 04:08
ios8.3测试有效,评论的广告,列表的广告没有了,启动广告还在,头条版本 6.8.7

要不把iOS 8 的手机寄给我试试 我没有iOS8 的系统手机了
沙发
yanha520 发表于 2018-9-10 15:21
3#
_小白 发表于 2018-9-10 15:25
支持楼主。虽然看不懂
4#
GenW 发表于 2018-9-10 15:33
教程不错,不过感觉今日头条本身就是个广告app
5#
dazhang357 发表于 2018-9-10 15:35
今日头条早就变了味道,以前看看还行,现在嘛,呵呵。
6#
rodhu 发表于 2018-9-10 15:35
虽然看不懂,但是好厉害的样子!
7#
jskang 发表于 2018-9-10 15:38
能否逆向一下“超市管家”app,提示是免费软件,该软件启动有广告,用了十几天后无法使用了,启动时扫描窗口太小。
8#
lizhipei78 发表于 2018-9-10 15:57
安卓的有不
9#
sushe534 发表于 2018-9-10 16:41
安卓不知道有没有
10#
旁观者迷 发表于 2018-9-10 18:09
小白前来捧个人场……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-14 13:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表