Daemon 与 tweak 通信 使用rocketbootstrap,接收不到

资料找了好几圈,rocketbootstrap官方的tests是用xpc的通讯方式,看的头大---

想请教下,CPDistributedMessagingCenter的object-c写法 是什么样子的。

我是在daemon 那边去注册registerForMessageName,这个方法我是放在object c 文件里面,应该不会影响吧?

然后在tweak那边去sendMessageAndReceiveReplyName,但是始终不会去回调我定义的handleMessageNamed:withUserInfo:

环境配置的话,我也都按照官方教程,拷贝了lib到theos的lib里面,并且从github源码下载下来全部丟到include里面,并且申明了,CPDistributedMessagingCenter接口。

@interface CPDistributedMessagingCenter : NSObject

+ (instancetype)centerNamed:(NSString *)name;

- (void)runServerOnCurrentThread;
- (void)registerForMessageName:(NSString *)messageName target:(id)target selector:(SEL)selector;
- (id)sendMessageAndReceiveReplyName:(NSString *)messageName userInfo:(id)userInfo;
- (id)sendMessageName:(NSString *)messageName userInfo:(id)userInfo;

@end

并且也都import 进来

#import "CPDistributedMessagingCenter.h"
#import <rocketbootstrap/rocketbootstrap.h>

调用不到~~~~早上张总说的,去github确实是一种好的解决方案,但是我找了…有找到demo 是沙箱app与tweak通信,应该只是写法不同而已吧?想不出来,是哪个环节出错了!还望给予指导…

1 个赞

结贴---结贴!!!

坑货~哎! main 少了一个CFRunLoopRun()而已~~~

希望大家引以为戒!哈哈~有时候,问题就出现在一个不起眼的位置!

这样学习是不是比问现成代码快很多。
https://github.com/H2CO3/Unbox
这个已经打包好了常见的功能

1 个赞

是的,张总!!很不好意思,我的英文水平能力有限,所以在搜索英文材料很有局限性,您找的这份资料,我就没有找到, :disappointed_relieved: 对于英文搜索这块是否有存在技巧性的东西,针对我们学习逆向这方面?如果可以的话,可以给我们分享一下~~

你的网名好屌。百度一下coderfun

请问一下, 在daemon 里面注册服务,总是编译不过去。错误代码,
Undefined symbols for architecture armv7s:
OBJC_CLASS$_CPDistributedMessagingCenter”, referenced from:
objc-class-ref in main.mm.2877bce5.o
ld: symbol(s) not found for architecture armv7s

lib 和 头文件都放到theos 对应的文件下了,请问是哪里没有引用到吗
@mygod

直接runtime获取Class就行

好的,我试下

tweak 不给用runtime time吗 ? 这个啥意思

Compiling main.mm…
main.mm:62:46: error: expected unqualified-id
class CPDistributedMessagingCenter_class = objc_getClass("CPDistributedM…
^
main.mm:63:13: error: receiver type ‘CPDistributedMessagingCenter_class’ is not an
Objective-C class
id c = [CPDistributedMessagingCenter_class preformSelector:@selector(cen…
^
main.mm:66:8: error: instance method
‘-performSelector:withObject:withObject:withObject:’ not found (return type
defaults to ‘id’) [-Werror,-Wobjc-method-access]
…performSelector:@selector(registerForMessageName:target:selector:) withObject:@“myMessageName” withObject:“self” withObject…

Class不是class,代码里复制一份CPDistributedMessagingCenter啥啥啥的interface

??, 同样问题