逆向工程權(quán)威指南是一本逆向工程的經(jīng)典指南,由烏克蘭安全技術(shù)專家丹尼斯Dennis Yurichev編著,分為上冊和下冊。本書專注于軟件逆向工程,即研究編譯后的可執(zhí)行程序,是寫給初學(xué)者的一本經(jīng)典指南。全書共分為12個(gè)部分,共102章,涉及軟件逆向工程相關(guān)的眾多技術(shù)話題,堪稱是逆向工程技術(shù)百科全書。逆向工程權(quán)威指南全書講解詳細(xì),附帶豐富的代碼示例,還給出了很多習(xí)題來幫助讀者鞏固所學(xué)的知識,附錄部分給出了習(xí)題的解答,非常適合對逆向工程技術(shù)、操作系統(tǒng)底層技術(shù)、程序分析技術(shù)感興趣的讀者閱讀,也適合專業(yè)的程序開發(fā)人員參考。
內(nèi)容介紹
逆向工程是一種分析目標(biāo)系統(tǒng)的過程,旨在于識別系統(tǒng)的各組件以及組件間關(guān)系,以便于通過其它形式、或在較高的抽象層次上,重建系統(tǒng)的表征?!赌嫦蚬こ虣?quán)威指南》專注于軟件的逆向工程,是寫給初學(xué)者的一本經(jīng)典指南。全書共分為12個(gè)部分,共102章,涉及X86/X64、ARM/ARM-64、MIPS、Java/JVM等重要話題,詳細(xì)解析了Oracle RDBMS、Itanium、軟件狗、LD_PRELOAD、棧溢出、ELF、Win32 PE文件格式、x86-64(第、critical sections、syscalls、線程本地存儲TLS、地址無關(guān)代碼(PIC)、以配置文件為導(dǎo)向的優(yōu)化、C++ STL、OpenMP、SHE等眾多技術(shù)話題,堪稱是逆向工程技術(shù)百科全書。
章節(jié)目錄
第一部分 指令講解 第1章 CPU簡介 1.1 指令集架構(gòu) 第2章 最簡函數(shù) 2.1 x86 2.2 ARM 2.3 MIPS 第3章 Hello,world! 3.1 x86 3.2 x86-64 3.3 GCC的其他特性 3.4 ARM 3.5 MIPS 3.6 總結(jié) 3.7 練習(xí)題 第4章 函數(shù)序言和函數(shù)尾聲 遞歸調(diào)用 第5章 棧 5.1 為什么棧會逆增長 5.2 棧的用途 5.3 典型的棧的內(nèi)存存儲格式 5.4 棧的噪音 5.5 練習(xí)題 第6章 printf()函數(shù)與參數(shù)傳遞 6.1 x86 6.2 ARM 6.3 MIPS 6.4 總結(jié) 6.5 其他 第7章 scanf() 7.1 演示案例 7.2 全局變量 7.3 scanf()函數(shù)的狀態(tài)監(jiān)測 7.4 練習(xí)題 第8章 參數(shù)獲取 8.1 x86 8.2 x64 8.3 ARM 8.4 MIPS 第9章 返回值 9.1 void型函數(shù)的返回值 9.2 函數(shù)返回值不被調(diào)用的情況 9.3 返回值為結(jié)構(gòu)體型數(shù)據(jù) 第10章 指針 10.1 全局變量 10.2 局部變量 10.3 總結(jié) 第11章 GOTO語句 11.1 無用代碼Dead Code 11.2 練習(xí)題 第12章 條件轉(zhuǎn)移指令 12.1 數(shù)值比較 12.2 計(jì)算絕對值 12.3 條件運(yùn)算符 12.4 比較最大值和最小值 12.5 總結(jié) 12.6 練習(xí)題 第13章 switch()/case/default 13.1 case陳述式較少的情況 13.2 case陳述式較多的情況 13.3 case從句多對一的情況 13.4 Fall-through 13.5 練習(xí)題 第14章 循環(huán) 14.1 舉例說明 14.2 內(nèi)存塊復(fù)制 14.3 總結(jié) 14.4 練習(xí)題 第15章 C語言字符串的函數(shù) 15.1 strlen() 15.2 練習(xí)題 第16章 數(shù)學(xué)計(jì)算指令的替換 16.1 乘法 16.2 除法運(yùn)算 16.3 練習(xí)題 第17章 FPU 17.1 IEEE 754 17.2 x86 17.3 ARM、MIPD、x86/x64 SIMD 17.4 C/C++ 17.5 舉例說明 17.6 利用參數(shù)傳遞浮點(diǎn)型數(shù)據(jù) 17.7 比較說明 17.8 棧、計(jì)算器及逆波蘭表示法 17.9 x64 17.10 練習(xí)題 第18章 數(shù)組 18.1 簡介 18.2 緩沖區(qū)溢出 18.3 緩沖區(qū)溢出的保護(hù)方法 18.4 其他 18.5 字符串指針 18.6 多維數(shù)組 18.7 二維字符串?dāng)?shù)組的封裝格式 18.8 本章小結(jié) 18.9 練習(xí)題 第19章 位操作 19.1 特定位 19.2 設(shè)置/清除特定位 19.3 位移 19.4 在FPU上設(shè)置特定位 19.5 位校驗(yàn) 19.6 本章小結(jié) 19.7 練習(xí)題 第20章 線性同余法與偽隨機(jī)函數(shù) 20.1 x86 20.2 x64 20.3 32位ARM 20.4 MIPS 20.5 本例的線程安全改進(jìn)版 第21章 結(jié)構(gòu)體 21.1 MSVC: systemtime 21.2 用malloc()分配結(jié)構(gòu)體的空間 21.3 UNIX: struct tm 21.4 結(jié)構(gòu)體的字段封裝 21.5 結(jié)構(gòu)體的嵌套 21.6 結(jié)構(gòu)體中的位操作 21.7 練習(xí)題 第22章 共用體(union)類型 22.1 偽隨機(jī)數(shù)生成程序 22.2 計(jì)算機(jī)器精度 22.3 快速平方根計(jì)算 第23章 函數(shù)指針 23.1 MSVC 23.2 GCC 第24章 32位系統(tǒng)處理64位數(shù)據(jù) 24.1 64位返回值 24.2 參數(shù)傳遞及加減運(yùn)算 24.3 乘法和除法運(yùn)算 24.4 右移 24.5 32位數(shù)據(jù)轉(zhuǎn)換為64位數(shù)據(jù) 第25章 SIMD 25.1 矢量化 25.2 SIMD實(shí)現(xiàn)strlen() 第26章 64位平臺 26.1 x86-64 26.2 ARM 26.3 浮點(diǎn)數(shù) 第27章 SIMD與浮點(diǎn)數(shù)的并行運(yùn)算 27.1 樣板程序 27.2 傳遞浮點(diǎn)型參數(shù) 27.3 浮點(diǎn)數(shù)之間的比較 27.4 機(jī)器精度 27.5 偽隨機(jī)數(shù)生成程序(續(xù)) 27.6 總結(jié) 第28章 ARM指令詳解 28.1 立即數(shù)標(biāo)識(#) 28.2 變址尋址 28.3 常量賦值 28.4 重定位 第29章 MIPS的特點(diǎn) 29.1 加載常量 29.2 閱讀推薦 第二部分 硬件基礎(chǔ) 第30章 有符號數(shù)的表示方法 第31章 字節(jié)序 31.1 大端字節(jié)序 31.2 小端字節(jié)序 31.3 舉例說明 31.4 雙模二元數(shù)據(jù)格式 31.5 轉(zhuǎn)換字節(jié)序 第32章 內(nèi)存布局 第33章 CPU 33.1 分支預(yù)測 33.2 數(shù)據(jù)相關(guān)性 第34章 哈希函數(shù) 單向函數(shù)與不可逆算法 第三部分 一些高級的例子 第35章 溫度轉(zhuǎn)換 35.1 整數(shù)值 35.2 浮點(diǎn)數(shù)運(yùn)算 第36章 斐波拉契數(shù)列 36.1 例子1 36.2 例子2 36.3 總結(jié) 第37章 CRC32計(jì)算的例子 第38章 網(wǎng)絡(luò)地址計(jì)算實(shí)例 38.1 計(jì)算網(wǎng)絡(luò)地址函數(shù)calc_network_address() 38.2 函數(shù)form_IP() 38.3 函數(shù)print_as_IP() 38.4 form_netmask()函數(shù)和set_bit()函數(shù) 38.5 總結(jié) 第39章 循環(huán):幾個(gè)迭代 39.1 三個(gè)迭代器 39.2 兩個(gè)迭代器 39.3 Intel C++ 2011實(shí)例 第40章 達(dá)夫裝置 第41章 除以9 41.1 x86 41.2 ARM 41.3 MIPS 41.4 它是如何工作的 41.5 計(jì)算除數(shù) 41.6 練習(xí)題 第42章 字符串轉(zhuǎn)換成數(shù)字,函數(shù)atoi() 42.1 例1 42.2 例2 42.3 練習(xí) 第43章 內(nèi)聯(lián)函數(shù) 43.1 字符串和內(nèi)存操作函數(shù) 第44章 C99標(biāo)準(zhǔn)的受限指針 第45章 打造無分支的abs()函數(shù) 45.1 x64下的GCC 4.9.1優(yōu)化 45.2 ARM64下的GCC 4.9優(yōu)化 第46章 變長參數(shù)函數(shù) 46.1 計(jì)算算術(shù)平均值 46.2 vprintf()函數(shù)例子 第47章 字符串剪切 47.1 x64下的MSVC 2013優(yōu)化 47.2 x64下采用編譯器GCC 4.9.1進(jìn)行非優(yōu)化操作 47.3 x64下的GCC 4.9.1優(yōu)化 47.4 ARM64:非優(yōu)化的GCC(Linaro)4.9 47.5 ARM64:優(yōu)化GCC(Linaro)4.9 47.6 ARM: Keil 6/2013優(yōu)化(ARM模式) 47.7 ARM:Keil 6/2013(Thumb模式)優(yōu)化 47.8 MIPS 第48章 toupper()函數(shù) 48.1 x64 48.2 ARM 48.3 總結(jié) 第49章 不正確的反匯編代碼 49.1 x86環(huán)境下的從一開始錯(cuò)誤的反匯編 49.2 隨機(jī)噪音,怎么看起來像反匯編指令? 第50章 混淆技術(shù) 50.1 字符串變換 50.2 可執(zhí)行代碼 50.3 虛擬機(jī)以及偽代碼 50.4 一些其他的事情 50.5 練習(xí)題 第51章 C++ 51.1 類 51.2 ostream輸出流 51.3 引用 51.4 STL/標(biāo)準(zhǔn)模板庫(Standard Template Library) 第52章 數(shù)組與負(fù)數(shù)索引 第53章 16位的Windows程序 53.1 例子#1 53.2 例子#2 53.3 例子#3 53.4 例子#4 53.5 例子#5 53.6 例子#6 第四部分 Java 第54章 Java 54.1 簡介 54.2 返回一個(gè)值 54.3 簡單的計(jì)算函數(shù) 54.4 JVM的內(nèi)存模型 54.5 簡單的函數(shù)調(diào)用 54.6 調(diào)用函數(shù)beep()(蜂鳴器) 54.7 線性同余隨機(jī)數(shù)產(chǎn)生器(PRNG) 54.8 條件轉(zhuǎn)移 54.9 傳遞參數(shù) 54.10 位操作 54.11 循環(huán) 54.12 switch()語句 54.13 數(shù)組 54.14 字符串 54.15 異常處理 54.16 類 54.17 簡單的補(bǔ)丁 54.18 總結(jié) 第五部分 在代碼中發(fā)現(xiàn)重要而有趣的內(nèi)容 第55章 編譯器產(chǎn)生的文件特征 55.1 Microsoft Visual C++ 55.2 GCC編譯器 55.3 Intel FORTRAN 55.4 Watcom以及OpenWatcom 55.5 Borland編譯器 55.6 其他的已知DLL文件 第56章 Win32環(huán)境下與外部通信 56.1 在Windows API中最經(jīng)常使用的函數(shù) 56.2 tracer:解析指定模塊的所有函數(shù) 第57章 字符串 57.1 字符串 57.2 錯(cuò)誤/調(diào)試信息 57.3 可疑的魔數(shù)字符串 第58章 調(diào)用宏assert()(中文稱為斷言) 第59章 常數(shù) 59.1 魔數(shù) 59.2 尋找常數(shù) 第60章 檢索關(guān)鍵指令 第61章 可疑的代碼模型 61.1 XOR異或指令 61.2 手寫匯編代碼 第62章 魔數(shù)與程序調(diào)試 第63章 其他的事情 63.1 總則 63.2 C++ 63.3 部分二進(jìn)制文件的特征 63.4 內(nèi)存“快照”對比 第六部分 操作系統(tǒng)相關(guān) 第64章 參數(shù)的傳遞方法(調(diào)用規(guī)范) 64.1 cdecl [C Declaration的縮寫] 64.2 stdcall [Standard Call的縮寫] 64.3 fastcall 64.4 thiscall 64.5 64位下的x86 64.6 單/雙精度數(shù)型返回值 64.7 修改參數(shù) 64.8 指針型函數(shù)參數(shù) 第65章 線程本地存儲TLS 65.1 線性同余發(fā)生器(改) 第66章 系統(tǒng)調(diào)用(syscall-s) 66.1 Linux 66.2 Windows 第67章 Linux 67.1 位置無關(guān)的代碼 67.2 在Linux下的LD_PRELOAD 第68章 Windows NT 68.1 CRT (Win32) 68.2 Win32 PE文件 68.3 Windows SEH 68.4 Windows NT:臨界區(qū)段 第七部分 常用工具 第69章 反匯編工具 69.1 IDA 第70章 調(diào)試工具 70.1 tracer 70.2 OllyDbg 70.3 GDB 第71章 系統(tǒng)調(diào)用的跟蹤工具 71.1 strace/dtruss 第72章 反編譯工具 第73章 其他工具 第八部分 更多范例 第74章 修改任務(wù)管理器(Vista) 74.1 使用LEA指令賦值 第75章 修改彩球游戲 第76章 掃雷(Windows XP) 76.1 練習(xí)題 第77章 人工反編譯與Z3 SMT求解法 77.1 人工反編譯 77.2 Z3 SMT求解法 第78章 加密狗 78.1 例1:PowerPC平臺的MacOS Classic程序 78.2 例2: SCO OpenServer 78.3 例3: MS-DOS 第79章 “QR9”:魔方態(tài)加密模型 第80章 SAP 80.1 關(guān)閉客戶端的網(wǎng)絡(luò)數(shù)據(jù)包壓縮功能 80.2 SAP 6.0的密碼驗(yàn)證函數(shù) 第81章 Oracle RDBMS 81.1 V$VERSION表 81.2 X$KSMLRU表 81.3 V$TIMER表 第82章 匯編指令與屏顯字符 82.1 EICAR 第83章 實(shí)例演示 83.1 10PRINT CHR$(205.5+RND(1));:GOTO 10 83.2 曼德博集合 第九部分 文件分析 第84章 基于XOR的文件加密 84.1 Norton Guide:單字節(jié)XOR加密實(shí)例 84.2 4字節(jié)XOR加密實(shí)例 84.3 練習(xí)題 第85章 Millenium游戲的存檔文件 第86章 Oracle的.SYM文件 第87章 Oracle的.MSDB文件 總結(jié) 第十部分 其他 第88章 npad 第89章 修改可執(zhí)行文件 89.1 文本字符串 89.2 x86指令 第90章 編譯器內(nèi)部函數(shù) 第91章 編譯器的智能短板 第92章 OpenMP 92.1 MSVC 92.2 GCC 第93章 安騰指令 第94章 8086的尋址方式 第95章 基本塊重排 95.1 PGO的優(yōu)化方式 第十一部分 推薦閱讀 第96章 參考書籍 96.1 Windows 96.2 C/C++ 96.3 x86/x86-64 96.4 ARM 96.5 加密學(xué) 第97章 博客 97.1 Windows平臺 第98章 其他內(nèi)容 第十二部分 練習(xí)題 第99章 初等難度練習(xí)題 99.1 練習(xí)題1.4 第100章 中等難度練習(xí)題 100.1 練習(xí)題2.1 100.2 練習(xí)題2.4 100.3 練習(xí)題2.6 100.4 練習(xí)題2.13 100.5 練習(xí)題2.14 100.6 練習(xí)題2.15 100.7 練習(xí)題2.16 100.8 練習(xí)題2.17 100.9 練習(xí)題2.18 100.10 練習(xí)題2.19 100.11 練習(xí)題2.20 第101章 高難度練習(xí)題 101.1 練習(xí)題3.2 101.2 練習(xí)題3.3 101.3 練習(xí)題3.4 101.4 練習(xí)題3.5 101.5 練習(xí)題3.6 101.6 練習(xí)題3.8 第102章 Crackme/Keygenme 附錄A x86 A.1 數(shù)據(jù)類型 A.2 通用寄存器 A.3 FPU寄存器 A.4 SIMD寄存器 A.5 FPU調(diào)試寄存器 A.6 指令 附錄B ARM B.1 術(shù)語 B.2 版本差異 B.3 32位ARM(AArch32) B.4 64位ARM(AArch64) B.5 指令 附錄C MIPS C.1 寄存器 C.2 指令 附錄D 部分GCC庫函數(shù) 附錄E 部分MSVC庫函數(shù) 附錄F 速查表 F.1 IDA F.2 OllyDbg F.3 MSVC選項(xiàng) F.4 GCC F.5 GDB 附錄G 練習(xí)題答案 G.1 各章練習(xí) G.2 初級練習(xí)題 G.3 中級練習(xí)題 G.4 高難度練習(xí)題 G.5 其他練習(xí)題 參考文獻(xiàn)
使用說明
1、下載并解壓,得出pdf文件2、如果打不開本文件,請務(wù)必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進(jìn)行閱讀
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 南方Plus電腦版 v11.8.027.22M / 簡體中文
- 得間免費(fèi)小說電腦版 v5.2.7.172.56M / 簡體中文
- 網(wǎng)易新聞電腦版 v112.697.63M / 簡體中文
- 吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
- 開源閱讀電腦版 v3.2517.96M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- linux常用命令大全 chm版1.48M / 簡體中文
- 本草綱目 5.34M / 簡體中文
- docker入門實(shí)戰(zhàn) pdf完整版1.38M / 簡體中文
- Scala程序設(shè)計(jì)第二版 pdf高清完整版15.83M / 簡體中文