ptrace

    0熱度

    1回答

    ptrace的得到改變內存可以得到寄存器和存儲器中的數據時進入/退出系統調用。但是,如果linux系統調用處理程序更改某些內存包含堆棧中的某個位置,如何才能知道哪些內存已更改。

    0熱度

    1回答

    我正在查找有關如何使用Linux系統調用ptrace()跟蹤進程和所有子進程,孫進程等進程的系統調用的代碼示例。類似strace的行爲,當它被送入叉標誌-f時。 我知道尋找strace來源的另一種方法,但我首先要求提供一個乾淨的教程,希望能夠得到更加獨立的解釋。 我會用它來實現一個類似於https://github.com/nordlow/strace-memoize的快速通用系統調用memoiz

    1熱度

    1回答

    我在一個正在從事Java項目的學生研究團隊中工作,我們希望能夠收集有關CentOS 7中特定外部程序的一些信息。我們可能想要收集的一些潛在的數據示例是firefox或Google Earth的座標。到目前爲止,研究如何實現這一點主要導致我使用JNA和ptrace。 這是一個很好的途徑來解決這個問題?如果是這樣,我可以使用什麼來查找有關內存中程序的特定信息的位置?

    0熱度

    1回答

    我已通過跟蹤系統調用ptrace()來停止進程。這實際上將kill -sigstop <pid>發送到過程。 現在我檢查[堆]區域,這是我從/proc/<pid>/maps 了,但在堆內存範圍內讀出特定的地址返回不同的值! ptrace(PEEKDATA*, <pid>, <addr>, null) => 33 ptrace(PEEKDATA*, <pid>, <addr>, null) =>

    1熱度

    1回答

    我想在Android中使用PTRACE注入庫,但是當我嘗試將ptrace附加到特定的pid以進行監視時出現錯誤/; 「無法連接到PID」 ...... 這裏是我想知道爲什麼ptrace的()將返回值小於零,導致錯誤的代碼 // Attach if (0 > ptrace(PTRACE_ATTACH, pid, 0, 0)) { printf("cannot attach to

    0熱度

    1回答

    如果我有這樣的代碼: void child() { do_something(); ptrace(PTRACE_TRACEME, 0, 0, 0); do_some_other_things(); } 然後將do_something()由家長進行跟蹤? 我在linux文檔中發現,沒有這種東西。它只是說這應該在tracee中被調用。 PTRACE_TRACEME

    0熱度

    1回答

    它通常使用ptrace(PTRACE_TRACEME, 0, 0, 0)以防止程序正在調試, 但是一旦PTRACE_TRACEME應用,該程序將無法正常退出,而是接收到SIGSTOP信號, 那麼應該如何讓程序正常退出呢? exit(0)不會在這裏工作

    0熱度

    1回答

    跟蹤按照ptrace文檔時,停止對派生進程。 停止tracee在下一clone(2)並自動開始跟蹤新克隆的過程中,如果使用PTRACE_SEIZE將與一個SIGSTOP,或PTRACE_EVENT_STOP啓動。 問題是SIGSTOP可能根本不是由ptrace造成的 - 即使用戶也可以將此信號發送給進程。在這種情況下,被PTRACE_EVENT_STOP停止的子進程將不僅僅是完美的。 我自己產卵所

    3熱度

    1回答

    從ptrace示蹤器的角度來看,我正在尋找一種與arch不可知的方式來獲取SIGTRAP生成的最後一次嘗試指令(或一個過去的指令)的指令指針(AKA程序計數器)。 依賴拱形的方法是使用PTRACE_GETREGS並選擇例如EIP在i386上,RIP在x86_64,PC在ARM等。 我使用siginfo.si_addr以及siginfo.si_ptr從PTRACE_GETSIGINFO -retur

    0熱度

    1回答

    我想要做的是fork一個進程,在子進程中執行一個新的可執行文件,讓父進程通過GDB終止並附加到子進程,以調試此子進程。我使用初始父進程來分支子進程(可調試)的原因是我想爲這個子進程設置一些環境屬性,這需要對Linux內核進行一些系統調用,並且不想修改GDB來執行此操作。我試過並發現在父進程終止後,我可以通過GDB連接到子進程,但在這種情況下,子進程已經在exec()系統調用之後運行。 問題是我無法