爲什麼我需要以root身份運行(而不是r00t_)?ptrace PTRACE_ATTACH失敗 - 用戶擁有進程的Linux權限
// main()
scan.scanProcessOffset(10838, 0x7f8c14000000); // proper pid and offset
void MemoryMapper::scanProcessOffset(unsigned int procId, unsigned long long offset)
{
long attach = ptrace(PTRACE_ATTACH, procId, NULL, NULL);
cout << attach << endl << errno << endl;
long memory = ptrace(PTRACE_PEEKDATA, procId, offset);
if (memory == -1 && errno == 3)
{
cout << errno << endl;
errno = 0;
}
cout << memory;
}
正如你可以看到我鉤住由r00t_
[email protected]:/proc/10838$ ls -l
lrwxrwxrwx 1 r00t r00t_ 0 2012-04-15 08:21 exe -> /usr/bin/gedit
-rw------- 1 r00t r00t_ 0 2012-04-15 09:04 mem
輸出不作爲root運行所擁有的過程:
[email protected]:~/memedit$ ./a.out
-1
1
3
-1
輸出爲根:
[email protected]:~/memedit$ sudo ./a.out
0
0
140239607693344
爲什麼我不能附加,當我是我試圖附加到的過程的所有者?
你使用的是Ubuntu嗎? – 2012-04-15 16:22:13
是的,我使用的是Ubuntu 11.10 – 2012-04-15 16:26:50