固定进程名后通过获取pid进行内存读取和操作出现(os / kern)错误

图片
打印task的日志为(os / kern)报错,程序是以dylib形式,代码如下

  extern "C" kern_return_t
 mach_vm_region_recurse(
                   vm_map_t                 map,
                   mach_vm_address_t        *address,
                   mach_vm_size_t           *size,
                   uint32_t                 *depth,
                    vm_region_recurse_info_t info,
                       mach_msg_type_number_t   *infoCnt);

 pid_t get_processes_pid() {
size_t length = 0;
static const int name[] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
int err = sysctl((int *)name, (sizeof(name) / sizeof(*name)) - 1, NULL, &length, NULL, 0);
if (err == -1) err = errno;

if (err == 0) {
    struct kinfo_proc *procBuffer = (struct kinfo_proc *)malloc(length);
    if(procBuffer == NULL) return -1;
    
    sysctl((int *)name, (sizeof(name) / sizeof(*name)) - 1, procBuffer, &length, NULL, 0);
    
    int count = (int)length / sizeof(struct kinfo_proc);
    for (int i = 0; i < count; ++i) {
        const char *procname = procBuffer[i].kp_proc.p_comm;
        if (strstr(procname, processes_name.c_str())) {
            pid_t pid = procBuffer[i].kp_proc.p_pid;
            return pid;
        }
          break;
    }
}
return -1;
 }

vm_map_offset_t get_base_address() {
vm_map_offset_t vmoffset = 0;
vm_map_size_t vmsize = 0;
uint32_t nesting_depth = 0;
struct vm_region_submap_info_64 vbr;
mach_msg_type_number_t vbrcount = 16;

pid_t pid = get_processes_pid();

kern_return_t kret = task_for_pid(mach_task_self(), pid, &get_task);
if (kret == KERN_SUCCESS) {
    NSLog(@"Connection Success. %d ------", get_task);
    mach_vm_region_recurse(get_task, &vmoffset, &vmsize, &nesting_depth, (vm_region_recurse_info_t)&vbr, &vbrcount);
}

return vmoffset;
 }

你可以注入SpringBoard或者写个进程测试, iOS9后mobile权限的App是无法通过sysctl接口获取到进程列表;

你好,我现在注入的话是注入到SpringBoard,但是打印task是没有成功的,出现os/kern错误

老哥 解决了吗 我也遇到 同样的问题了

老哥 解决了吗 我也遇到 同样的问题了

没有,解决了就不会来问了

我是在task_for_pid 那里报错 进程id是可以获取到的

emm其实问题一样的,还是task不行,哪里肯定有错的地方

你之前论坛的id是?

用xml签名也解决不了 难搞

你是用什么越狱的 感觉和越狱环境也有关系

你在不睿群里没,我总感觉在哪见过你

不在睿群啊 瑞群群号多少

你叫啥。。。。。。

Dobby

emmm我u0-6.2越狱

开启TFP0看看

怎么开启TFP0,有相关资料吗

TFP0是拿来拿内核task的跟这个没关系吧 大概?

张总有解决办法吗