註冊自訂的異常處理函數

來源:互聯網
上載者:User

 註冊自訂的異常處理函數

           2011-9-11

SetUnhandledExceptionFilter()函數來註冊一個自己的未處理異常過濾函數,下面是一個code執行個體

/*

      Demonstrates how to use SEH so that unhandled exception filter

      can trap unhandled instructions.

   */

 

   #include <windows.h>

   #include <stdio.h>

 

   LONG WINAPI MyUnFilter (struct _EXCEPTION_POINTERS *lpExceptionInfo);

 

   void main (void)

   {

      LPBYTE lpBuff = NULL;

      // 註冊自己的異常處理函數

      SetUnhandledExceptionFilter (MyUnFilter);

 

      *lpBuff = 54;

   }

 

   // 異常處理函數,可以自己實現所需的功能

   LONG WINAPI MyUnFilter (struct _EXCEPTION_POINTERS *lpExceptionInfo)

   {

      static int s_SigCount = 0;

 

      DWORD dwExceptCode = lpExceptionInfo -> ExceptionRecord ->

                           ExceptionCode;

      LONG  lResult;

 

      if (dwExceptCode == EXCEPTION_ACCESS_VIOLATION)

      {

         printf ("access violation caught by MyUnFilter\n");

 

         ++s_SigCount;

 

         // test case to keep this from going on forever (since we're not

         // fixing the AV)

            if (s_SigCount < 5)

               lResult = EXCEPTION_CONTINUE_EXECUTION;

            else

               lResult = EXCEPTION_EXECUTE_HANDLER;

 

      }

      else

         lResult = EXCEPTION_CONTINUE_SEARCH;

 

      return lResult;

   }

暫時就先不考慮這個頂層過濾函數,從這個樣本看,只能在進程內實現註冊自己的異常處理函數,不清楚如何能夠實現進程之間或是系統級實現註冊自己的異常處理函數。當然可以通過修改註冊表來實現定義自己使用的JIT(Just-In-Time Debugging,緊急調試)調試器,關於JIT調試器的配置資訊在註冊表:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug. 可以自己編寫JIT程式,然後修改AeDbug鍵下的Debugger選項設定為:<路徑>\OwnJIT.exe
–p %ld –e %ld. 後面的參數UnhandledExceptionFilter為啟動JIT而設定的。-p後的是發生錯誤的進程ID,-e後面的是事件的控制代碼,這些參數是通過UnhandledExceptionHandl傳遞過來的。

如果使用這種方式進行潛入或破壞的話,馬上就會被發現,因為註冊表被修改是一眼就能發現的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.