• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            elva

            Ptrace及其命令

            在用戶模式中,雖然只有一個函數可用,即ptrace(int _request, pid_t _pid, caddr_t _addr, int _data),但是這個函數能做所有的事情!如果你愿意,也可以花費幾個小時來編寫自己的小調試器,以解決特定的問題。

            ptrace函數的_request參數是最重要的一個參數,因為它確定你將做什么。BSDLinux的頭文件使用不同的定義,這使得將ptrace應用從一個平臺移植到另一個平臺變得很復雜。默認地,我們使用BSD頭文件中的定義。

            r  PT_TRACE_MEPTRACE_TRACEME)將當前進程切換到停止狀態。它通??偸桥cfork/exec一起使用,雖然也能遇到自我追蹤的應用程序。對于每一個進程,PT_TRACE_ME只能被調用一次。追蹤一個正被追蹤的進程是會失敗的(另一個較不重要的結果是進程不能追蹤它自己。如果要這樣做,應該首先從自身派生一個進程)。大量的反調試技術都是以這一事實為基礎的。為了克服這類技術,必須使用繞過ptrace的調試器。一個信號被發送到正被調試的進程,并將該進程切換到停止狀態,該進程可以使用從父進程上下文中調用的PT_CONTINUEPT_STEP命令從停止狀態退出。wait函數會延遲父進程的執行,直到被調試的進程切換為停止狀態或者終止為止(終止時,返回值為1407)。其他的所有參數都被忽略。

            r  PT_ATTACHPTRACE_ATTACH將進程標志為pid的運行進程切換為停止狀態,在這種情形下,調試器進程成為“父進程”。其他的所有參數都被忽略。進程必須具有與調試進程相同的用戶標志(UID),并且不能是setuid/setduid進程(否則就要用root來調試)。

            r  PT_DETACHPTRACE_DETACH停止進程標志為pid進程(由PT_ATTACHPT_TRACE_ME指定)的調試,并繼續其常態運行。其他的所有參數都被忽略。

            r  PT_CONTINUEPTRACE_CONT繼續進程標志為pid的被調試進程的執行,而不中斷與調試器進程的通信。如果addr == 1(在Linux中為0),從上次停止的地址繼續執行;否則,從指定的地址繼續執行。參數_data指定發送到被調試進程的信號數量(零說明沒有信號)。

            r  PT_STEPPTRACE_SINGLESTEP進行進程標志為pid的進程的單步執行,即執行下一條機器指令并切換為停止狀態(在i386中,這是根據設置追蹤標志來實現的,雖然有些“黑客”函數庫使用硬件斷點)。BSD要求將參數addr置為1,而Linux要求將該參數置為0。其他的所有參數都被忽略。

            r  PT_READ_IPT_READ_DPTRACE_PEEKTEXTPTRACE_PEEKDATA)分別從代碼區和正調試進程的地址空間區讀取機器字。在許多當代的平臺中,這兩個指令是等價的。ptrace函數接收目標地址addr,并返回讀到的結果。

            r  PT_WRITE_IPR_READ_DPTRACE_POKETEXTPTRACE_POKEDATA將由_data傳入的機器字寫入addr所指定的地址。

            r  PT_GETREGS,PT_GETFPREGSPT_GETDBREGSPTRACE_GETREGS,PTRACE_ FPREGSPT_GETFPXREGS將一般用途寄存器、段寄存器和調試寄存器的值讀入到地址由_addr指針所指定的調試器進程的內存區中。只有i386平臺接收這些與系統相關的命令。寄存器結構的描述放在頭文件machine/reg.h文件中。

            r  PT_SETREGSPT_SETFPREGSPT_SETDBREGSPTRACE_SETREGS,PTRACE_ SETFPREGSPT_SETFPXREGS通過拷貝由_addr指針所指定的內存區域的內容來設置被調試進程的寄存器的值。

            r  PT_KILLPTRACE_KILLsigkill發送到被調試進程,以終止其執行。

            posted on 2009-07-25 17:52 葉子 閱讀(2182) 評論(0)  編輯 收藏 引用 所屬分類: Unix

            亚洲一区精品伊人久久伊人| 国产亚洲成人久久| 亚洲日本久久久午夜精品| 亚洲精品无码专区久久同性男| 免费精品久久久久久中文字幕| 中文字幕无码av激情不卡久久| 一本色道久久综合亚洲精品| 国产三级久久久精品麻豆三级| 国产成人久久777777| 99久久精品国产一区二区| 一本伊大人香蕉久久网手机| 青青热久久国产久精品| 久久99国产精品尤物| 久久婷婷色综合一区二区| 久久久亚洲欧洲日产国码二区| 久久国产乱子伦精品免费午夜| 99精品国产免费久久久久久下载| 久久精品人人做人人爽电影蜜月| 久久精品国产一区二区三区不卡 | 久久久久国产精品人妻| 国产精品久久久久久久久免费| 久久精品中文字幕大胸| 精品无码久久久久久久动漫| 久久国产精品成人影院| 久久精品中文无码资源站| 日本精品一区二区久久久| 久久精品人人做人人爽97| 99久久精品国产一区二区| 伊人久久无码精品中文字幕| 香蕉久久一区二区不卡无毒影院 | 老司机午夜网站国内精品久久久久久久久 | 国内精品久久久久久野外| 老男人久久青草av高清| 天天做夜夜做久久做狠狠| 丁香久久婷婷国产午夜视频| 久久免费高清视频| 国产美女久久久| 国产精品青草久久久久福利99 | 婷婷久久综合| 一级做a爰片久久毛片看看| 伊人久久无码精品中文字幕|