当然,我对调整开发非常陌生,但我遇到了一个问题。我正在进行一项针对个人使用的调整,即将钩子连接到多个进程中,但在这些特定于进程的钩子之间共享一个变量时遇到了困难。例如,我的SpringBoard方法挂钩可以设置静态变量的值,然后访问值集。但是,特定于应用程序的方法钩子无法检索SpringBoard方法上下文中的值集。变量未初始化返回。
由于调整库很常见,我如何在一个进程的钩子上下文中初始化一个“全局”库级变量,并在另一个进程的上下文中访问该值。
我的第一次尝试是这样的:
static BOOL isEnabled;
%hook FirstProcessFirstClass
- (void) methodInFirstProcessFirstClass {
isEnabled = YES;
%orig;
}
%end
%hook FirstProcessSecondClass
- (void) methodInFirstProcessSecondClass {
// This will be 1 if it occurs after methodInFirstProcessFirstClass
NSLog("isEnabled equals %d", isEnabled);
%orig;
}
%end
%hook SecondProcessClass
- (void) methodInSecondProcessClass {
// This is always going to be uninitialized (i.e., 0)
NSLog("isEnabled equals %d", isEnabled);
%orig;
}
%end如果您看到了这张图片,我想在挂接进程之间共享一个“全局变量”。谢谢你逗我开心。:/
发布于 2015-01-20 17:36:06
在进程之间共享一个变量比只拥有一个全局变量要复杂一些。您需要使用某种形式的IPC (进程间通信)来同步跨进程的变量。因为您连接了SpringBoard 和其他应用程序,所以可以将SpringBoard设置为“服务器”,以便将变量的新状态发送到其他进程。
您还可以使用%group指令,根据您的调整实际上挂起的进程来应用钩子,这样SpringBoard的钩子只能在SpringBoard进程中活动,而不是在应用程序上活动。这不会有太大变化,但不会有不必要的挂钩。
https://stackoverflow.com/questions/28050523
复制相似问题