iOS越狱-theos应用示例:去掉越狱手机桌面app的角标数字

需求:去掉越狱手机桌面app的角标数字,如图

iOS越狱-theos应用示例:去掉越狱手机桌面app的角标数字_第1张图片
iPhone.jpeg

分析:

手机桌面其实是一个App,叫SpringBoard
找到App所在的手机位置,把到App的Mach-O文件(SpringBoard)拷贝出来(大约9M)
使用class-dump导出这个App头文件
使用Cycript动态调试这个App,找App的Bundle id,控制器的所有子View,找到相应的icon,通过猜测(icon,badge全局搜索)找到这最终的View
使用theos开发越狱插件

1.使用iFunBox找到App所在的手机位置

iOS越狱-theos应用示例:去掉越狱手机桌面app的角标数字_第2张图片
SpringBoard.png

2.使用class-dump导出这个SpringBoard头文件

首先检查这个Mach-O文件是否有加密,通过itool指令查看

otool -l SpringBoard | grep cycript

发现终端什么都没有输出
通过MarchOView这个mac程序检查


iOS越狱-theos应用示例:去掉越狱手机桌面app的角标数字_第3张图片
machOView.png

也是没有检查到加密信息,那么这个就不需要脱壳

使用class-dump导出头文件

class-dump -H SpringBoard -o Headers

3.使用cycript动态调式SpringBoard

3.1.登录到越狱手机
3.2.使用cycript连接到SpringBoard

cycript -p SpringBoard

3.3.导入mjcript

@import mjcript

3.4.查看SpringBoard bundle id

MJAppId

输出

@"com.apple.springboard"

3.5.查看根控制器

MJRootVc()

输出

#""

可以查看到根控制器的子控制器

MJChildVcs(#0x1372552f0)
`, state: appeared, view: 
   | , state: appeared, view: 
   |    | , state: appeared, view: 
   |    | , state: disappeared, view:  (view not loaded)
   |    | , state: appeared, view: 
   |    | , state: appeared, view: 
   |    | , state: appeared, view:  not in the window`

3.6.查看所有根控制器的子view

MJSubviews(#0x1589cbfc0.view)
iOS越狱-theos应用示例:去掉越狱手机桌面app的角标数字_第4张图片
badge.jpeg

3.7.让这个view隐藏

#0x159f8ee80.hidden = 1

查看手机,数字角标的确隐藏了.

再次让他尝试显示

#0x159f8ee80.hidden = 0

这样就确定了SBIconParallaxBadgeView就是我们要找的类.

3.8.查看SBIconParallaxBadgeView头文件,使用subline把SpringBoard头文件导入
cmd+p 全文搜索SBIconParallaxBadgeView,按enter键盘
可以看到以下头文件信息

#import "SBIconBadgeView.h"

#import "_UISettingsKeyObserver.h"

@class NSString, SBFParallaxSettings;

@interface SBIconParallaxBadgeView : SBIconBadgeView <_UISettingsKeyObserver>
{
    SBFParallaxSettings *_parallaxSettings;
}

- (void).cxx_destruct;
- (void)_applyParallaxSettings;
- (void)settings:(id)arg1 changedValueForKey:(id)arg2;
- (void)dealloc;
- (id)init;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;

@end

我们看到有init方法,return nil那么这个角标就无法显示了

4.使用theos,编写插件

%hook SBIconParallaxBadgeView
- (id)init{
    return nil;
}
%end
make && make package && make install

SpringBoard重启后,发现角标已经消失了

你可能感兴趣的:(iOS越狱-theos应用示例:去掉越狱手机桌面app的角标数字)