<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 5.2 Immunity Debugger 101 在研究強大的 immlib 庫之前,先看下 Immunity 的界面。 ![image](https://box.kancloud.cn/2016-03-11_56e2361a0410f.gif) 圖 5-1:Immunity 調試器主界面 調試器界面被分成 5 個主要的塊。左上角是 CPU 窗口,顯示了正在處理的代碼的反匯 編指令。右上角是寄存器窗口,顯示所有通用寄存器。左下角是內存窗口,以十六進制的形 式顯示任何被選中的內存快。右下角是堆棧窗口,顯示調用的堆棧和解碼后的函數參數(任何原生的 API 調用)。最底下白色的窗口是命令欄,你能夠像 WindDbg 一樣使用命令控制調 試器,或者執行 PyCommands。 ### 5.2.1 PyCommands 在 Immunity 中執行 Python 的方法即使用 PyCommands。PyCommands 就是一個個 python 腳本文件,存放在 Immunity 安裝目錄的 PyCommands 文件夾里。每個 python 腳本都執行一 個任務(hooking,靜態分析等待),相當于一個 PyCommand。每個 PyCommand 都有一個 特定的結構。以下就是一個基礎的模型: ``` from immlib import * def main(args): # Instantiate a immlib.Debugger instance imm = Debugger() return "[*] PyCommand Executed!" ``` PyCommand 有兩個必備條件。一個 main()函數,只接收一個參數(由所有參數組成的 python 列表)。另一個必備條件是在函數執行完成的時候必須返回一個字符串,最后更新在 調試器主界面的狀態欄。執行命令之前必須在命令前加一個感嘆號。 ``` !<scriptname> ``` ### 5.2.2 PyHooks Immunity 調試器包含了 13 總不同類型的 hook。每一種 hook 都能單獨實現,或者嵌入 PyCommand。 `BpHook/LogBpHook` 當一個斷點被觸發的時候,這種 hook 就會被調用。兩個 hook 很相似,除了 BpHook 被 觸發的時候,會停止被調試的進程,而 LogBpHook 不會停止被調試的進程。 `AllExceptHook` 所有的異常的都會觸發這個 hook。 `PostAnalysisHook` 在一個模塊被分析完成的時候,這種 hook 就會被觸發。這非常有用,當你在在模塊分 析完成后需要進一步進行靜態分析的時候。記住,在用 immlib 對一個模塊進行函數和基礎 塊的解碼之前必須先分析這個模塊。 `AccessViolationHook` 這個 hook 由訪問違例觸發。常用于在 fuzz 的時候自動化捕捉信息。 `LoadDLLHook/UnloadDLLHook` 當一個 DLL 被加載或者卸載的時候觸發。 `CreateThreadHook/ExitThreadHook` 當一個新線程創建或者銷毀的時候觸發。 `CreateProcessHook/ExitProcessHook` 當目標進程開始或者結束的時候觸發。 `FastLogHook/STDCALLFastLogHook` 這兩種 hook 利用一個匯編跳轉,將執行權限轉移到一段 hook 代碼用以記錄特定的寄存 器,和內存數據。當函數被頻繁的調用的時候這種 hook 非常有用;第六章將詳細講解。 以下的 LogBpHook 例子代碼塊能夠作為 PyHook 的模板。 ``` from immlib import * class MyHook( LogBpHook ): def init ( self ): LogBpHook. init ( self ) def run( regs ): # Executed when hook gets triggered ``` 我們重載了 LogBpHook 類,并且建立了 run()函數(必須)。當 hook 被觸發的時候,所 有的 CPU 寄存器,以及指令都將被存入 regs,此時我們就可以修改它們了。regs 是一個字 典,如下訪問相應寄存器的值: ``` regs["ESP"] ``` hook 可以定義在 PyCommand 里,隨時調用。也可以寫成腳本放入 PyHooks 目錄。每 次啟動 Immunity 都會制動加載這些目錄。接下來看些實例。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看