0x08048000
我想我知道发生这种情况的原因。启用了ASLR,并且从0x08048000开始的页面不会更改地址。但是,与缓冲区相对应的页面会更改地址。
缓冲区地址可能会泄漏-因此,我尝试检查页面的开始位置与缓冲区地址之间的差异是否保持不变,而不是保持不变。 />
#1 楼
我不确定,但是您可能遇到以下问题:通常页面地址是按页面大小四舍五入的。这取决于您使用的系统中的页面大小。因此,您可以通过对
~(PAGE_SIZE-1)
进行常量AND操作来计算此地址。如果不起作用,请尝试两次调用
mprotect
:在不执行的情况下进行读取和写入,更改内存,然后在调用具有执行位但没有写位的
mprotect
时。