ptrace

    0熱度

    1回答

    我想用存儲器調試器的功能(只是泄漏檢測)來擴展現有的工具。 我知道一些內存調試器通過替換malloc/free並跟蹤什麼是待解脫和誰分配它的工作;或者通過在虛擬機的種類上運行進程並監視內存訪問。 我想知道,如果是有意義的使用ptrace()上設置的malloc /免費斷點,而不是與dmalloc例如重建,並在一個單獨的進程監控分配。它會太慢嗎?其他工具是否以這種方式工作?

    7熱度

    2回答

    我正在嘗試使用python和python ptrace來讀取外部進程的內存。我需要完全用python工作,並且我一直試圖在Linux中讀取和打印一個進程的內存。 因此,例如,我試過下面的代碼,它不斷給我IO錯誤: proc_mem = open("/proc/%i/mem" % process.pid, "r") print proc_mem.read() proc_mem.close()

    1熱度

    1回答

    所以,我已經閱讀了這篇文章Counting machine instructions of a process using PTRACE_SINGLESTEP,我明白動態鏈接一個測試程序到我的ptrace程序將返回一個指令計數,它也計算運行時庫的初始化。不過,我想獲得一個有效的計數爲我的測試程序,它是: int main(){ return 0; } 我ptrace的程序首先也回到

    7熱度

    2回答

    我正在研究類似Ideone的系統,其中不可信用戶代碼必須以沙盒模式運行。 爲此,我一直在尋找ptrace第一層保護的可能性。然而,經過幾次實驗後,似乎: 我可以攔截系統調用,然後修改輸入參數。 我可以攔截一個系統調用後,它已被調用並更改返回值。 但是,似乎沒有任何方法可以防止電話被攻擊(殺死整個應用程序除外)。 我想攔截某些系統調用並返回一個虛假的結果代碼,而不會實際發生調用。有沒有辦法來實現這個

    2熱度

    1回答

    我正在使用ptrace來計算程序的系統調用。 問題是,給定一個程序A,我的程序打印出系統調用的數量(打開,關閉,讀取,寫入)。 我的程序和帶有程序A作爲參數的strace(帶-c選項)的結果是相同的,除了打開的系統調用。 我的程序打印15和strace打印3. 但我猜測,作爲strace打印一些其他系統調用,以及這些可能總結到我的程序計數15開放系統調用。 我正在使用SYS_open在查看ORIG

    2熱度

    1回答

    我一直在玩ptrace。我跟着一些教程,如this one或this one。到目前爲止,當我有一個ptrace -d子進程時,我能夠: 檢測系統調用並瀏覽寄存器。 獲取寄存器指向的地址中包含的字符串,這要歸功於ptrace的PTRACE_PEEKDATA選項。 變化的子進程得益於ptrace的PTRACE_POKEDATA選項的用戶空間的寄存器和變存儲器值的值。 我的問題如下:比方說,例如,我剛

    5熱度

    1回答

    我想用ptrace檢查什麼系統調用我的計劃催生了一個程序使得使用ptrace的。我從this tutorial開始,因爲它是在對我的previous question的回答中解釋的。我被它適應我使用的平臺修改代碼(SLES 11 64位),並放在一起打印出每一個系統下面的測試代碼中調用產生的進程,使得: #include <sys/ptrace.h> #include <sys/types.h>

    7熱度

    1回答

    我使用ptrace來跟蹤進程的系統調用。在分解過程之後,我使用PTRACE_TRACEME開始跟蹤過程。代碼如下所示: while (true) { int status; int gotPid; gotPid = waitpid(pid, &status, 0); if (WIFEXITED(status) || WIFSIGNALED(status))

    -1熱度

    1回答

    在用gdb等工具進行調試之後,我對它們的實現知之甚少。我試圖在我的程序中實現反調試技術,但對調試知識很少,我需要一些幫助。我曾經碰到過下面的代碼從http://www.julioauto.com/rants/anti_ptrace.htm void anti_ptrace(void) { pid_t child; if(getenv("LD_PRELOAD"))

    0熱度

    1回答

    我只是通過ptrace()調用來測試讀寫內存,但是當我運行下面顯示的代碼時,我得到了這樣的錯誤。 Processkey() : 0x80481240 readmem pid 3950 Original opcode : 0x4641682b writemem pid 3950 readmem pid 3950 PEEKDATA error: No such file or directo