CrossOverIPC
A cross-process communication tool for sending and receiving messages on iOS 15 & 16 for rootless JBs
Install / Use
/learn @crazymind90/CrossOverIPCREADME
Description :
A lightweight cross-process communication tool for sending and receiving messages on iOS 15 & 16 for rootless jailbreaks
What does it do ?
- Send Messages : Send a message with a value to another process .
- Send Messages With Reply : Send a message with a value to other processes and get an instant reply from those processes .
How does it work ?
This tool relies on the CFNotificationCenterGetDistributedCenter() function from macOS. It is also compatible with iOS. The primary functionality of this func is to send cross-process notifications.
Given the restrictions on CPDistributedMessagingCenter, I have implemented its methods using the CFNotificationCenterGetDistributedCenter() function. This approach ensures that cross-process communication is possible even under the limitations imposed by the platform.
By leveraging this functionality, developers can efficiently send notifications across different processes, enhancing the IPC capabilities of their tweaks.
Header file :
typedef enum CrossOverIPCServiceType : CFIndex {
SERVICE_TYPE_SENDER,
SERVICE_TYPE_LISTENER
} CrossOverIPCServiceType;
@interface CrossOverIPC : NSObject
+ (instancetype) centerNamed:(NSString *)serviceName type:(CrossOverIPCServiceType)type;
- (void) registerForMessageName:(NSString *)msgName target:(id)target selector:(SEL)sel;
- (void) sendMessageName:(NSString *)msgName userInfo:(NSDictionary *)userInfo;
- (NSDictionary *) sendMessageAndReceiveReplyName:(NSString *)msgName userInfo:(NSDictionary *)userInfo;
@end
How to use it ?
For example ~ Getting UDID from SpringBoard to App ..
- Add
CrossOverIPC.hto your project .
#import "CrossOverIPC.h"
~ SpringBoard :
#define _serviceName @"com.cm90.crossOverIPC"
CrossOverIPC *crossOver = [objc_getClass("CrossOverIPC") centerNamed:_serviceName type:SERVICE_TYPE_LISTENER];
[crossOver registerForMessageName:@"UDID_Getter" target:self selector:@selector(handleMSG:userInfo:)];
Target method :
-(NSDictionary *) handleMSG:(NSString *)msgId userInfo:(NSDictionary *)userInfo {
if ([(NSString *)userInfo[@"action"] isEqual:@"getUDID"])
return @{@"UDID":[UIDevice.currentDevice sf_udidString] ?: @"No udid"};
return @{};
}
~ App :
#define _serviceName @"com.cm90.crossOverIPC"
CrossOverIPC *crossOver = [objc_getClass("CrossOverIPC") centerNamed:_serviceName type:SERVICE_TYPE_SENDER];
NSDictionary *dict = [crossOver sendMessageAndReceiveReplyName:@"UDID_Getter" userInfo:@{@"action":@"getUDID"}];
CLog(@"[+] UDID : %@",dict[@"UDID"]);
Important :
ServiceNamemust be the same in [Poster] and [Client] .
License :
This tool is licensed under the MIT License. Feel free to use, modify, and distribute this software in accordance with the MIT License terms. I hope this tool brings value to your projects and endeavors. For more details, please refer to the MIT License documentation.
© 2024 @CrazyMind90. All rights reserved.
Related Skills
node-connect
351.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
