Windows逆向分析入門(三)——方法篇


前言

  上一篇,聊到逆向分析是找偏移,有依據地找,效率會快。這一篇聊下找偏移方法。只說概念,具體的細節,后續會配合實戰再展開細說。

 

找偏移的方法

1、內存

  逆向的目的,是找功能或者數據在內存的地址。最直接的方法,就是在內存里面搜索。

 

  對於數據:可以直接在內存搜索。

  對於功能:如果知道代碼的特征碼,也可以直接在內存尋找。

  (所謂代碼的特征碼,具體是一串字符串,在內存是唯一的,可以用來搜索定位)。

 

2、界面

  帶界面的軟件,一般流程就是:

    1、軟件生成界面,界面上會有按鈕,編輯框這些控件。

    2、用戶操作界面,點擊按鈕或者輸入文字等等。

    3、軟件接收到用戶的操作,調用對應的功能。

    4、調用的功能對數據進行處理。

    5、處理結果顯示在界面上。

 

  如果知道這個流程在代碼里面是怎么實現的,就能找到對應的功能和數據。

 

3、日志

  軟件運行的過程,是沒辦法像視頻那樣可以倒放。

  想了解軟件的運行過程,需要在軟件里面埋下標記。

  當軟件運行過程,經過做標記的位置,就可以輸出信息。(也就是所謂的日志)

  而逆向分析,通過日志找到標記,能知道對應的功能在哪里。

 

4、字符串

  代碼里面寫的字符串,編譯成軟件的過程,會被當作全局數據,存在固定的地方。

  而字符串可能有對應的功能,比如 send msg,可能出現在發送信息的功能附近。

  通過搜索字符串,看看哪里用了這個字符串,就可以找到對應的功能。

 

5、系統函數

  寫代碼的過程中,需要用到一些比較基礎的功能。(比如讀寫文件,收發網絡信息)

  這個時候直接用系統提供的接口就可以了。

  這些接口是公用的,所以偏移固定的。

  通過攔截這些接口,就可以定位了。

 

6、第三方庫

  軟件可以看成由多個模塊組成的,像搭積木那樣。

  而這些模塊大多通用的,比如:界面模塊,日志模塊。

  為了加快開發速度,一般會使用別人寫好的第三方模塊。

  如果第三方模塊是開源的,相當知道軟件的一部分代碼。

  通過第三方的代碼,可以推算出軟件還沒解開的另一部分。

 

下一篇,找到偏移之后,聊聊利用偏移寫代碼的思路。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM