- 論壇徽章:
- 0
|
最近在用ptrace監(jiān)控安卓模擬器,由于ptrace一次只能監(jiān)控一個(gè)進(jìn)程(線程),我這里需要實(shí)現(xiàn)ptrace監(jiān)控多個(gè)線程使用的系統(tǒng)調(diào)用,但不是同時(shí)的,線程號(hào)每隔一定的時(shí)間會(huì)刷新,會(huì)變化,需要監(jiān)控當(dāng)前的線程號(hào)。
我的想法是:attach當(dāng)前線程號(hào)-->進(jìn)行監(jiān)控-->下一個(gè)線程號(hào)到來(lái)時(shí)detach當(dāng)前線程,并attach下一個(gè)線程,繼續(xù)循環(huán)監(jiān)控
大體流程是:
while(1)
{
ptrace(PTRACE_ATTACH, traced_process, NULL, NULL);
|
|
ptrace(PTRACE_PEEKTEXT, pid, (void *)(regs->ARM_pc - 4), NULL);
|
|
ptrace(PTRACE_SYSCALL, traced_process, NULL, NULL);
|
|
ptrace(PTRACE_DETACH, traced_process, NULL, NULL); //此處常失敗
}
不知到我的想法不對(duì)還是怎么的,好多次detach都顯示no such progress,且被監(jiān)控模擬器經(jīng)常掛掉,或者對(duì)監(jiān)控沒(méi)有反應(yīng),是不是detach沒(méi)成功的原因呢?求指教,謝謝 |
|