MobileSubstrate

MobileSubstrate是iOS越狱开发者最为常用的工具之一,它能够在iOS系统上实现类似Windows操作系统上的hook机制。通过修改系统内核,MobileSubstrate能够截获应用程序的系统调用,并将其重定向到自定义的函数上。这样,开发者就可以在不侵入原始代码的情况下,加入额外的功能或修改应用程序的行为。

使用MobileSubstrate之前,需要先确认iOS设备已经越狱。使用MobileSubstrate开发的插件必须存放在/usr/lib/TweakInject文件夹下,并且必须以“.dylib”文件格式呈现。

接下来,我们来了解一下MobileSubstrate的使用方法。

1. 安装Theos

Theos是一个强大的iOS应用程序逆向工程工具集合,能够简化开发MobileSubstrate插件的过程。安装Theos需要使用Cydia安装命令行工具并升级系统。步骤如下:

a. 打开Cydia并选择“管理”选项卡。

b. 选择“源”管理器并点击“编辑”按钮。

c. 点击“添加”按钮并输入“https://coolstar.org/publicrepo”源地址。

d. 返回到Cydia主界面并搜索“theos”。

e. 安装“Theos”包并等待安装完成。

2. 创建MobileSubstrate插件

创建MobileSubstrate插件需要使用Theos的模板功能,仅需执行以下命令:

$NIC

可以依据提示选择模板类型和插件名称,指定输出目录,并选择iPhone指令集等选项。在插件工程目录下,可以看到Tweak.xm文件,其中包含了可用的MobileSubstrate函数hook。开发者可以在其中定义自己的函数,实现对应用程序的修改。

3. 编译并安装插件

开发完成MobileSubstrate插件后,可以使用以下命令进行编译并安装插件:

$make

$make package install

前者编译插件代码,后者将编译后的.deb文件打包同时安装在越狱设备中。

现在看一下MobileSubstrate的应用案例,以微信“防撤回”功能开发为例。具体步骤如下:

1. 在插件入口函数中载入substrate动态库。

2. 在窗口加载的时候替换系统原有的函数。针对微信,需要hook以下函数:DBCToCancelMsg, DBCCancelMsg, WCRedEnvelopesNetworkEventReceiver。

3. 针对防止撤回的情况,需要创建hook函数,并对传递的参数进行过滤和处理。以针对撤回消息的函数为例,代码如下:

%hook BaseMsgContentViewController

-(void)onDeleteMsg{

MessageData *data = self.m_data;

if(data.m_nsRealChatUsr != nil && data.m_nsRealChatUsr.length > 0){

WeChatRedEnvelop *wcRed = [self.jn objectForKey:data.m_nsRealChatUsr];

NSDictionary *msgDict = [[NSDictionary alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/Documents/deleteMsg.plist",homePath]];

NSString *msg = [msgDict objectForKey:data.m_nsContent];

if(msg != nil){

[data setM_nsContent:msg];

[super onViewDidLoad];

return;

}

if(wcRed.isEnableRevokeAssistant){

[remoteServers DBCToCancelMsg:data completed:^(id responseObject, NSError *error){}];

}

}

%end

上述代码中,hook函数是BaseMsgContentViewController,它会在删除消息时调用。首先,我们需要获取到当前窗口的聊天对象wxid,然后检查是否启用了“防撤回”功能。如果是,我们需要调用remoteServers中的取消撤回接口,防止被撤回的消息被对方删除。最后,如果用户定义了需要替换的消息内容,我们需要将其返回。

MobileSubstrate提供了强大的hook机制,让开发者能够轻松扩展iOS应用程序的功能和行为。当然,在使用MobileSubstrate过程中,我们需要对系统进行了解和理解,以避免对系统造成不必要的影响。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(42) 打赏

评论列表 共有 1 条评论

春暖花開 11月前 回复TA

最好的生活不过就是:一个人,安静而丰盛;两个人,温暖而踏实。

立即
投稿
发表
评论
返回
顶部