在越狱机下,如何创建可执行内存。

如题,最近在研究dlopen,对应dlopen内部是创建了一个image到内存当中,image中包含dylib原始mach-o内容。但是这个image创建流程没找到具体资料,在想这个过程和malloc有什么区别,还有就是mmap应该也有关系

vm_allocate + mprotect ?

new = ( void *)mmap( NULL , num, VM_PROT_ALL, 0x1000 | 0x0001, -1, 0);
mprotect(new_page, PAGE_SIZE, PROT_READ | PROT_EXEC);
这样开创的内存还是不可执行。

1 个赞

谢谢。发现涉及到hook,都是用类似的方法。mmap 然后vmcopy,mach_vm_remap,这些。

这些函数都只能在越狱机下使用吗?非越狱机行吗?

函数还是可以用的。问题是非越狱情况下对可执行段内存没有修改权限。

1 个赞

对Code Signature块能不能修改呢?

没研究过