我寫它採用PTRACE並執行以下程序:strace如何讀取系統調用sys_open的文件名?
- 它讀取當前的EAX並檢查系統調用SYS_OPEN。
- 如果是,那麼我需要知道傳遞的參數是什麼。
INT SYS_OPEN(爲const char *文件名,const int的模式,const int的面罩)
所以EAX = 5意味着它是一個開放的系統調用
我才知道EBX有從這個文件位置的地址Question 但是,我如何知道文件名的長度,以便我可以讀取該位置的內容?
我碰到哪個地址相同
Question 1
Question 2以下問題(這只是一個是我的!)
但我仍然沒有得到解決我的問題。 :(因爲這兩個答案是不明確的。 我仍然得到分段錯誤,當我嘗試在問題-1
的方法,你可以檢查我的代碼here
所以現在我真的不知道怎麼做strace的提取這些值如此精美:(
如果您願意深入一些代碼,您可以在http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=tree自己查看 - grep'sys_open'可能是一個好的開始。 – che 2012-03-21 06:16:13
您是否仔細研究過'strace'的源代碼?你有沒有試過'strace strace true'? – 2012-03-21 06:16:41
我在編譯代碼時遇到一些編譯錯誤。 http://ideone.com/SQie4。我想你也需要粘貼'helper.h'的代碼 – 2012-03-21 06:16:42