非越狱ios获取aslr,用了_dyld_get_image_vmaddr_slide(这个函数,但是在用个人签名签完以后,就获取不到了,还有什么其它的办法获取吗?或者获取当前运行的代码地址也行。谢谢老板了。
应该能获取到的,我这边可以
老铁,你是怎么写的?15.0以上的ios系统吗
iOS15以后,_dyld_get_image_vmaddr_slide(0)获取的不是可执行主程序的偏移(6s + iOS15.6),一种方式是使用_dyld_get_image_name需要查找到需要的可执行文件的序号然后再使用_dyld_get_image_vmaddr_slide(idx)获取
也有说法是说跟越狱工具有关系才导致问题,但我没有验证,欢迎补充指正
1 个赞
static intptr_t alsr = -1;
if(alsr == -1) {
for (int i = 0; i < _dyld_image_count(); i++) {
const struct mach_header *mh = _dyld_get_image_header(i);
if(mh->filetype == MH_EXECUTE) {
intptr_t vmaddr_slide = _dyld_get_image_vmaddr_slide(i);
alsr = vmaddr_slide;
}
}
}
遍历image,读取macho header,判断是否是可执行文件,然后用_dyld_get_image_vmaddr_slide
1 个赞