簡體   English   中英

使用dtruss捕獲Mach系統調用

[英]Catching Mach system calls using dtruss

我在vmmap上運行了dtruss,該進程是讀取另一個遠程進程的虛擬內存的進程。

我希望某些mach_port系統調用會出現在我的命令的輸出中,但無法跟蹤任何內容(即mach_vm_read,task_for_pid等)。

我運行的確切命令(注意dtruss是OS-X中dtrace的包裝腳本):

sudo dtruss vmmap <pid_of_sample_process>  

vmmap的輸入參數只是任何正在運行的進程的pid,我使用的OS版本是10.10(在10.11中,在諸如vmmap的蘋果產品上運行dtruss時存在授權問題)。

也許有人可以告訴我如何識別我正在尋找的系統調用...我應該在dtruss輸出中查找顯式名稱,還是只是我所需的syscall的常規調用號(遺憾的是,我沒有找到任何他們):

./bsd/kern/trace.codes:0xff004b10       MSG_mach_vm_read

在我看來,它沒有使用Mach API。 它使用libproc接口。 我看到了許多proc_info() syscall,這就是像proc_pidinfo()這樣的庫調用背后的東西。

我用了:

sudo dtrace -n 'pid$target::proc_*:entry {}' -c 'vmmap <some PID>'

跟蹤被調用的各種libproc函數。 我看到調用proc_name()proc_pidpath()proc_pidinfo()以獲得有關目標進程的信息,然后調用proc_regionfilename()以獲得有關VM區域的信息。

順便說一句, vmmap不會讀取其他進程的內存,它只會報告有關VM區域的信息,而不是它們的內容。 因此,我不希望看到mach_vm_read()之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM