x86 匯編與逆向工程 軟件破解與防護的藝術

劉鋒 張秀華

  • 出版商: 機械工業
  • 出版日期: 2025-01-01
  • 定價: $594
  • 售價: 8.5$505
  • 語言: 簡體中文
  • 頁數: 256
  • ISBN: 7111767403
  • ISBN-13: 9787111767404
  • 相關分類: 資訊安全
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

相關主題

商品描述

本書以軟件反匯編技術為中心,首先帶領讀者從x86的基礎知識開始,學習如何讀取、編寫和構建賦能全球大量計算機的匯編語言;然後介紹如何使用IDA、Ghidra、Olly等業界最受歡迎的工具對應用程序進行逆向工程;接著介紹如何利用補丁和密鑰生成等技術進行軟件破解,所有這些都利用了匯編和逆向工程的知識;最後從防御的角度向讀者介紹相關技術,使他們能夠更好地保護自己的軟件。本書將引領好奇的讀者深入軟件破解和計算機的核心,探索其運作機制。深入學習x86計算機的運行原理,不僅對逆向工程和軟件破解來說至關重要,還能幫助讀者在代碼優化、效率提高、調試、編譯器設置調整以及芯片選擇等方面成為更出色的開發者。

作者簡介

斯蒂芬妮·多馬斯(Stephanie Domas),Canonical首席信息安全官(CISO)、英特爾(Intel)前首席安全技術戰略師。她在道德黑客、逆向工程和高級漏洞分析方面擁有逾十年經驗,作為一位知名行業顧問,她的服務對象涵蓋初創企業和行業巨頭。她目前致力於使Canonical成為開源界最受信賴的計算夥伴。在英特爾時,她負責全公司的安全技術戰略,推動英特爾在安全領域實力、競爭力和收益的不斷增長。她是一位充滿激情的教育家、戰略家、演說家、顧問和安全愛好者。

目錄大綱

譯者序
前言
關於作者
關於技術撰稿人
關於技術編輯
第1章 反編譯和架構
1.1 反編譯
1.1.1 反編譯何時有用
1.1.2 反編譯JIT語言
1.1.3 保護JIT語言
1.2 實驗:反編譯
1.2.1 技能
1.2.2 要點
1.3 架構
1.3.1 計算機架構
1.3.2 匯編
1.4 總結
第2章 x86匯編:數據、模式、寄存器和內存訪問
2.1 x86簡介
2.2 匯編語法
2.3 數據表示
2.3.1 數字系統的基數
2.3.2 位、字節和字
2.3.3 處理二進制數
2.4 寄存器
2.4.1 x86中的寄存器
2.4.2 寄存器的使用
2.5 內存訪問
2.6 尋址模式
2.6.1 絕對尋址
2.6.2 間接尋址
2.6.3 基址加偏移量尋址
2.6.4 索引尋址
2.6.5 基址–索引尋址
2.7 總結
第3章 x86 匯編:指令
3.1 x86指令格式
3.2 x86指令
3.2.1 mov
3.2.2 inc、dec
3.2.3 add、sub
3.2.4 mul
3.2.5 div
3.2.6 and、or、xor
3.2.7 not
3.2.8 shr、shl
3.2.9 sar、sal
3.2.10 nop
3.2.11 lea
3.3 整合所有內容
3.4 常見的x86指令錯誤
3.5 總結
第4章 構建和運行匯編程序
4.1 輸出
4.1.1 控制引腳
4.1.2 由操作系統處理與顯卡的交互
4.2 系統調用
4.2.1 sys_write
4.2.2 sys_exit
4.2.3 輸出字符串
4.3 匯編和鏈接
4.3.1 Linux中的匯編與鏈接
4.3.2 編寫匯編程序
4.4 objdump
4.5 實驗:Hello World
4.5.1 技能
4.5.2 要點
4.6 ASCII
4.6.1 識別ASCII字符串
4.6.2 ASCII操作技巧
4.7 總結
第5章 理解條件碼
5.1 條件碼
5.1.1 eflags
5.1.2 影響狀態標志的操作
5.2 總結
第6章 分析和調試匯編代碼
6.1 二進制分析
6.1.1 靜態分析與動態分析
6.1.2 調試
6.2 斷點
6.2.1 軟件斷點
6.2.2 硬件斷點
6.3 gdb
6.4 段錯誤
6.5 實驗:鯊魚模擬器3000
6.5.1 技能
6.5.2 要點
6.6 消除噪聲
6.7 總結
第7章 函數和控制流
7.1 控制流
7.1.1 指令指針
7.1.2 控制流指令
7.2 x86中的邏輯結構
7.2.1 if(...){...}
7.2.2 if(...){...}else{...}
7.2.3 do{...}while(...);
7.2.4 while(...){...}
7.2.5 for(...;...;...){...}
7.2.6 switch(...){...}
7.2.7 continue
7.2.8 break
7.2.9 &&
7.2.10 ||
7.3 棧
7.3.1 棧是如何工作的
7.3.2 x86棧
7.4 函數調用與棧幀
7.4.1 x86中的函數
7.4.2 棧分析
7.4.3 調用約定
7.4.4 cdecl
7.4.5 棧幀
7.4.6 宏觀程序
7.4.7 需要記住的事情
7.5 總結
第8章 編譯器和優化器
8.1 尋找目標代碼入口點
8.2 編譯器
8.2.1 優化
8.2.2 剝離
8.2.3 鏈接
8.3 總結
第9章 逆向工程:工具和策略
9.1 實驗:RE Bingo
9.1.1 技能
9.1.2 要點
9.2 基礎偵察
9.2.1 objdump
9.2.2 ltrace和strace
9.2.3 strings
9.2.4 Dependency Walker
9.3 逆向工程的策略
9.3.1 尋找感興趣的區域
9.3.2 叠代注釋代碼
9.4 總結
第10章 破解:工具和策略
10.1 密鑰檢查器
10.1.1 不好的方法
10.1.2 合理的方法
10.1.3 更好的方法
10.1.4 最佳方法
10.1.5 其他的建議
10.2 密鑰生成器
10.2.1 為什麽要創建密鑰生成器
10.2.2 密鑰生成的原理
10.2.3 破解各種類型的密鑰檢查
10.2.4 對抗密鑰生成器
10.3 實驗:密鑰生成器
10.3.1 技能
10.3.2 要點
10.4 Procmon
10.4.1 示例:Notepad.exe
10.4.2 怎樣用Procmon輔助逆向工程和破解
10.5 Resource Hacker
10.5.1 示例
10.5.2 小實驗:Windows計算器
10.6 打補丁
10.6.1 打補丁與密鑰生成
10.6.2 在哪里打補丁
10.6.3 nop指令
10.7 其他調試器
10.7.1 OllyDbg
10.7.2 Immunity
10.7.3 x86dbg
10.7.4 WinDbg
10.8 使用Immunity調試工具進行調試
10.8.1 Immunity:匯編代碼
10.8.2 Immunity:模塊
10.8.3 Immunity:字符串
10.8.4 Immunity:運行程序
10.8.5 Immunity:異常
10.8.6 Immunity:重寫程序
10.9 實驗:使用Immunity進行破解
10.9.1 技能
10.9.2 要點
10.10 總結
第11章 打補丁和高級工具
11.1 在010編輯器中打補丁
11.2 CodeFusion補丁
11.3 Cheat Engine
11.3.1 Cheat Eng