編輯推薦
韓國逆嚮分析領域龍頭之作!
逆嚮分析師必知核心原理大全!
《逆嚮工程核心原理》集中講解逆嚮分析技術及其操作原理,不僅通過通俗易懂的語言介紹瞭每項技術,更通過豐富的示例使讀者徹底掌握核心部分的原理。閱讀此書不僅可以為逆嚮分析打下堅實基礎,更能夠獲得恒久保值的技術精髓。
想成為逆嚮工程研究員的讀者或正在從事逆嚮開發工作的開發人員一定會通過本書獲得很大幫助。同時,想成為安全領域專傢的人也可從本書輕鬆起步。
內容簡介
《逆嚮工程核心原理》十分詳盡地介紹瞭代碼逆嚮分析的核心原理。作者在Ahnlab 研究所工作多年,書中不僅包括其以此經驗為基礎親自編寫的大量代碼,還包含瞭逆嚮工程研究人員必須瞭解的各種技術和技巧。徹底理解並切實掌握逆嚮工程這門技術,就能在眾多IT相關領域進行拓展運用,這本《逆嚮工程核心原理》就是通嚮逆嚮工程大門的捷徑。
想成為逆嚮工程研究員的讀者或正在從事逆嚮開發工作的開發人員一定會通過《逆嚮工程核心原理》獲得很大幫助。同時,想成為安全領域專傢的人也可從《逆嚮工程核心原理》輕鬆起步。
作者簡介
李承遠
在AhnLab從事惡意代碼分析工作,一直維護著一個逆嚮分析技術專業學習博客。從接觸逆嚮分析技術開始就為其迷人魅力深深吸引,對逆嚮分析技術的傳播及多領域應用非常關注,喜歡讀書、發呆,也嚮往新的挑戰。
www.reversecore.com
reversecore@gmail.com
武傳海
擅韓語,喜計算機,有多年翻譯經驗,內容涉及多個領域,尤其擅長翻譯各類計算機圖書,已齣版多部韓語譯著。
QQ:768160125
jeonhae@126.com
內頁插圖
精彩書評
★嚮安全技術專傢邁齣第一步的必選書!
最近,越來越多的人開始關心信息技術安全,但是相關領域的安全技術專傢仍然十分匱乏。主要有兩方麵原因導緻這種現象形成:一方麵是因為必須做大量準備,努力學習;另一方麵是因為市麵上缺乏係統講解這類內容的專業書籍。
信息技術安全領域的圖書很少有講解惡意代碼分析的,本書恰好填補瞭這一空白。無論是剛開始學習惡意代碼分析的朋友,還是從事惡意代碼分析的專傢,都會為本書麵世而激動。
雖然讀者閱讀本書時需要具有基本的匯編語言知識,但是本書內容講解非常細緻,涵蓋瞭從惡意代碼分析基礎知識到高級技術的全部內容,係統而有條理,語言簡潔,通俗易懂,並在講解中選配瞭恰當的示例程序,使內容更易理解。對於最近齣現的惡意代碼中的各種常用技術,本書都做瞭詳細講解,無論你是初學者還是分析專傢,都能從中獲益。
信息安全技術涉及各領域,需要知識淵博、經驗豐富的專傢。本書將幫你輕鬆邁齣成為安全技術專傢的第一步。
——韓昌奎,ASEC中心主任
★如果此刻你手上正捧著這本書,說明你已經被代碼逆嚮分析的魅力深深吸引瞭!
對於剛開始學習代碼逆嚮分析技術的人而言,需要學習的內容很多,這容易讓人心生畏懼、止步不前。其實不需擔心,本書在學習過程中給齣瞭大量提示,各位藉助這些提示可以更好地理解所講的內容。
本書比較重視代碼逆嚮分析者的心態引導與培養,在內容講解上也與其他書籍不同,並不是單純的技巧羅列,而是深刻講解瞭相關技術的深層含義、技術的工作原理以及內部實現結構,這也是本書的重點所在。同時配閤豐富示例,讓內容變得更具體形象、更易理解,作者的良苦用心可見一斑。
你想成為代碼逆嚮分析員嗎?如果你感到睏惑:“我是開發人員,難道也需要讀它嗎?”
——鄭官真,CISCO高級研究員
目錄
第一部分 代碼逆嚮技術基礎
第1章 關於逆嚮工程 2
1.1 逆嚮工程 2
1.2 代碼逆嚮工程 2
1.2.1 逆嚮分析法 2
1.2.2 源代碼、十六進製代碼、匯編代碼 4
1.2.3 “打補丁”與“破解” 5
1.3 代碼逆嚮準備 5
1.3.1 目標 5
1.3.2 激情 6
1.3.3 榖歌 6
1.4 學習逆嚮分析技術的禁忌 6
1.4.1 貪心 6
1.4.2 急躁 7
1.5 逆嚮分析技術的樂趣 7
第2章 逆嚮分析Hello World!程序 8
2.1 Hello World!程序 8
2.2 調試HelloWorld.exe程序 9
2.2.1 調試目標 9
2.2.2 開始調試 9
2.2.3 入口點 10
2.2.4 跟蹤40270C函數 10
2.2.5 跟蹤40104F跳轉語句 12
2.2.6 查找main()函數 12
2.3 進一步熟悉調試器 14
2.3.1 調試器指令 14
2.3.2 “大本營” 15
2.3.3 設置“大本營”的四種方法 15
2.4 快速查找指定代碼的四種方法 17
2.4.1 代碼執行法 18
2.4.2 字符串檢索法 19
2.4.3 API檢索法(1):在調用代碼中設置斷點 20
2.4.4 API檢索法(2):在API代碼中設置斷點 21
2.5 使用“打補丁”方式修改“Hello World!”字符串 23
2.5.1 “打補丁” 23
2.5.2 修改字符串的兩種方法 24
2.6 小結 28
第3章 小端序標記法 31
3.1 字節序 31
3.1.1 大端序與小端序 32
3.1.2 在OllyDbg中查看小端序 32
第4章 IA-32寄存器基本講解 34
4.1 什麼是CPU寄存器 34
4.2 IA-32寄存器 34
4.3 小結 40
第5章 棧 41
5.1 棧 41
5.1.1 棧的特徵 41
5.1.2 棧操作示例 41
第6章 分析abex’ crackme#1 44
6.1 abex’ crackme #1 44
6.1.1 開始調試 45
6.1.2 分析代碼 45
6.2 破解 47
6.3 將參數壓入棧 47
6.4 小結 48
第7章 棧幀 49
7.1 棧幀 49
7.2 調試示例:stackframe.exe 49
7.2.1 StackFrame.cpp 50
7.2.2 開始執行main()函數&生成棧幀 51
7.2.3 設置局部變量 52
7.2.4 add()函數參數傳遞與調用 53
7.2.5 開始執行add()函數&生成棧幀 54
7.2.6 設置add()函數的局部變量(x, y) 55
7.2.7 ADD運算 55
7.2.8 刪除函數add()的棧幀&函數執行完畢(返迴) 56
7.2.9 從棧中刪除函數add()的參數(整理棧) 57
7.2.10 調用printf()函數 58
7.2.11 設置返迴值 58
7.2.12 刪除棧幀&main;()函數終止 58
7.3 設置OllyDbg選項 59
7.3.1 Disasm選項 59
7.3.2 Analysis1選項 60
7.4 小結 61
第8章 abex’ crackme #2 62
8.1 運行abex’ crackme #2 62
8.2 Visual Basic文件的特徵 63
8.2.1 VB專用引擎 63
8.2.2 本地代碼和僞代碼 63
8.2.3 事件處理程序 63
8.2.4 未文檔化的結構體 63
8.3 開始調試 63
8.3.1 間接調用 64
8.3.2 RT_MainStruct結構體 64
8.3.3 ThunRTMain()函數 65
8.4 分析crackme 65
8.4.1 檢索字符串 65
8.4.2 查找字符串地址 66
8.4.3 生成Serial的算法 68
8.4.4 預測代碼 69
8.4.5 讀取Name字符串的代碼 69
8.4.6 加密循環 70
8.4.7 加密方法 70
8.5 小結 72
第9章 Process Explorer——最優秀的進程管理工具 74
9.1 Process Explorer 74
9.2 具體有哪些優點呢 75
9.3 sysinternals 75
第10章 函數調用約定 76
10.1 函數調用約定 76
10.1.1 cdecl 76
10.1.2 stdcall 77
10.1.3 fastcall 78
第11章 視頻講座 79
11.1 運行 79
11.2 分析 79
11.2.1 目標(1):去除消息框 79
11.2.2 打補丁(1):去除消息框 81
11.2.3 目標(2):查找注冊碼 83
11.3 小結 85
第12章 究竟應當如何學習代碼逆嚮分析 86
12.1 逆嚮工程 86
12.1.1 任何學習都應當有目標 86
12.1.2 擁有積極心態 86
12.1.3 要感受其中的樂趣 86
12.1.4 讓檢索成為日常生活的一部分 87
12.1.5 最重要的是實踐 87
12.1.6 請保持平和的心態 87
第二部分 PE文件格式
第13章 PE文件格式 90
13.1 介紹 90
13.2 PE文件格式 90
13.2.1 基本結構 91
13.2.2 VA&RVA; 92
13.3 PE頭 92
13.3.1 DOS頭 93
13.3.2 DOS存根 94
13.3.3 NT頭 94
13.3.4 NT頭:文件頭 95
13.3.5 NT頭:可選頭 97
13.3.6 節區頭 101
13.4 RVA to RAW 104
13.5 IAT 105
13.5.1 DLL 105
13.5.2 IMAGE_IMPORT_DESCRIPTOR 107
13.5.3 使用notepad.exe練習 108
13.6 EAT 112
13.6.1 IMAGE_EXPORT_DIRECTORY 113
13.6.2 使用kernel32.dll練習 114
13.7 高級PE 116
13.7.1 PEView.exe 116
13.7.2 Patched PE 117
13.8 小結 118
第14章 運行時壓縮 121
14.1 數據壓縮 121
14.1.1 無損壓縮 121
14.1.2 有損壓縮 121
14.2 運行時壓縮器 122
14.2.1 壓縮器 122
14.2.2 保護器 123
14.3 運行時壓縮測試 123
第15章 調試UPX壓縮的notepad程序 127
15.1 notepad.exe的EP代碼 127
15.2 notepad_upx.exe的EP代碼 127
15.3 跟蹤UPX文件 129
15.3.1 OllyDbg的跟蹤命令 129
15.3.2 循環 #1 129
15.3.3 循環 #2 130
15.3.4 循環 #3 131
15.3.5 循環 #4 131
15.4 快速查找UPX OEP的方法 132
15.4.1 在POPAD指令後的JMP指令處設置斷點 132
15.4.2 在棧中設置硬件斷點 133
15.5 小結 133
第16章 基址重定位錶 135
16.1 PE重定位 135
16.1.1 DLL/SYS 135
16.1.2 EXE 136
16.2 PE重定位時執行的操作 136
16.3 PE重定位操作原理 138
16.3.1 基址重定位錶 138
16.3.2 IMAGE_BASE_RELOCATION結構體 139
16.3.3 基址重定位錶的分析方法 139
16.3.4 練習 141
第17章 從可執行文件中刪除.reloc節區 142
17.1 .reloc節區 142
17.2 reloc.exe 142
17.2.1 刪除.reloc節區頭 142
17.2.2 刪除.reloc節區 143
17.2.3 修改IMAGE_FILE_HEADER 143
17.2.4 修改IMAGE_OPTIONAL_HEADER 144
17.3 小結 145
第18章 UPack PE文件頭詳細分析 146
18.1 UPack說明 146
18.2 使用UPack壓縮notepad.exe 146
18.3 使用Stud_PE工具 148
18.4 比較PE文件頭 148
18.4.1 原notepad.exe的PE文件頭 149
18.4.2 notepad_upack.exe運行時壓縮的PE文件頭 149
18.5 分析UPack的PE文件頭 150
18.5.1 重疊文件頭 150
18.5.2 IMAGE_FILE_HEADER.SizeOfOptionalHeader 150
18.5.3 IMAGE_OPTIONAL_HEADER.NumberOf-RvaAndSizes 152
18.5.4 IMAGE_SECTION_HEADER 153
18.5.5 重疊節區 155
18.5.6 RVA to RAW 156
18.5.7 導入錶(IMAGE_IMPORT_DESCRIPTOR array) 158
18.5.8 導入地址錶 160
18.6 小結 161
第19章 UPack調試? 查找OEP 162
19.1 OllyDbg運行錯誤 162
19.2 解碼循環 163
19.3 設置IAT 165
19.4 小結 166
第20章 “內嵌補丁”練習 167
20.1 內嵌補丁 167
20.2 練習:Patchme 168
20.3 調試:查看代碼流 168
20.4 代碼結構 172
20.5 “內嵌補丁”練習 173
20.5.1 補丁代碼要設置在何處呢 173
20.5.2 製作補丁代碼 175
20.5.3 執行補丁代碼 176
20.5.4 結果確認 177
第三部分 DLL注入
第21章 Windows消息鈎取 180
21.1 鈎子 180
21.2 消息鈎子 180
21.3 SetWindowsHookEx() 181
21.4 鍵盤消息鈎取練習 182
21.4.1 練習示例HookMain.exe 182
21.4.2 分析源代碼 185
21.5 調試練習 187
21.5.1 調試HookMain.exe 188
21.5.2 調試Notepad.exe進程內的KeyHook.dll 190
21.6 小結 192
第22章 惡意鍵盤記錄器 194
22.1 惡意鍵盤記錄器的目標 194
22.1.1 在綫遊戲 194
22.1.2 網上銀行 194
22.1.3 商業機密泄露 194
22.2 鍵盤記錄器的種類與發展趨勢 195
22.3 防範惡意鍵盤記錄器 195
22.4 個人信息 195
第23章 DLL注入 197
23.1 DLL注入 197
23.2 DLL注入示例 198
23.2.1 改善功能與修復Bug 198
23.2.2 消息鈎取 198
23.2.3 API鈎取 198
23.2.4 其他應用程序 199
23.2.5 惡意代碼 199
23.3 DLL注入的實現方法 199
23.4 CreateRemoteThread() 199
23.4.1 練習示例myhack.dll 199
23.4.2 分析示例源代碼 203
23.4.3 調試方法 208
23.5 AppInit_DLLs 210
23.5.1 分析示例源碼 211
23.5.2 練習示例myhack2.dll 212
23.6 SetWindowsHookEx() 214
23.7 小結 214
第24章 DLL卸載 216
24.1 DLL卸載的工作原理 216
24.2 實現DLL卸載 216
24.2.1 獲取進程中加載的DLL信息 219
24.2.2 獲取目標進程的句柄 220
24.2.3 獲取FreeLibrary() API地址 220
24.2.4 在目標進程中運行綫程 220
24.3 DLL卸載練習 220
24.3.1 復製文件及運行notepad.exe 220
24.3.2 注入myhack.dll 221
24.3.3 卸載myhack.dll 222
第25章 通過修改PE加載DLL 224
25.1 練習文件 224
25.1.1 TextView.exe 224
25.1.2 TextView_patched.exe 225
25.2 源代碼 - myhack3.cpp 227
25.2.1 DllMain() 227
25.2.2 DownloadURL() 228
25.2.3 DropFile() 229
25.2.4 dummy() 230
25.3 修改TextView.exe文件的準備工作 231
25.3.1 修改思路 231
25.3.2 查看IDT是否有足夠空間 231
25.3.3 移動IDT 233
25.4 修改TextView.exe 235
25.4.1 修改導入錶的RVA值 235
25.4.2 刪除綁定導入錶 235
25.4.3 創建新IDT 235
25.4.4 設置Name、INT、IAT 236
25.4.5 修改IAT節區的屬性值 238
25.5 檢測驗證 240
25.6 小結 241
第26章 PE Tools 242
26.1 PE Tools 242
26.1.1 進程內存轉儲 243
26.1.2 PE編輯器 245
26.2 小結 245
第27章 代碼注入 247
27.1 代碼注入 247
27.2 DLL注入與代碼注入 247
27.3 練習示例 249
27.3.1 運行notepad.exe 249
27.3.2 運行CodeInjection.exe 249
27.3.3 彈齣消息框 250
27.4 CodeInjection.cpp 250
27.4.1 main()函數 251
27.4.2 ThreadProc()函數 251
27.4.3 InjectCode()函數 254<
逆嚮工程核心原理 下載 mobi epub pdf txt 電子書