[滲透測試]—7.4 逆向工程和二進位破解技術

来源:https://www.cnblogs.com/yaoqian/archive/2023/07/02/17521208.html
-Advertisement-
Play Games

不說廢話,直接上乾貨: (註意大小寫:object為對象,Object為類) 1,object.getClass()它是Object類的實例方法,返回一個對象運行時的類的Class對象,換句話說,它返回的是對象具體類型的類對象。 2,Object.class 這是java語言的一種語法糖,用來返回一 ...


在本章節中,我們將深入學習逆向工程和二進位破解技術。我們將儘量詳細、通俗易懂地講解,並提供儘可能多的實例。

1.1 逆向工程概述

逆向工程是指從軟體的二進位文件中提取信息,以瞭解其工作原理和設計思路的過程。逆向工程的主要目的是對軟體進行分析、調試、修改等操作,以實現特定目的(如安全分析、病毒分析、破解等)。

逆向工程的常見方法包括靜態分析、動態分析、符號執行等。接下來,我們將詳細介紹這些方法及其實例。

1.2 靜態分析

靜態分析是指在不執行程式的情況下,通過分析二進位文件的結構和指令來瞭解其工作原理的過程。靜態分析的主要工具包括反彙編器(如IDA、Ghidra等)、十六進位編輯器(如HxD、Hex Fiend等)。

1.2.1 反彙編

反彙編是將二進位文件(如可執行文件、庫文件等)轉換為彙編指令的過程。反彙編器可以幫助我們理解程式的執行流程和數據結構,從而發現潛在的漏洞和邏輯錯誤。

以下是一個使用IDA Pro反彙編器分析可執行文件的示例:

  1. 打開IDA Pro,選擇File > Open,然後選擇目標可執行文件。
  2. 點擊OK,開始反彙編過程。
  3. 在反彙編視窗中,可以看到程式的彙編指令。可以通過導航欄和函數視窗來查看程式的執行流程和函數調用關係。

1.2.2 十六進位編輯

十六進位編輯是指直接查看和修改二進位文件的十六進位數據的過程。十六進位編輯器可以幫助我們在不反彙編的情況下,快速定位和修改程式中的數據和指令。

以下是一個使用HxD十六進位編輯器修改可執行文件的示例:

  1. 打開HxD,選擇File > Open,然後選擇目標可執行文件。
  2. 在十六進位編輯視窗中,可以看到程式的十六進位數據。可以通過查找功能來定位特定數據和指令。
  3. 修改目標數據或指令,然後選擇File > Save,保存修改後的文件。

1.3 動態分析

動態分析是指在執行程式的過程中,通過監控程式的行為和狀態來瞭解其工作原理的過程。動態分析的主要工具包括調試器(如OllyDbg、GDB等)、系統監控工具(如Process Monitor、Wireshark等)。

1.3.1 調試

調試是通過單步執行、設置斷點、查看寄存器和記憶體等手段,實時監控程式的執行過程的過程。調試器可以幫助我們深入瞭解程式的動態行為,從而發現潛在的漏洞和邏輯錯誤。

以下是一個使用OllyDbg調試器調試Windows可執行文件的示例:

  1. 打開OllyDbg,選擇File > Open,然後選擇目標可執行文件。
  2. 在調試視窗中,可以看到程式的彙編指令、寄存器、記憶體等信息。可以通過單步執行、設置斷點等功能來控製程序的執行過程。
  3. 在程式執行過程中,可以實時查看寄存器和記憶體的變化,從而瞭解程式的動態行為。

1.3.2 系統監控

系統監控是指通過記錄程式與操作系統、硬體、網路等資源的交互過程,瞭解程式的行為特征和工作原理的過程。系統監控工具可以幫助我們瞭解程式的外部依賴關係、數據傳輸過程等信息,從而發現潛在的漏洞和邏輯錯誤。

以下是一個使用Process Monitor監控Windows可執行文件的示例:

  1. 打開Process Monitor,選擇Filter > Filter...,設置篩選條件,如進程名、操作類型等。
  2. 啟動目標可執行文件,Process Monitor將自動記錄其與操作系統的交互過程。
  3. 在Process Monitor視窗中,可以查看程式的文件操作、註冊表操作、進程操作等詳細信息。

1.4 符號執行

符號執行是一種程式分析技術,通過將程式的輸入表示為符號變數,然後在不執行程式的情況下,模擬程式的執行過程,以發現潛在的漏洞和邏輯錯誤。符號執行的主要工具包括SMT求解器(如Z3、Yices等)、符號執行引擎(如Angr、KLEE等)。

以下是一個使用Angr符號執行引擎分析C語言程式的示例:

  1. 首先,安裝Angr:pip install angr
  2. 編寫以下Python腳本,使用Angr分析目標C語言程式:
import angr

# 載入目標程式
proj = angr.Project('path/to/target/binary')

# 創建符號執行狀態
state = proj.factory.entry_state()

# 創建符號執行引擎
simgr = proj.factory.simgr(state)

# 模擬程式執行過程,尋找目標狀態
simgr.explore(find=lambda s: b'success' in s.posix.dumps(1))

# 輸出符號執行結果
if simgr.found:
    found = simgr.found[0]
    print('Found solution:', found.solver.eval(found.posix.stdin.load(0, found.posix.stdin.size), cast_to=bytes))
else:
    print('No solution found')
  1. 運行Python腳本,Angr將自動分析目標程式,尋找滿足特定條件的輸入。

通過以上介紹和示例,您應該對逆向工程和二進位破解技術有了初步的瞭解。在實際滲透測試過程中,您需要根據具體情況選擇合適的方法和工具,不斷積累經驗,提高技能。在後續章節中,我們還將介紹其他高級滲透測試技術,敬請關註。
推薦閱讀:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [TOC] # 原理簡介 本文參考[C#/WPF/WinForm/程式實現軟體開機自動啟動的兩種常用方法](https://blog.csdn.net/weixin_42288432/article/details/120059296),將裡面中的第一種方法做了封裝成**AutoStart**類,使 ...
  • CodeBuilder是一款強大的代碼生成工具,目前發佈了 3.0,大家可以前去下載體驗 [官方主頁](http://fireasy.cn/codebuilder)。 ###1、多種數據源 * `基於 ADO.NET 的數據驅動` 基於 Fireasy 3,支持從 SqlServer、MySql、O ...
  • > [MaterialSkin.2](https://www.nuget.org/packages/MaterialSkin.2 "MaterialSkin.2") 控制項包是在 [MaterialSkin](https://github.com/IgnaceMaes/MaterialSkin "Ma ...
  • # Linux grep、sed、awk(包含練習題) ## 一、grep Linux grep (global regular expression) 命令用於查找文件里符合條件的字元串或正則表達式。 1. 基本用法與常見的正則表達式 > ``` > grep [options] pattern ...
  • 前幾天說明瞭Windows Powershell的使用方法,本來以為這就是適合自己的小工具了,沒想到狠狠打了自己的臉,不能夠顯示圖形化界面。(pavucontrol命令會顯示圖形化音量設置選項) 而且在網上沒找到相應的解決辦法,有知道的大佬們可以在評論區指個路子,萬分感謝。 自己沒有辦法,於是就從以 ...
  • Oracle能夠讓你在無須修改非Null值數據的情況下方便地把Null值排到最前面或者最後面,其他資料庫得添加一個輔助列 ...
  • 本文以 `React`、`Vue` 為例,介紹下主流的渲染模式以及在主流框架中如何實現上述的渲染模式。 ## 前置知識介紹 看渲染模式之前我們先看下幾個主流框架所提供的相關能力,瞭解的可跳到下個章節。 ### 掛載組件到 DOM 節點 這是主流框架最基本的能力,就是將組件渲染到指定的 `DOM` 節 ...
  • 關鍵字 abstractassertbooleanbreakbyte case catch char class const continue default do double else enum extends final finally float for goto if implementi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...