逆向分析基礎知識詳解(教你如何分析軟體)

簡單來講,對軟體進行分析並搞清楚其行為的工作就叫做“逆向工程”。逆向是指對軟體進行分析,其物件不僅限與惡意軟體,因此也不一定和計算機安全相關,譬如:license的繞過、遊戲金手指等。都屬於透過逆向分析繞過或篡改內部資料達到所需目標。昨天我寫了一篇文章軟體破解基礎知識詳解(手把手教你如何破解軟體),大概是利用逆向分析,透過逐步詳解方式如何繞過程式的登入限制,實現登入破解。本篇是上一篇的延伸篇,透過本篇的基礎知識,可以讓大家對《軟體破解基礎知識詳解(手把手教你如何破解軟體)》文章更輕鬆閱讀。

1。概述

逆向工程可分為靜態分析與動態分析。靜態分析是:在不允許目標程式的情況下進行分析。動態分析:在執行目標程式的情況下進行分析。靜態分析可用於瞭解全域性資訊,動態分析可用於瞭解區域性資訊,動靜結合效果倍增!

靜態分析常用工具包括:winhex(二進位制編輯器)、IDA Freeware版(反彙編工具)等。 動態分析常用工具包括:Process Monitor(系統程序監視器)、OllyDbg(動態追蹤工具)、Wireshark(資料包分析軟體)等。 形形色色各種工具都有,再次不一一介紹。

工欲善其事必先利其器,在具有“趁手武器”後,我們需要對彙編指令有所瞭解(瞭解常用關鍵指令即可),便於透過工具展示出的內容進行分析。

沒必要一行行仔細閱讀,重要的部分花時間仔細理解,其餘部分了解大概即可。

2。基礎彙編介紹

瞭解彙編,就必須瞭解彙編中各個指令代表意思,只有對指令瞭然於胸後,才能相對輕鬆地閱讀彙編程式碼,下圖為整理的常用匯編指令,可以幫助大家在多數場景下使用。

逆向分析基礎知識詳解(教你如何分析軟體)

彙編指令介紹

3。示例分析

本文還是以簡單示例切入,方便小夥伴瞭解逆向原理及工具使用,透過不斷的分析,增加逆向分析經驗,為下一步深入分析做準備。

我寫了一段非常簡單C++程式碼,根據判斷2019彈出不同對話方塊。

逆向分析基礎知識詳解(教你如何分析軟體)

C++程式碼

我們可通多cmd來執行指定示例程式,如輸入“2018”時,程式提示 “Hello word”。

(Win32Project1.exe為示例程式)

逆向分析基礎知識詳解(教你如何分析軟體)

Hello word提示框

當我們輸入“2019”時,系統會提示“Hello 2019”。

逆向分析基礎知識詳解(教你如何分析軟體)

Hello 2019提示框

以上就是程式的介紹,非常簡單!下面我們就來透過動靜態兩種方式來分析該示例程式!

3.1靜態分析

首先可透過IDA進行全域性檢視,透過對原始碼反彙編,可大概瞭解程式的邏輯程式碼。透過下圖對示例分析,我們可發現關鍵方法,如:lstrcmp、GetActiveWindow、MessageBox。

lstrcmp:字串匹配;

GetActiveWindow:當前啟用的視窗;

MessageBox:提示框;

透過三個方法我相信你已經基本明白程式碼邏輯規則是什麼了?。

逆向分析基礎知識詳解(教你如何分析軟體)

靜態分析

3.2動態分析

透過靜態對程式碼有全域性瞭解後,我們可透過動態分析對示例程式進行區域性深入瞭解,首先1141749位置call呼叫了lstrcmp方法,1141758位置透過jnz指令進行判斷,如果不包含指定匹配字串將跳轉至01141787位置,即hello word的程式碼段中。詳情如下圖:

逆向分析基礎知識詳解(教你如何分析軟體)

動態分析

我們透過在1141749位置的lstrcmp設定斷點,透過對程式的執行輸入“2018”時,再執行至1141758位置的jnz時會跳轉至01141787位置,繼續執行至011417A5時(彈出框)棧的內容如上圖右下角,即“Hello word”提示框。

逆向分析基礎知識詳解(教你如何分析軟體)

OD動態分析

當我們輸入“2019”時,流程如下圖一致,唯一區別是,系統會提示“Hello 2019”。

由此我們完成了對示例該程式的靜態與動態分析。後期我們還可以結合Process Monitor、Wireshark等多種分析方法對軟體進行逆向分析。

4。總結

透過簡單示例的切入,讓大家瞭解一般逆向分析的工作流程和原理,大多數情況下我們

沒必要一行行仔細閱讀,重要的部分花時間仔細理解,其餘部分了解大概即可。

本文主要是介紹逆向分析思想,該思想核心在於知識儲備+經驗,知識的儲備可從程式設計、彙編、作業系統原理等多個方面入手(這也是為什麼逆向人員相對少,工資高的主要原因)。經驗就來自大家分析過程中的不斷嘗試、歸納總結。