黑客新手福音:iOS 浏览器小说去广告分析及 Hook 教程,0 基础迈向精通

支持正版,从我做起,仅供学习!!

前言

几年前,我在用某浏览器看小说的时候,那会就被那个广告折磨的不要不要的,想着找学(po)习(jie)版本,但是逛了一圈没有找到。那咋办,自己动手呗~~然而,那会太菜了,分析了好久都没研究出来怎么弄。。。 过了几年,我没有变得更厉害,但是我想再试试,于是有了本文。。 > ps:处于学(hai)习(pa)的目的,本文只会给出核心的思路,不是那种一步步的保姆级教程,看的师傅要注意了~

1 最终的效果

  1. 去开屏广告
  2. 去小说阅读广告
  3. 去小说下载广告

2 用到的工具

  1. MonkeyDev:https://github.com/AloneMonkey/MonkeyDev/wiki/%E5%AE%89%E8%A3%85
  2. frida:https://frida.re/docs/examples/ios/
  3. Reveal:https://revealapp.com/
  4. 越狱的iPhone
  5. 目标浏览器IPA,版本是15.1.7(我分析的时候是15.1.7,补图的时候是15.7.0)

3 开屏广告

Reveal 分析一下开屏广告,发现跟 `MttSplashWindow` 有关系
在这里插入图片描述

用\class-dump\导出类、方法和属性,并生成相应的头文件

class-dump -H mttlite.app -o headers

发现了一个方法`canShowSplash`很可疑:
在这里插入图片描述

MonkeyDev 直接hook之,让其返回`false`
在这里插入图片描述

so easy~~

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

4 阅读广告

在看小说的时候,想要无广告,就得开会员
在这里插入图片描述

这里提取到关键词“**悦读卡**” 用vscode,打开刚刚的MonkeyDev项目的,下图的路径
在这里插入图片描述

开搜
在这里插入图片描述

可以看到大部分跟 `mttlite.app/res/rn/novelReader` 有关,盲猜这玩意就是我们看小说的页面 > 其实测试很简单,随便找个关键词改改,编译运行一下,就知道就是这里了 那接下来的操作其实很简单了,分析一下js代码。我从`2.ios.jsbundle`的第一个地方`悦读卡已生效`出发
在这里插入图片描述

往上看看,可以看到`isVipUser`和`expireTime`的变量
在这里插入图片描述

秉承着大胆猜测小心验证的原则,我把`2.ios.jsbundle`这个文件中,所有涉及这两个变量的地方,都改成如下:

{
  isVipUser: 1,
  expireTime: new Date('2099-01-01T00:00:00Z').getTime(),
} 

我一共改了三处,第一处:
在这里插入图片描述

第二处:
在这里插入图片描述

第三处:
在这里插入图片描述

改完,保存文件,MonkeyDev项目重新编译到手机上,框框刷小说,没广告了,稳如狗~

5 下载广告

从 `clickDownloadButton` 入手
在这里插入图片描述

简单分析一下这个函数
在这里插入图片描述

那么修改思路也很清晰了,直接把原来的`case 22`注释掉,放到`case 12`上面,如下:
在这里插入图片描述

改完,保存文件,MonkeyDev项目重新编译到手机上,点击下载,也没有广告了,稳!

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

6 开心的太早了

如题,正当我以为结束的时候,开开心心看小说的时候,好家伙,没过两分钟,广告又出来了。。。 思考一件事情,文件是 jsbundle,然后还能动态更新,百度一下,发现这篇文章:https://blog.youkuaiyun.com/xu\_song/article/details/53286996

开搞,上frida

frida-trace -U -m "*[* *BundleVersion*]" -f com.example.QQLiu

一直刷小说,直到发现出现了广告,即更新了
在这里插入图片描述

hook之,发现还是不行 直接hook所有跟version有关的

frida-trace -U -m "*[* *Version*]" -f com.example.QQLiu

在这里插入图片描述

看一下头文件,感觉都挺可疑的
在这里插入图片描述

看看是哪个`updateRes`方法

frida-trace -U -m "*[* *updateRes*]" -M "-[UIImageView _updateResolvedImage]" -M " -[_UINavigationBarLargeTitleViewLayout updateRestingTitleHeight]"  -f com.example.QQLiu

在这里插入图片描述

掏空它

// See http://iphonedevwiki.net/index.php/Logos

#import 

@interface MttSplashWindow : UIWindow

+ (_Bool)canShowSplash;

@end

%hook MttSplashWindow

+ (_Bool)canShowSplash{
    %orig;
    NSLog(@"[+] hook: canShowSplash 返回false");
    return false;
}
%end

%hook ResHubLocalResManager

- (void)updateResWithConfig:(id)arg1 taskId:(id)arg2 mode:(id)arg3{
    NSLog(@"[+] hook: updateResWithConfig 掏空");
}
%end

掏空之后,书架显示不了了,得看看这三个参数都是啥,方向没问题,关键是不能全hook,得根据参数判断来hook xcode打个断点, 查看参数,发现 `_sourceRelativeLocalPath`有点可疑
在这里插入图片描述

%hook ResHubLocalResManager

- (void)updateResWithConfig:(id)arg1 taskId:(id)arg2 mode:(id)arg3{
    NSString *sourceRelativeLocalPath = [arg1 valueForKey:@"_sourceRelativeLocalPath"];
    NSLog(@"[+] _sourceRelativeLocalPath: %@",sourceRelativeLocalPath);
    %orig;  
}
%end

在这里插入图片描述

猜测`novelReader_1337.zip`有关系,只干掉它试试,因为vip的判断都是这个novelReader关键词 > 最新的版本`15.7.0.6057`,这里已经变成 `novelReader_1519.zip` 了 >
在这里插入图片描述

在这里插入图片描述

%hook ResHubLocalResManager

- (void)updateResWithConfig:(id)arg1 taskId:(id)arg2 mode:(id)arg3{
//    %orig;
    NSString *sourceRelativeLocalPath = [arg1 valueForKey:@"_sourceRelativeLocalPath"];
    if ([sourceRelativeLocalPath containsString:@"novelReader"]) {
        NSLog(@"[+] hook: updateResWithConfig 掏空");
        NSLog(@"[+] _sourceRelativeLocalPath: %@", sourceRelativeLocalPath);
    } else {
        %orig;
    }
}
%end   

编译运行,终于稳了,不容易啊。。

7 完整的hook代码

// See http://iphonedevwiki.net/index.php/Logos

#import 

@interface MttSplashWindow : UIWindow

+ (_Bool)canShowSplash;

@end

%hook MttSplashWindow

+ (_Bool)canShowSplash{
    %orig;
    NSLog(@"[+] hook: canShowSplash 返回false");
    return false;
}
%end

%hook ResHubLocalResManager

- (void)updateResWithConfig:(id)arg1 taskId:(id)arg2 mode:(id)arg3{
//    %orig;
    NSString *sourceRelativeLocalPath = [arg1 valueForKey:@"_sourceRelativeLocalPath"];
    if ([sourceRelativeLocalPath containsString:@"novelReader"]) {
        NSLog(@"[+] hook: updateResWithConfig 掏空");
        NSLog(@"[+] _sourceRelativeLocalPath: %@", sourceRelativeLocalPath);
    } else {
        %orig;
    }
}
%end

8 后言

还是那句话,不会提供成品,仅供学习使用!!!支持正版,从我做起,仅供学习!!

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:
在这里插入图片描述
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)
在这里插入图片描述

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值