了解逆向工程概念

了解逆向工程概念

工程師有時需要逆向思考來分析產品。例如,機械工程師可以根據產品的設計和物理特性得出有關產品生產的結論。如果他們對產品有透徹的了解,他們甚至可以生產出相同的產品。

您還可以將逆向工程比作數學方程式的證明。那麼,逆向工程是如何使用的呢?

什麼是逆向工程?

逆向工程是分析系統以重現或改進系統的過程。如果您查看逆向工程的工作區域,就會發現您可以將其用於許多不同的目的。如果從網絡安全的角度來看,可以使用逆向工程方法執行以下操作:

  • 非開源軟件源碼分析
  • 漏洞分析
  • 惡意軟件分析
  • 破解和修補

您甚至可以在當今的計算機遊戲中看到逆向工程。例如,開發人員經常使用逆向工程方法創建軟件模塊。

在逆向工程領域,有兩種不同的分析方法:靜態和動態。當你分析一個程序而不實際運行它時,你就執行了靜態分析。另一方面,動態分析方法要求您運行程序以觀察其行為及其使用的數據。

但是在進行逆向工程分析之前,您需要了解一些關於計算機體系結構工作原理的重要術語。

計算機體系結構的主要部分

除非您了解計算機體系結構,否則幾乎不可能進行逆向工程。您需要研究四個主要部分:

  • 輸入:一組輸入數據的方法。
  • CPU:CPU 處理傳入的數據並將其傳輸給它的所有者。它是中央處理單元。
  • 內存:在處理過程中臨時保存數據的空間。
  • 輸出:最終用戶看到的結果。

你可以通過一個例子來記住所有這些主要問題,比如當你按下鍵盤上的字母 A 時。當您按下它時,會發生輸入事件。在這個階段之後,CPU 處理數據並使用內存中的一小塊空間來存儲它。最後,您將在屏幕上看到字母 A,以輸出結束該過程。

深入 CPU 的深處

電路板上 CPU 的特寫

如果你真的想成為逆向工程專家並深入研究這個主題,你需要對硬件、低級語言,尤其是 CPU 有詳細的了解。您需要了解的有關 CPU 的關鍵主題是:

  1. 控制單元:負責處理 CPU 中的數據並將其傳輸到相關領域。您可以將此單元視為路由控制機制。
  2. ALU:這代表算術邏輯單元。這是一些算術和邏輯運算發生的地方。如果你深入研究數學,你會發現基本的四個運算本質上是加法的變體。所以ALU是基於聚合的。例如,三減二等於三減二。
  3. 寄存器:這些是 CPU 內部保存已處理數據的區域。有不同類型的寄存器,就像編程語言中有不同類型的變量一樣。寄存器負責維護分配給它的數據的類型和屬性。
  4. 信號:如果你想讓 CPU 同時執行許多不同的操作,一些組織它們的方法是必要的。執行此操作的元素稱為信號。每個事務都根據信號進行操作,以確保它不會干擾另一個進程。
  5. 總線:數據從一個單元移動到另一個單元所使用的路徑。注意這個名字是如何暗示交通的。

您在逆向工程中經常聽到的概念

了解 CPU 如何處理數據並將其存儲在內存中,以及寄存器的概念,在逆向工程中非常有用。特別是,您可以使用下圖更好地理解內存的概念:

顯示內存不同部分的圖表包括堆棧和堆。

最後,對於逆向工程分析,你需要了解一些關於寄存器的基本概念。它們是您最關注的主題之一。下面以最簡潔的方式對你有用的數據、指針、變址寄存器進行一些解釋:

  • 1. EAX:代表累加器寄存器。它通常在這裡保存屬於算術運算類別的數據。
  • 2. EBX:代表基址寄存器。它起到間接尋址的作用。
  • 3. EDX:代表數據寄存器。EDX 幫助其他寄存器。
  • 4. EIP:代表指令指針。保存要運行的域的地址。
  • 5. ESP:保存基地址。
  • 6. ESI:保存源索引信息。
  • 7. EDI:保存目的地索引信息。

您應該分別研究所有這些以了解它們的細微差別。但是,如果您查看基礎知識並嘗試理解業務邏輯,那麼無論您使用的是哪種處理器架構,逆向工程的代碼分析都將非常容易。

逆向工程通常從機器代碼開始。如果您熟悉彙編或掌握 32 位或 64 位處理器體系結構的命令,您可能會理解上述許多術語。如果您想從頭開始學習彙編,它將在逆向工程中非常有用。

你會用這一切做什麼?

如果您對逆向工程有很好的了解,那麼無論您使用什麼操作系統或處理器架構,您都可以進行代碼分析。例如,可以找到許多程序或計算機遊戲的破解版本。這是一種完全非法的方法。

但是,如果您要成為一名有道德的網絡安全專家,您將需要使用逆向工程師來了解這些破解程序被破解的原因。如果你想在逆向工程中有所進步或剛剛起步,那麼嘗試了解硬件和機器代碼之間的關係將是一個不錯的選擇。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *