当前位置: 技术问答>linux和unix
访问一个进程的所有地址空间
来源: 互联网 发布时间:2016-07-25
本文导语: 希望各位高手帮忙看一下,谢谢! 1、如何用c语言编写一个程序,访问一个进程的所有地址空间,并报告每一个地址单元是否可读,是否可写,希望给出代码? | 后来又想,如果能读...
希望各位高手帮忙看一下,谢谢!
1、如何用c语言编写一个程序,访问一个进程的所有地址空间,并报告每一个地址单元是否可读,是否可写,希望给出代码?
1、如何用c语言编写一个程序,访问一个进程的所有地址空间,并报告每一个地址单元是否可读,是否可写,希望给出代码?
|
后来又想,如果能读的话。就可能把读到的值写回去,没有影响
但是连读权限都没有的地址,就不敢测试写权限了,因为不知道该写什么进去测试好
以下是完整程序
但是连读权限都没有的地址,就不敢测试写权限了,因为不知道该写什么进去测试好
以下是完整程序
#include
#include
#include
#include
volatile int flag; //标志位,1为当前判断的是读权限, 2为当前判断的是写权限
static jmp_buf jmpbuffer;
//从0x0 开始 查看maps得知其实要到很高的地址才能有读权限内存区,在我的pc上是0x08049000 ,lz可改大点方便观察
unsigned char *p=(char *)0x0;
unsigned char tmp;
void handler(int signo)
{
siglongjmp(jmpbuffer, 1);
}
int main()
{
signal(SIGSEGV,handler);
while((unsigned int)p