gpt4 book ai didi

ios - 如何在 iOS 7(越狱)中获取 SpringBoard 的任务端口?

转载 作者:行者123 更新时间:2023-11-28 22:16:01 26 4
gpt4 key购买 nike

我知道我们可以使用 contextIdAtPositiontaskPortOfContextId 来获取前端应用程序的 mach_port_t,但是当在某些应用程序中时,我们可以不使用contextIdAtPosition获取SpringBoard的context id(在后台),那我们如何获取SpringBoard<的mach_port_t/?谢谢!

最佳答案

根据 http://theiphonewiki.com/wiki//System/Library/LaunchDaemons/com.apple.SpringBoard.plist ,SpringBoard暴露了很多服务。其中两个可能(或可能不)符合您的兴趣:

  • “com.apple.iohideventsystem”
  • “com.apple.springboard”

这是通过服务名称查询端口的示例代码。

#include <mach/mach.h>
#include "bootstrap.h"
#include <stdio.h>
#include <stdlib.h>

#define CHECK_MACH_ERROR(a) do {kern_return_t rr = (a); if ((rr) != KERN_SUCCESS) \
{ printf("Mach error %x (%s) on line %d of file %s\n", (rr), mach_error_string((rr)), __LINE__, __FILE__); abort(); } } while (0)

int main(int argc, char **argv, char **envp)
{
mach_port_t bp = MACH_PORT_NULL;
mach_port_t sp = MACH_PORT_NULL;

kern_return_t err = task_get_bootstrap_port(mach_task_self(), &bp);
CHECK_MACH_ERROR(err);
printf("bp:%d\n", bp);

err = bootstrap_look_up(bp, "com.apple.iohideventsystem", &sp);
CHECK_MACH_ERROR(err);
printf("iohideventsystem:%d\n", sp);

err = bootstrap_look_up(bp, "com.apple.springboard", &sp);
CHECK_MACH_ERROR(err);
printf("springboard:%d\n", sp);

// need to deallocate ports before exit

return 0;
}

输出:

my-iPad:~ root# /usr/bin/port_query 
bp:519
iohideventsystem:4099
springboard:4355

关于ios - 如何在 iOS 7(越狱)中获取 SpringBoard 的任务端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21660397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com