《逆向工程核心原理》 李承遠

  • 《逆向工程核心原理》李承遠html

    國內翻譯版的有關惡意代碼分析的書籍,找到了兩本書,該書是其中一本(韓國人所寫),另外一本是惡意代碼分析實戰。後一本略難,因此選了這一原本看。shell

    第一部分 代碼逆向技術基礎
    1. 關於逆向工程編程

      介紹了簡單的概念和分析方法,以及提供了隨書代碼連接。以及 Keep Passion~windows

    2. 逆向分析 Hello World! 程序api

      用一個大概全部編程書籍都會舉的例子,帶你們熟悉代碼結構,熟悉OD工具。安全

    3. 小端標記法dom

      這個要讀懂,由於閱讀OD工具調試窗口顯示的內容須要知道該知識背景。ide

      一句話就是,「大端:數據在內存中從低地址到高地址數據順序對存儲;小端:數據在內存中從低地址到高地址數據逆序對存儲」。函數

    4. IA-32 寄存器基本講解工具

      有彙編語言基礎的該章可快速讀過。沒有的仔細讀讀,若要進一步自學,推薦彙編語言(第2版)閱讀該書,目前該書已經有第三版了。我閱讀的是第二版,由於學校圖書館只有第二版QAQ

    5. 瞭解棧是先進後出(後進先出)。

    6. 分析 apex' crackle#1

      小試牛刀,培養興趣。也許是從窺探到放棄~ 2333333

    7. 棧幀

      重要。該章的內容雖然簡短,可是 Reverse 不可或缺。對照着0day安全 (第2版)第二章 2.1 系統棧的工做原理,可能好理解一些。而後,書中的例子建議動手調試一下。

    8. abex' crackle #2

      這章明顯提高了難度。我的讀完和大體調試完該章的體會是,若要在逆向有所擅長,win32彙編編程經驗和Windows操做系統知識儲備必不可少。

    9. Process Explorer ——最優秀的進程管理工具

      看看就好

    10. 函數調用約定

    • 棧內存是固定的,ESP用來指示棧的當前位置,若ESP指向棧底,則沒法再使用該棧。函數調用後如何處理ESP,這就是函數調用約定要解決的問題。主要的函數調用約定以下。

      函數參數入棧順序 清理棧空間 應用場景
      cdecl 從右向左 調用者 主要在C語言中使用
      stdcall 從右向左 被調用者 經常使用於Win 32 API
      fastcall 若某函數有4個參數,則前2個參數分別使用ECX、EDX寄存器傳遞。其它參數從右向左入棧。 被調用者 經常使用於Win 32 API
    1. 視頻講座

    書中提到的一個網站值得一看https://forum.tuts4you.com

    1. 究竟應當如何學習代碼逆向分析

    一言以蔽之,「你必定行!」

    第二部分 PE 文件格式

    1. PE 文件格式

    好難~ 看了兩遍。順事後邊用到再回來~

    可能對理解本章知識點有幫助的帖子:VA&RVA 和 RVA to RAW

    1. 運行時壓縮

    這章主要講 http://upx.sourceforge.net 該工具的運用。發現 惡意代碼分析實戰 一書也有提到該網站,固然建議小白(好比我,手動滑稽)先閱讀《逆向工程核心原理》,而後閱讀《惡意代碼分析實戰》。

    1. 調試 UPX 壓縮的 notepad 程序

    2. 基址重定位表

    由於 ASLR 機制,須要地址重定位。

    1. 從可執行文件中刪除 .reloc 節區

    貫穿整本書有57章之多,但許多章節都是及其之短。好比,本章~

    1. UPack PE文件頭詳細分析

    (Win)Upack 0.39 final by dwing

    1. UPack 調試 - 查找 OEP

    2. 「內嵌補丁」練習

    第三部分 DLL 注入

    1. Windows 消息鉤取

    2. 惡意鍵盤記錄器

    3. DLL 注入

    4. DLL 卸載

    讀完2三、24章節內容,感觸頗深的是須要熟練 C/C++,以及對 Windows API 有必定程度瞭解,不須要也不可能掌握全部 API ,碰到會查詢便可。

    1. 經過修改 PE 加載 DLL

    \(P_{231}\)底部的「每一個IID結構體的大小爲14個字節,總體大小爲14*5=64」沒看懂。是否應修改成「每一個IID結構體的大小爲16個字節,總體大小爲16*4=64。由於IMAGE_IMPORT_DESCRIPTOR(IID)結構體有四個雙字(DWORD,double word,2*16bit)成員,其中TimeDateStamp通常省略」

    1. PE Tools

    2. 第27章 代碼注入

    3. 使用匯編語言編寫注入代碼

    第四部分 API 鉤取

    1. API 鉤取:逆向分析之 「花」

    2. 記事本 WriteFile() API 鉤取

    3. 關於調試器

    4. 計算器顯示中文數字

    5. 隱藏進程

    Calculator v1.7 by cybult

    書中\(P_{353}\),圖33-22 stealth3.dll練習(隱藏)輸入的命令應改成:

    C:\work>HideProc2.exe -hide stealth3.dll
    1. 高級全局API鉤取:IE鏈接控制

    2. 優秀分析工具的五種標準

    第五部分 64 位 &Windows 內核 6

    1. 64位計算

    2. x64處理器

    3. PE32+

    4. WinDbg

    5. 64位調試

    6. ASLR(Address Space Layout Randomization)

    7. 內核6中的會話

    8. 內核6中的DLL注入

    9. InjDll.exe:DLL注入專用工具

    第六部分 高級逆向分析技術

    1. TLS(Thread Local Storage)回調函數

    2. TEB(Thread Environment Block)

    3. PEB(Process Environment Block)

    4. SEH(Structured Exception Handling)

    5. IA-32指令

    下載 IA-32 用戶手冊

    第七部分 反調試技術

    1. 反調試技術

    2. 靜態反調試技術

    3. 動態反調試技術

    4. 高級反調試技術

    第八部分 調試練習

    1. 調試練習1:服務

    2. 調試練習2:自我建立

    3. 調試練習3:PE映像切換

    4. 調試練習4:Debug Blocker

    • 結束語
相關文章
相關標籤/搜索