<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    反調試技術是什么


    發現錯別字 8個月前 提問
    回答
    1
    瀏覽
    454
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    Anna艷娜
    CISO 高級信息系統項目管理師 PMP
    最佳答案

    反調試技術,惡意代碼用它識別是否被調試,或者讓調試器失效。惡意代碼編寫者意識到分析人員經常使用調試器來觀察惡意代碼的操作,因此他們使用反調試技術盡可能地延長惡意代碼的分析時間。為了阻止調試器的分析,當惡意代碼意識到自己被調試時,它們可能改變正常的執行路徑或者修改自身程序讓自己崩潰,從而增加調試時間和復雜度。很多種反調試技術可以達到反調試效果。

    總結了反調試技術有:

    一、使用WindowsAPI :

    1. IsDebuggerPresent

    2. CheckRemoteDebuggerPresent ->call NtInformationProcess( 2參數ProcessInformationClass)

    3. NTQueryObject(2參數ObjectInformationClass)檢查調試對象

    4. NTQuerySystemInformation( 1參數SystemInformationClass)

    5. ZwSetInformationThread(2參數ThreadInformationClass)設置ThreadHideFromDebugger,使線程與調試器強制分離

    二、手動檢測數據結構

    1. IsDebuggerPresent 查看peb

    2. ProcessHeap 查看PEB結構的0x18處 ProcessHeap中的ForceFlags和Flags

    3. 檢測NTGlobalFlag

    三、檢測調試器:

    1、注冊表項:

    SOFTWAREMicrosoftWindows NTCurrentVersionAeDebug(32位系統)
    SOFTWAREWow6432NodeMicrosoftWindowsNTCurrentVersionAeDebug(64位系統)

    2、窗口檢測:

    FindWindow  EnumWindow

    3、進程檢測

    4、檢測父進程

    5、是否有SeDebugPrivilege權限

    6、檢測時間差

    使用rdtsc指令
    
    使用QueryPerformanceCounter和GetTickCount

    7、斷點檢測

    • 軟件斷點

    • 硬件斷點

    8、執行代碼校驗和檢查

    四、干擾調試器

    1. 使用TLS回調

    2. 使用異常

    回答所涉及的環境:聯想天逸510S、Windows 10。

    8個月前 / 評論
    回答數量: 1
    亚洲 欧美 自拍 唯美 另类