商品簡介
本書是一本涵蓋x86、x64 和ARM 操作系統的逆向工程類圖書,由淺入深地講解了包括Windows內核模式代碼的惡意軟件和驅動程序、虛擬機保護技術等內容。作者通過大量真實案例和示例,提供了系統化的解決方案。
本書適合所有程序員和想要開始學習逆向工程的讀者閱讀。
作者簡介
Bruce Dang,微軟高級安全開發工程經理,專注于Windows內核和逆向工程領域。負責待發布產品的安全技術,之前負責處理報告給微軟的安全漏洞。曾在RSA、BlackHat Vegas、BlackHat Tokyo、Chaos Computer Club、REcon和許多其他行業會議上發言。
Alexandre Gazet,Quarkslab高級安全研究員,專注于逆向工程和軟件保護。Alexandre曾在多個會議上發言,包括HITB Kuala Lumpur(2009)和REcon Montreal(2010及2011)。
Elias Bachaalany,微軟軟件安全工程師。在過去的14年中,他曾做過程序員、逆向工程師、自由技術寫作者,偶爾也進行逆向工程的培訓工作。Elias曾在REcon Montreal上有過兩次發言(2012以及2013)。
Sébastien Josse 法國國防部武器裝備總局的一名安全研究員。作為教師、研究員和顧問,他在民用及國防部門的信息系統安全領域深耕了十年有余。曾在知名期刊和多個會議上發表論文,包括ECRYPT(2004)、EICAR(2006、2008、2011)、AVAR(2007)以及HICSS(2012、2013以及2014)。
單業,計算機專業碩士,軟件工程師,曾供職于多家軟件公司從事軟件開發工作,現居于上海。
名人推薦
Bruce Dang,微軟高級安全開發工程經理,專注于Windows內核和逆向工程領域。負責待發布產品的安全技術,之前負責處理報告給微軟的安全漏洞。曾在RSA、BlackHat Vegas、BlackHat Tokyo、Chaos Computer Club、REcon和許多其他行業會議上發言。
Alexandre Gazet,Quarkslab高級安全研究員,專注于逆向工程和軟件保護。Alexandre曾在多個會議上發言,包括HITB Kuala Lumpur(2009)和REcon Montreal(2010及2011)。
Elias Bachaalany,微軟軟件安全工程師。在過去的14年中,他曾做過程序員、逆向工程師、自由技術寫作者,偶爾也進行逆向工程的培訓工作。Elias曾在REcon Montreal上有過兩次發言(2012以及2013)。
Sébastien Josse 法國國防部武器裝備總局的一名安全研究員。作為教師、研究員和顧問,他在民用及國防部門的信息系統安全領域深耕了十年有余。曾在知名期刊和多個會議上發表論文,包括ECRYPT(2004)、EICAR(2006、2008、2011)、AVAR(2007)以及HICSS(2012、2013以及2014)。
單業,計算機專業碩士,軟件工程師,曾供職于多家軟件公司從事軟件開發工作,現居于上海。
目次
第1 章 x86 與x64...........................................1
1.1 寄存器組與數據類型.................................1
1.2 指令集........................................................3
1.2.1 語法................................................3
1.2.2 數據移動........................................4
1.3 練習...........................................................9
1.3.1 算術運算........................................9
1.3.2 棧操作與函數調用.......................11
1.4 練習.........................................................14
1.5 系統機制..................................................21
1.5.1 地址轉換......................................21
1.5.2 中斷與異常..................................23
1.6 綜合練習..................................................23
1.7 練習.........................................................29
1.8 x64 ...........................................................30
1.8.1 寄存器組與數據類型...................30
1.8.2 數據移動......................................31
1.8.3 規范地址......................................31
1.8.4 函數調用......................................31
1.9 練習.........................................................32
第2 章 ARM ...................................................33
2.1 基本特性..................................................34
2.2 數據類型與寄存器..................................35
2.3 系統級控制與設置..................................37
2.4 指令集介紹..............................................38
2.5 數據加載與存儲......................................39
2.5.1 LDR 與STR...................................39
2.5.2 LDR 的其他用途...........................42
2.5.3 LDM 與STM...................................43
2.5.4 PUSH 與POP.................................46
2.6 函數與函數調用......................................48
2.7 算術運算..................................................50
2.8 分支跳轉與條件執行..............................51
2.8.1 Thumb 狀態..................................54
2.8.2 switch-case..............................55
2.9 雜項.........................................................56
2.9.1 JIT 與SMC ..................................56
2.9.2 同步原語......................................57
2.9.3 系統服務與機制...........................57
2.9.4 指令..............................................59
2.10 綜合練習................................................59
2.11 下一步...................................................65
2.12 練習.......................................................65
第3 章 Windows 內核..................................73
3.1 Windows 基礎..........................................73
3.1.1 內存布局......................................73
3.1.2 處理器初始化..............................74
3.1.3 系統調用......................................77
3.1.4 中斷請求級..................................88
3.1.5 內存池..........................................89
3.1.6 MDL.............................................90
3.1.7 進程與線程..................................90
3.1.8 執行上下文..................................92
3.1.9 內核同步原語..............................93
3.2 列表.........................................................94
3.2.1 實現細節......................................94
3.2.2 綜合練習....................................100
3.2.3 練習............................................104
3.3 異步與亂序執行....................................108
3.3.1 系統線程....................................108
3.3.2 work item ...................................109
3.3.3 APC............................................111
3.3.4 DPC............................................114
3.3.5 定時器........................................118
3.3.6 進程與線程回調........................120
3.3.7 完成例程....................................120
3.4 I/O 請求包.............................................122
3.5 驅動程序結構........................................123
3.5.1 入口點........................................124
3.5.2 驅動程序與設備對象.................125
3.5.3 IRP 處理.....................................126
3.5.4 用戶?內核通信常用機制...........127
3.5.5 系統機制雜項............................128
3.6 綜合練習.........................