Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何获取当前流程和其他流程的起始地址';什么是pid的堆?_Ios_Linux_Macos_Process_Heap - Fatal编程技术网

Ios 如何获取当前流程和其他流程的起始地址';什么是pid的堆?

Ios 如何获取当前流程和其他流程的起始地址';什么是pid的堆?,ios,linux,macos,process,heap,Ios,Linux,Macos,Process,Heap,如果ASLR在IOS中扮演角色并随机化堆的起始地址,那么如何从pid中获取当前进程和其他进程堆的起始地址 在“iOS内核利用”一文提供的aslr.c中,似乎您试图获取当前进程堆代码的起始地址 void* heap = malloc(0); 我测试了代码,发现返回值不尽相同。 根据ISO/IEC 9899:TC2(即C99标准),§7.20.3规定: 如果请求的空间大小为零,则行为由实现定义: 要么返回空指针,要么行为就好像大小是某个非零值,除非返回的指针不应用于访问对象 如果ASLR在IOS中

如果ASLR在IOS中扮演角色并随机化堆的起始地址,那么如何从pid中获取当前进程和其他进程堆的起始地址

在“iOS内核利用”一文提供的aslr.c中,似乎您试图获取当前进程堆代码的起始地址

void* heap = malloc(0);
我测试了代码,发现返回值不尽相同。 根据ISO/IEC 9899:TC2(即C99标准),§7.20.3规定:

如果请求的空间大小为零,则行为由实现定义: 要么返回空指针,要么行为就好像大小是某个非零值,除非返回的指针不应用于访问对象

如果ASLR在IOS中扮演角色,并将堆的起始地址随机化

是的

那么如何从pid中获取当前进程和其他进程堆的起始地址呢

你不能(至少不容易——我想不出任何方法,除了附加GDB和检查glibc内部变量
\uuu-curbrk

我测试了代码,发现返回值不尽相同

你为什么期望他们是一样的

在禁用ASLR的单个可执行文件中,
malloc(0)
inside
main
将返回相同的值。如果启用ASLR,将获得不同的值。如果构建不同的可执行文件,则会得到不同的值

如果ASLR在IOS中扮演角色,并将堆的起始地址随机化

是的

那么如何从pid中获取当前进程和其他进程堆的起始地址呢

你不能(至少不容易——我想不出任何方法,除了附加GDB和检查glibc内部变量
\uuu-curbrk

我测试了代码,发现返回值不尽相同

你为什么期望他们是一样的


在禁用ASLR的单个可执行文件中,
malloc(0)
inside
main
将返回相同的值。如果启用ASLR,将获得不同的值。若您构建不同的可执行文件,您将获得不同的值。

Hmmm,似乎很难获得堆的起始地址。我想做的是更改其他进程变量的值,但如果在堆上分配了变量的内存,则每次进程重新启动时,其地址都会不同:(.所以我想检查变量的相对地址是否是固定的。如果偏移量是固定的,那么通过获取堆的起始地址,我就可以获取变量的地址。嗯,似乎很难获取堆的起始地址。我想做的是更改其他进程变量的值,但是如果变量的内存是allo在堆上,每次进程重新启动时,它的地址都会不同:(。所以我想检查变量的相对地址是否固定。如果偏移量固定,通过获取堆的起始地址,就可以获取变量的地址。