预购商品
书目分类
特别推荐
第1章 軟件逆向分析基礎 1 1.1 初識軟件逆向分析 2 1.2 軟件逆向分析的目的 7 1.2.1 與安全相關的應用 7 1.2.2 軟件開發中的逆向分析 9 1.3 軟件逆向分析的合法性 11 1.3.1 可以規避的例外 11 1.3.2 軟件逆向分析與版權之爭 12 1.3.3 漏洞利用 14 1.4 如何掌握軟件逆向分析方法 14 1.4.1 目標要明確 15 1.4.2 擁有積極的心態 15 1.4.3 感受逆向分析的樂趣 15 1.4.4 學會檢索 16 1.4.5 實踐 實踐 再實踐 16 1.4.6 保持平和的心態 17 1.5 軟件逆向分析過程 17 1.5.1 靜態分析 17 1.5.2 動態分析 32 思考題 37 第2章 檔案格式解析 38 2.1 PE文件 38 2.1.1 基本概念 38 2.1.2 頭部信息 40 2.1.3 區塊信息 45 2.1.4 導入表和匯出表 48 2.2 ELF文件 51 2.2.1 ELF檔的基本格式 51 2.2.2 ELF檔頭部資訊 52 2.2.3 ELF文件的節區 56 2.2.4 ELF文件的段 61 2.2.5 ELF文件的“.dynamic”節區 65 2.3 “.dex”文件 69 2.3.1 “.dex”文件簡介 70 2.3.2 “.dex”檔結構 71 2.4 “.odex”檔結構 81 思考題 83 第3章 理解程式邏輯和算數運算 84 3.1 數據的存儲和訪問 84 3.1.1 常量和變數 84 3.1.2 基本數據類型 88 3.1.3 指標、數組和字串 94 3.1.4 結構體、聯合體 98 3.1.5 函數 100 3.2 基本程式邏輯 104 3.2.1 無條件分支指令 104 3.2.2 條件分支指令 106 3.2.3 迴圈指令 109 3.3 算數運算 112 3.3.1 算術標誌位元 112 3.3.2 整數運算 113 思考題 118 第4章 常用反彙編算法與分析 119 4.1 反彙編算法概述 119 4.2 線性掃描反彙編算法 121 4.3 遞迴下降反彙編算法 124 4.4 反彙編算法缺陷分析 128 4.4.1 線性掃描反彙編算法缺陷示例 129 4.4.2 遞迴下降反彙編算法缺陷示例 132 4.5 反彙編案例 137 思考題 138 第5章 反彙編算法優化 139 5.1 基於超集合的反彙編算法——Multiverse 139 5.1.1 存在的挑戰 140 5.1.2 解決思路 144 5.1.3 映射 146 5.1.4 重寫 150 5.1.5 實現 151 5.2 基於概率提示的反彙編算法——PD 152 5.2.1 概述 153 5.2.2 X86指令的概率特徵 155 5.2.3 概率提示反彙編算法 158 5.2.4 算法實現 163 5.3 基於多路徑探索的動態反彙編算法 167 5.3.1 指令執行軌跡 168 5.3.2 多路徑探索 169 思考題 170 第6章 Android程式逆向分析基礎 171 6.1 Android程式的代碼結構 171 6.1.1 壓縮檔結構 173 6.1.2 反編譯檔 179 6.2 Android虛擬機器:Dalvik和ART 181 6.2.1 Dalvik虛擬機器 181 6.2.2 ART虛擬機器 182 6.2.3 “.apk”程式的執行流程 183 6.3 smali語言和基本語法 183 6.3.1 smali代碼格式 185 6.3.2 smali語言的數據類型 187 6.3.3 寄存器 187 6.3.4 方法定義 189 6.3.5 常見Dalvik指令集 189 6.4 JNI 197 6.4.1 Java中調用Native函數 197 6.4.2 C/C 中調用Java函數 200 思考題 200 第7章 Android逆向分析工具及應用 201 7.1 反編譯工具 201 7.1.1 smali/baksmali 201 7.1.2 apktool 202 7.1.3 ShakaApktool 204 7.1.4 Android Killer 204 7.1.5 Jeb 208 7.1.6 Jadx 213 7.1.7 GDA 216 7.2 動態分析工具 217 7.2.1 Xposed框架 218 7.2.2 Frida 224 7.2.3 Objection 230 7.3 協議分析工具 230 7.3.1 Wireshark 230 7.3.2 Fiddler 231 7.3.3 Burp Suite 231 思考題 232 第8章 軟件保護與反保護的基本方法 233 8.1 軟件保護技術概述 233 8.1.1 軟件加密技術 234 8.1.2 防篡改技術 234 8.1.3 反調試技術 234 8.1.4 殼保護技術 235 8.2 移動終端軟件保護技術概述 235 8.2.1 靜態篡改防護技術 236 8.2.2 動態篡改防護技術 237 8.3 對ELF文件加殼 238 8.3.1 ELF檔的載入過程 238 8.3.2 常見ELF文件的加殼原理 239 8.3.3 包含式ELF檔加殼方法 241 8.4 Android應用加固 243 8.4.1 “.dex”檔加固方法概述 243 8.4.2 通用加殼技術 244 8.4.3 動態脫殼方法 247 8.5 Android應用脫殼分析實例 249 8.5.1 Android中“.so”檔的載入流程分析 249 8.5.2 Android動態調試過程 249 8.5.3 加固方式分析 251 8.5.4 “.so”檔分析 252 8.5.5 還原JNI_OnLoad 255 8.5.6 動態分析 260 思考題 270 第9章 代碼混淆與反混淆 271 9.1 代碼混淆技術基本概念 271 9.1.1 代碼混淆技術的定義 272 9.1.2 代碼混淆技術的分類 273 9.1.3 代碼混淆技術與逆向分析的關係 273 9.2 常見的基於原始程式碼的代碼混淆技術 274 9.2.1 符號混淆 274 9.2.2 結構混淆 276 9.2.3 控制流混淆 278 9.2.4 數據混淆 280 9.3 二進位碼混淆技術 281 9.3.1 插入花指令 281 9.3.2 代碼亂序 283 9.3.3 常量展開 283 9.3.4 調用地址隱藏 284 9.3.5 指令移動 284 9.3.6 數據混淆 285 9.4 OLLVM原理 285 9.4.1 LLVM原理介紹 285 9.4.2 OLLVM簡介 286 9.5 反混淆技術 291 9.5.1 反混淆技術研究概況 291 9.5.2 常用的反混淆技術 295 9.5.3 基於IAT的反混淆技術 296 9.5.4 控制流平坦化反混淆技術 300 思考題 306 第10章 基於二進位碼的漏洞挖掘技術 307 10.1 漏洞概述 307 10.1.1 bug與漏洞 307 10.1.2 漏洞挖掘、漏洞分析、漏洞利用 307 10.2 漏洞挖掘技術概述 308 10.2.1 人工分析技術 309 10.2.2 Fuzzing 309 10.2.3 補丁比對技術 310 10.2.4 靜態分析技術 311 10.2.5 動態分析技術 313 10.2.6 基於機器學習方法 315 10.3 漏洞分析常用工具 316 10.3.1 靜態分析工具CodeSonar 316 10.3.2 用於滲透測試的幾種漏洞掃描工具 317 10.3.3 Fuzzing工具 318 10.4 可感知應用的進化模糊測試工具—— VUzzer 320 10.4.1 基礎知識 320 10.4.2 問題分析 321 10.4.3 方法分析 325 10.4.4 設計與實現 328 10.5 固件漏洞分析及實例 332 10.5.1 典型固件漏洞分析方法梳理 333 10.5.2 固件漏洞分析實例 336 思考題 342 第11章 協議逆向分析技術 343 11.1 協議分析概述 343 11.1.1 網路通訊協定分析的發展歷程 343 11.1.2 協議分析技術的分類 344 11.2 協議逆向分析基礎 345 11.2.1 協定逆向分析模型 345 11.2.2 消息格式提取方法 348 11.2.3 狀態機推斷算法 354 11.3 網路通訊協定分析技術 356 11.3.1 基於網路流量的協定逆向分析 356 11.3.2 基於程式分析的協定逆向分析 358 11.4 工業控制協議分析 359 11.4.1 工業控制協議安全現狀 359 11.4.2 工業控制協議安全分析 360 11.4.3 工業控制協議的特點 362 11.4.4 工業控制協定規範解析 363 11.4.5 動態污點分析技術在協定逆向分析中的應用 363 11.4.6 基本塊細微性工業控制協議欄位邊界逆向分析算法 365 思考題 369 附錄A 一個簡單程式的逆向分析 370 A.1 觀察程式的行為 370 A.2 靜態分析 371 A.2.1 尋找main函數 372 A.2.2 main()函數分析 377 A.2.3 dword_5F3088分析 381 A.2.4 a1分析 383 A.2.5 獲取Flag 383 A.2.6 編寫腳本 384 A.2.7 解決反編譯失敗問題 385 A.3 動態分析 388 A.3.1 選擇調試器 389 A.3.2 跟蹤程式 389 A.4 後記 391 思考題 393 附錄B 惡意程式逆向分析示例 394 B.1 靜態分析 394 B.1.1 查殼 394 B.1.2 查看導入函數 395 B.1.3 查看關鍵字串 395 B.1.4 查找程式入口 396 B.2 動態分析 396 B.2.1 觀察程式列為 396 B.2.2 分析程式列為 397 B.3 程式修復 405 思考題 408 附錄C Android程式逆向分析示例 409 C.1 靜態分析 409 C.1.1 定位程式入口 409 C.1.2 定位錯誤提示 410 C.1.3 函數securityCheck分析 411 C.2 動態分析 412 C.2.1 “.so”檔的載入過程 413 C.2.2 init_array分析 413 C.2.3 JNI_OnLoad分析 415 C.2.4 在JNI_OnLoad中設置中斷點 418 C.2.5 在securityCheck中設置中斷點 424 思考題 424
魯宏偉,博士,華中科技大學網路空間安全學院教授,博士生導師。校工會第五屆經費審查委員會委員,第五屆提案工作委員會委員;擔任網路空間安全學院教學指導委員會主任、學術委員會委員;網路空間安全學院工會主席。2018年獲得校工會華中科技大學“師德先進個人”稱號,入選2019年華中科技大學“華中卓學學者”。主要從事網路安全、網路應用與多媒體技術等領域的研究,在國內外學術刊物和會議上發表論文50餘篇。曾三次赴美國矽谷公司進行多媒體應用軟件合作開發;2005年起,主要從事互聯網協議分析軟件的開發,其中包括廣東省公安廳金盾工程項目;2009年起,主要與南京某單位合作開展互聯網協定分析軟件的開發。承擔了物聯網工程和資訊安全相關專業的本科和研究生教學工作。近年來出版教材多部,包括“多媒體電腦技術”(電子工業出版社)、“物聯網應用系統設計”(清華大學出版社)、“物聯網系統安全與應用”(電子工業出版社),其中“多媒體電腦技術”為國家“十一五”規劃教材。 陳凱,副教授,碩士生導師。擔任華中科技大學網路空間安全學院副院長,擔任湖北網路空間安全學會理事、本科教學工作組主任。致力人才培養,獨立承擔多門門本科課程和碩士研究生課程教學,發表多篇有一定影響力的教改論文,出版教材一部,主持多項校級和省級教改專案。潛心做科研,從事電腦網路應用及安全、物聯網安全、工業互聯網安全研究,發表多篇高水準文章,主持和參與多項科研專案,申請專利和軟著多項。 鄧賢君,華中科技大學網路空間安全學院教授,博士生導師,華中科技大學網路空間安全學院院長助理,分管學院學術交流和國際化工作,IEEETCSC“優秀青年科學家”、湖北省“百人計畫”學者、武漢市“武漢英才”、湖南省芙蓉學者,擔任IEEE加拿大大西洋區通信學會副主席、湖北省網路空間安全學會學術委員會主任、“華中科技大學-湖北楚天智慧交通股份有限公司人工智慧與智慧交通技術中心”技術中心執行主任、華中科技大學網路空間安全學院“人機物系統與安全”科研團隊負責人,擔任多個國際學術會議的程式委員會主席和指導委員會主席。主要從事物聯網安全、物聯網可靠性等方面的研究工作。
客服公告
热门活动
订阅电子报