CTF中干擾逆向分析的幾種技術的介紹和解題思路

2021-10-12 01:14:38 字數 1190 閱讀 3454

常見的干擾逆向分析的技術:花指令,反除錯,加殼,控制流混淆,雙程序保護,虛擬機器保護技術

這是一種比較簡單的技巧,在原始的**中插入一段無用的,能夠干擾反彙編引擎的**

解題思路:花指令主要影響的是靜態分析,在ida中,可以手動將花指令patch為nop空指令

反除錯技術是指在程式執行過程中探測其是否處於被除錯狀態,如果程式正處於被除錯,則無法正常執行

幾種linux下常見的反除錯方法:

利用ptrace

linux下的除錯主要是通過ptrace系統呼叫來實現的。乙個程序只能被乙個程式跟蹤

proc檔案系統檢測

讀取/proc/self/目錄下的部分檔案,根據程式在除錯和非除錯狀態下的不同來進行反除錯。如果是在非除錯情況下,tracepid為0;如果是在除錯情況下,則tracepid為跟蹤程序的pid號

父程序檢測

通過getppid系統呼叫獲取到程式的父程序,如果父程序是gdb,strace,ltrace,則處於正在被除錯

基本思路:定位到反除錯的**,對程式進行patch,在不影響程式正常執行的情況下,跳過對偵錯程式的檢測**

經過加殼的程式,其真正的**是加密存放在二進位制檔案中的,只有在執行時才從記憶體中解密還原出來。因此,首先自然是脫殼

這是一種很棘手的方式,沒有辦法直接進行靜態分析,也沒有辦法直接進行反編譯,偵錯程式也會陷入控制流的跳轉混亂中。

基本思路就是對於程式流混淆的程式,通常採用trace的方法

debug blocker,是一種在除錯模式下執行自身程式的方法

這種保護通常存在兩個程序:偵錯程式和被偵錯程式的關係

特點:防止**除錯

父程序能控制子程序

基本思路:通常父程序的功能都比較單一,因此首先對父程序進行分析,了解處理子程序的邏輯,然後對子程序進行patch,使子程序脫離主程序後也能正常執行,最後對子程序進行分析

這種技術是指將**翻譯為機器和人都無法識別的一串偽**位元組流。這段用於翻譯偽**並負責具體執行的子程式就稱為虛擬機器。它以乙個函式的形式出現,函式的引數就是位元組碼的記憶體位址

乙個虛擬機器,它有一套自己的指令集架構。一開始,會有乙個vm_init階段完成初始化操作,對暫存器進行初始化,對記憶體進行載入,之後,會有乙個vm_run階段,開始取指令,解析指令,然後根據**的操作碼opcode分派處理函式

基本思路:首先逆向虛擬機器,得到isa,然後編寫相應的反彙編工具對虛擬機器指令進行反彙編,最後分析虛擬機器的彙編**

CTF逆向中的字元與數字

一.分類 兩大類,數字和字元。數字有10進製和16進製制兩種表現形式,字元以ascii碼的形式儲存,兩者最終都會歸於一串2進製數,也可以說一串16進製制數。一串二進位制數儲存在那裡,不同的讀取方式會有不同的效果 二.兩類函式 四個函式 1.10進製ascii碼與字元相互轉換 ord 引數 單個字元 ...

PMP中的分析技術

分析技術在 專案管理知識體系指南 第5版 的47個過程中前後出現過7次。可以使用分析技術對專案環境中諸多變數之間的關係進行分析,從而 專案日後的走勢。常用的分析技術有 回歸分析 分組方法 因果分析 根本原因分析 失效模式與影響分析 fmea 故障樹分析 fta 儲備分析 趨勢分析 掙值管理 和差異分...

聚類分析中幾種演算法的比較

將資料庫中的物件進行聚類是聚類分析的基本操作,其準則是使屬於同一類的個體間距離盡可能小,而不同類個體間距離盡可能大,為了找到效率高 通用性強的聚 類方法人們從不同角度提出了近百種聚類方法,典型的有k means方法 k medoids方法 clarans方法,birch方法等,這些演算法適用 於特定...