《逆向工程核心原理》李承遠html
國內翻譯版的有關惡意代碼分析的書籍,找到了兩本書,該書是其中一本(韓國人所寫),另外一本是惡意代碼分析實戰。後一本略難,因此選了這一原本看。shell
關於逆向工程編程
介紹了簡單的概念和分析方法,以及提供了隨書代碼連接。以及 Keep Passion~windows
逆向分析 Hello World! 程序api
用一個大概全部編程書籍都會舉的例子,帶你們熟悉代碼結構,熟悉OD工具。安全
小端標記法dom
這個要讀懂,由於閱讀OD工具調試窗口顯示的內容須要知道該知識背景。ide
一句話就是,「大端:數據在內存中從低地址到高地址數據順序對存儲;小端:數據在內存中從低地址到高地址數據逆序對存儲」。函數
IA-32 寄存器基本講解工具
有彙編語言基礎的該章可快速讀過。沒有的仔細讀讀,若要進一步自學,推薦彙編語言(第2版)閱讀該書,目前該書已經有第三版了。我閱讀的是第二版,由於學校圖書館只有第二版QAQ
棧
瞭解棧是先進後出(後進先出)。
分析 apex' crackle#1
小試牛刀,培養興趣。也許是從窺探到放棄~ 2333333
棧幀
重要。該章的內容雖然簡短,可是 Reverse 不可或缺。對照着0day安全 (第2版)第二章 2.1 系統棧的工做原理,可能好理解一些。而後,書中的例子建議動手調試一下。
abex' crackle #2
這章明顯提高了難度。我的讀完和大體調試完該章的體會是,若要在逆向有所擅長,win32彙編編程經驗和Windows操做系統知識儲備必不可少。
Process Explorer ——最優秀的進程管理工具
看看就好
函數調用約定
棧內存是固定的,ESP用來指示棧的當前位置,若ESP指向棧底,則沒法再使用該棧。函數調用後如何處理ESP,這就是函數調用約定要解決的問題。主要的函數調用約定以下。
函數參數入棧順序 | 清理棧空間 | 應用場景 | |
---|---|---|---|
cdecl | 從右向左 | 調用者 | 主要在C語言中使用 |
stdcall | 從右向左 | 被調用者 | 經常使用於Win 32 API |
fastcall | 若某函數有4個參數,則前2個參數分別使用ECX、EDX寄存器傳遞。其它參數從右向左入棧。 | 被調用者 | 經常使用於Win 32 API |
書中提到的一個網站值得一看https://forum.tuts4you.com
一言以蔽之,「你必定行!」
好難~ 看了兩遍。順事後邊用到再回來~
可能對理解本章知識點有幫助的帖子:VA&RVA 和 RVA to RAW
這章主要講 http://upx.sourceforge.net 該工具的運用。發現 惡意代碼分析實戰 一書也有提到該網站,固然建議小白(好比我,手動滑稽)先閱讀《逆向工程核心原理》,而後閱讀《惡意代碼分析實戰》。
調試 UPX 壓縮的 notepad 程序
基址重定位表
由於 ASLR 機制,須要地址重定位。
貫穿整本書有57章之多,但許多章節都是及其之短。好比,本章~
(Win)Upack 0.39 final by dwing
UPack 調試 - 查找 OEP
「內嵌補丁」練習
Windows 消息鉤取
惡意鍵盤記錄器
DLL 注入
DLL 卸載
讀完2三、24章節內容,感觸頗深的是須要熟練 C/C++,以及對 Windows API 有必定程度瞭解,不須要也不可能掌握全部 API ,碰到會查詢便可。
\(P_{231}\)底部的「每一個IID結構體的大小爲14個字節,總體大小爲14*5=64」沒看懂。是否應修改成「每一個IID結構體的大小爲16個字節,總體大小爲16*4=64。由於IMAGE_IMPORT_DESCRIPTOR(IID)結構體有四個雙字(DWORD,double word,2*16bit)成員,其中TimeDateStamp通常省略」
PE Tools
第27章 代碼注入
使用匯編語言編寫注入代碼
API 鉤取:逆向分析之 「花」
記事本 WriteFile() API 鉤取
關於調試器
計算器顯示中文數字
隱藏進程
書中\(P_{353}\),圖33-22 stealth3.dll練習(隱藏)輸入的命令應改成:
C:\work>HideProc2.exe -hide stealth3.dll
高級全局API鉤取:IE鏈接控制
優秀分析工具的五種標準
64位計算
x64處理器
PE32+
WinDbg
64位調試
ASLR(Address Space Layout Randomization)
內核6中的會話
內核6中的DLL注入
InjDll.exe:DLL注入專用工具
TLS(Thread Local Storage)回調函數
TEB(Thread Environment Block)
PEB(Process Environment Block)
SEH(Structured Exception Handling)
IA-32指令
反調試技術
靜態反調試技術
動態反調試技術
高級反調試技術
調試練習1:服務
調試練習2:自我建立
調試練習3:PE映像切換
調試練習4:Debug Blocker