BINARY HACKS︰黑客秘笈100選

BINARY HACKS︰黑客秘笈100選
定價:234
NT $ 204
 

內容簡介

100個業界最尖端的技巧和工具

本書的主題是關于底層程序的技術。說到底,就是和“原始的”計算機很接近的意思。軟件的世界是一個抽象化的積累,逐步演化到現在的階段。抽象化就是隱藏底層的復雜部分,相比較來說是可以提高生產性、安全性的方法,並給開發者提供程序化的手段。但是,如果認為完全不依賴底層系統級的技術來進行編程,這是行不通的。追求性能上的最佳,盡可能提高可信賴性,想解決偶爾發生的“謎一樣的錯誤”,在這些情況下,了解底層系統級的技術就顯得尤為重要。遺憾的是,抽象化並不能代替所有的。

本書的目的就是在上述的情況下,都能使用的大量Know-how的介紹。本書Binary Hack定義為“能驅動軟件的底層技術的Know—how”,從最基本的工具使用開始,安全編程,OS到提高處理器的處理性能的技術,在一個很寬泛的範圍內都進行了說明。
 

目錄

本書寄語
編寫說明
前言
第1章 介紹
1.Binary Hack入門
2.Binary Hack用語的基礎知識
3.用File查詢文件的類型
4.用0d轉儲二進制文件
第2章 目標文件Hack
5.ELF入門
6.靜態鏈接庫和共享庫
7.通過Idd查閱共享庫的依賴關系
8.用readelf表示ELF文件的信息
9.用objdump來轉儲目標文件
10.用objdump反匯編目標文件
11.用objcopy嵌入可執行文件的數據
12.用nm檢索包含在目標文件里的符號
13.用strings從二進制文件中提取字符串
14.用c++filt對c++的符號進行轉儲
15.用addr2line從地址中獲取文件名和行號
16.用strip刪除目標文件中的符號
17.用ar操作靜態鏈接庫
18.在鏈接C程序和C++程序時要注意的問題
19.注意鏈接時的標識符沖突
20.建立GNu,Linux的共享庫,為什麼要用PIC編譯
21.用statifier對動態鏈接的可執行文件進行模擬靜態鏈接
第3章 GNU編程Hack
22.GCC的GNU擴展入門
23.在GCc上使用內聯匯編(inline assembler)
24.活用在GCC的built in函數上的最優化
25.不使用glibc寫Hello World
26.使用TLS(Thread—Local Stotage)
27.根據系統不同用glibc來更換加載庫
28.由鏈接後的庫來變換程序的運行
29.控制對外公開庫的符號
30.在對外公開庫的符號上利用版本來控制動作
31.在main()的前面調用函數
32.GCC根據生成的代碼來生成運行時的代碼
33.允許/禁止運行放置在stack里的代碼
34.運行放置在heap上的代碼
35.建成PIE(位置獨立運行形式)
36.用C++書寫同步方法(synchronized method)
37.用C++生成singleton
38.理解g++的異常處理(thrOW篇)
39.理解g++的異常處理(sjLj篇)
40.理解g++的異常處理(DwARF2篇)
41.理解g++異常處理的成本
第4章 安全編程Hack
42.GCC安全編寫入門
43.用一ftrapv檢測整數溢出
44.用Mudflap檢測出緩沖區溢出
45.用一D—FORTIFY—SOuRcE檢測緩;中區溢出
46.用一fstack—protectm‘保護堆棧
47.將進行位遮蔽的常量無符號化
48.注意避免移位過大
49.注意64位環境中0和NULL的不同之處
50.POSIx的線程安全函數
51.安全編寫信號處理的方法
52.用sigwait將異步信號進行同步處理
53.用sigsafe將信號處理安全化
54.用Valgrind檢測出內存泄漏
55.使用Valgrind檢測出錯誤的內存訪問
56.用Helgrind檢測出多線程程序的bug
57.用fakeroot在相似的root權限中運行進程
第5章 運行時Hack
58.程序轉變成main()
59.怎樣調用系統調用
60.用LD-PRELOAD更換共享庫
61.用LD-PRELOAD來lap既存的函數
62.用dlopen進行運行時的動態鏈接
63.用c表示回溯
64.檢測運行中進程的路徑名
65.檢測正在加載的共享庫
66.掌握process和動態庫map memory
67.用libbfd取得符號的一覽表
68.運行c++語言時進行demangle
69.用ffcall動態決定簽名,讀出函數
70.用1ibdwaif取得調試信息
71.通過dumper簡化dump結構體的數據
72.自行加載目標文件
73.通過libunwind控制call chain
74.用GNU lightning Portable生成運行編碼
75.獲得stack的地址
76.用sigaltstack處理stack overflow
77.hook面向函數的enter/exit
78.從signal handler中改寫程序的context
79.取得程序計數器的值
80.通過自動改寫來改變程序的操作
81.使用sIGSEGV來確認地址的有效性
82.用strace來跟蹤系統調用
83.用1trace來跟蹤進程調用共享庫的函數
84.用Jockey來記錄、再生Linux的程序運行
85.用prelink將程序啟動高速化
86.通過livepatch在運行中的進程上發布補丁
第6章 profile調試器Hack
87.使用gprof檢索profile
88.使用sysprof搜索系統profile
89.使用optofile獲取詳細的系統profile
90.使用GDB操作運行進程
91.使用硬件調試的功能
92.c程序中break point的設定可以用斷點這個說法
第7章 其他的Hack
93.Boehm GC的結構
94.請注意處理器的存儲器順序
95.對Poitable foroutine Library(PcL)進行輕量的並行處理
96.計算cPu的clock數
97.浮點數的bit列表現
98.x86的浮點數運算命令的特殊性
99.用結果無限大和NaN化運算來生成信號
100.文獻介紹
網路書店 類別 折扣 價格
  1. 新書
    87
    $204