|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
* t" d. }4 F2 W1 J, |8 ^: o
( V3 P( g% O0 Q3 [# I# D: |书名:《IDA Pro权威指南》(第2版)
2 Z6 Z* x. }* b3 _& }* N( N( {作者:Chris Eagle
6 G3 {1 i: K: k7 {! S! ^/ C, ?译者:石华耀,段桂菊5 E+ U( A1 @! j7 _
出版社:人民邮电出版社
2 i9 m# S, S6 y* d4 P; v4 z出版年:2012年2月1日(第2版)
8 e" _+ P8 Q) A. n) h+ ^定价:89.00元% [% m& p) V) r
装帧:平装1 d5 ?5 w4 l5 y% C1 F8 `% D
ISBN:9787115273680
. o- i( P4 e0 k& |1 N" h
+ [3 f* D. L* d5 u0 n购买链接:
6 a) o: |' A/ }3 \: ^* O* J7 L5 R; c, ~, Q$ R* S: \' R
% ?! L6 R0 ]0 E亚马逊(Kindle)-> 传送门2 [& n y( `& E& K: j$ }/ O+ k2 N3 l
# f4 @8 W: U( [' y# H7 |: l当当网 -> 传送门
' B: Q$ j/ o; s* f- K: @% v2 q- |5 q4 {! K/ B5 [9 a
京东 -> 传送门4 H" H+ m' p+ A4 F% K
) k2 A9 `& i! y& G e: S( m1 Z5 w6 X7 X' y天猫 -> 传送门
( C( ]9 w9 O4 m: x& S% @& Z9 y G9 B: R* r Y+ Q
; r, E$ R8 p3 ]4 C5 b/ Q: o9 C
内容简介:
0 ?1 {" }0 ]: z W! L. s' t- J& V$ A2 r5 N `8 k/ ^
5 K* O4 j3 k( S8 |) ?3 f1 I《IDA Pro权威指南》(第2版)共分为六部分,首先介绍了反汇编与逆向工程的基本信息和 IDA Pro 的背景知识,接着讨论了 IDA Pro 的基本用法和高级用法,然后讲解了其高扩展性及其在安全领域的实际应用,最后介绍了 IDA 的内置调试器(包括 Bochs 调试器),一方面让用户对 IDA Pro 有全面深入的了解,另一方面让读者掌握 IDA Pro 在现实中的应用。相比上一版,这一版以 IDA6.0 为基础,介绍了它的新的、基于 Qt 的图形用户界面,以及 IDAPython 插件。《IDA Pro权威指南》(第2版)适合 IT 领域的所有安全工作者阅读。
7 P3 ]* b. R, D" }3 T; G" r6 z* x8 J0 ]* ?2 J
1 [; d O& _. D; _3 f. l
目录:. g0 [- `! k4 M: h
) d2 O# Q% V3 q$ O O" T7 s1 Y
7 W' D: T0 Y* \* |
第一部分 IDA简介
- M8 W1 [( \3 ]+ P, @. R5 ~* q
, P0 r, h9 b, B第1章 反汇编简介
! u$ q( @ W% I0 r# W, U* Q4 Z9 m
1.1反汇编理论
4 h( D/ _( y% k- C2 |* @1.2何为反汇编
. g& J& ~6 r4 z% ]6 T1.3为何反汇编. |. K1 H8 _- k0 \7 P
1.3.1分析恶意软件
& @1 V. y" a9 u6 o3 o1.3.2漏洞分析2 H, C2 }+ m' B" @4 k3 v/ W
1.3.3软件互操作性% ~5 T: A+ W4 }' Z" ?4 b' A
1.3.4编译器验证
) z( G6 R6 V9 Z) {3 [1.3.5显示调试信息) O1 _" O1 }) R- N4 t
1.4如何反汇编$ _& i! C2 N/ v
1.4.1基本的反汇编算法
( e( Z- G2 y3 g5 V' @1.4.2线性扫描反汇编
( L( m l' e* n5 I( M( \7 v1.4.3递归下降反汇编
0 _& X' z. ~# d3 F3 p1.5小结# y; L/ A7 C/ i% ^* i
! w- g8 W0 U5 m' S, u# [1 I1 j
第2章 逆向与反汇编工具
" B9 t7 Q, ?, H1 E# ?7 r0 Z) n: j; S4 r& ~
2.1分类工具
3 A9 @1 U4 q8 R2.1.1file
y. d, Z, R: o& M1 t2.1.2PE Tools
& _) q) z, t# k( v' i0 D$ C5 f2.1.3PEiD
9 G: f; ~3 \4 m3 r2.2摘要工具* t1 V3 Z. l! h$ ^0 Q6 B
2.2.1nm3 S0 z) R( `2 U" S! P9 ~
2.2.2ldd
4 i6 k" G0 C8 @& _2.2.3objdump
/ _. r2 n! Q# u, F/ a5 W I- Q2.2.4otool
0 v _5 j7 N( O8 \2.2.5dumpbin
5 K1 x( d# ?* u) }5 S5 d0 b2.2.6c++filt$ G# v% T$ C1 `- M- C! \8 `) ?1 r
2.3深度检测工具
' s- Y X! C3 C, x2.3.1strings
) y8 a- `1 ]+ {$ I) n; G& ?+ H2.3.2反汇编器
& e7 D. d* _4 B/ L5 E+ X2.4小结3 O# e0 x- h! I: ]7 r
$ w! q* V9 Q2 k* \* T
第3章 IDA Pro背景知识6 `; w1 M1 C8 K
0 ~1 B; c/ h+ n5 ^! c4 Z7 ?3.1Hex-Rays公司的反盗版策略% v7 u) t5 P3 z3 d. E- e" ^
3.2获取IDA Pro* T6 O2 k Y9 Y
3.2.1IDA版本2 \2 k* Y1 g4 Z6 H. f5 k J
3.2.2IDA许可证
' x! b- j# o: S4 T5 s8 C1 T8 I3.2.3购买IDA
% }1 }3 M8 @+ b! e3.2.4升级IDA
5 z2 }+ R$ i, ~, K; L3.3IDA支持资源
5 J! H3 F% ?0 U: F7 Q+ d: i3.4安装IDA; T% j a3 X7 b+ D
3.4.1Windows安装
, L3 e8 L5 f" F8 w1 a1 \" B. p# X3.4.2OS X和Linux安装- u0 F( C5 K' J0 S2 D& u7 [& Y6 L
3.4.3IDA与SELinux/ J$ |0 z+ q: I9 m7 N) X
3.4.432位IDA与64位IDA, a1 S( o1 M$ F2 Y
3.4.5IDA目录的结构
" [) Y4 b+ @4 H8 A) v: \3.5IDA用户界面: }5 `& Z# q6 Y) _7 x1 l/ Z4 D
3.6小结
" N6 t3 l3 g. l8 {. m; z
: j/ w2 d- A* S7 t9 ` o) U. D7 @第二部分 IDA基本用法
4 m! D* p/ I1 l7 _
# r% {& |. O9 Z( d0 S第4章 IDA入门7 [1 g5 N4 f' d; P8 C& H7 K
2 k+ f8 _; M( H% R9 i! b. {0 k4.1启动IDA
. ?+ [- H4 `5 Q4 w6 V2 k3 x# i4.1.1IDA文件加载( y: D8 g8 C0 p: `; C
4.1.2使用二进制文件加载器- O4 e5 W1 x8 O6 L( {# D
4.2IDA数据库文件
! Z" F4 V1 @1 z4.2.1创建IDA数据库$ {! k* X0 w2 i7 \
4.2.2关闭IDA数据库
$ Z' h0 h+ G7 V* j4.2.3重新打开数据库: M D6 L: E+ B2 a
4.3IDA桌面简介
8 F; }5 V) a# @/ d$ e4.4初始分析时的桌面行为
+ B5 d5 D: {9 P ]4.5IDA桌面提示和技巧
* |% b6 W+ p2 f. v, }; ~. p4.6报告bug& @0 i6 ], l5 s8 Y5 s6 C
4.7小结8 Y" l( P) B% E6 t
+ `6 I9 t1 o: u) o. I' V第5章 IDA数据显示窗口
# c, G t6 \; c9 p( H9 y5 Z( O9 ^/ E- N( x0 Z3 r
5.1IDA主要的数据显示窗口
0 q D2 J4 R+ C4 X5.1.1反汇编窗口
' f; [/ z$ H+ U5.1.2函数窗口
* X9 G- q; E, `9 Z) k# P5.1.3输出窗口
2 T/ M/ h8 Z% O X( u+ s. l5.2次要的IDA显示窗口
. V( b% v, L n' j& @& }5.2.1十六进制窗口
8 i8 }3 D# q- Y3 c$ t5.2.2导出窗口- j0 a8 Y; d. ^0 o* a
5.2.3导入窗口! E' p9 p" L- [: {
5.2.4结构体窗口% h& _9 ]/ ~) j: I( Y
5.2.5枚举窗口2 K# U0 B; D* `3 [) }& K- ~; M
5.3其他IDA显示窗口- U8 |( w& _0 ~) d4 B' K- X4 T0 e- O
5.3.1Strings 窗口
, }) D) ?# `8 f1 Q6 H: _ p5.3.2Names 窗口4 N h- z4 D# W; ], D
5.3.3段窗口- f* I$ R# U2 k' X1 e; f
5.3.4签名窗口' [$ n& A2 A1 K3 i
5.3.5类型库窗口/ u) |: E6 }; D! t( P2 M3 x
5.3.6函数调用窗口
' m. |3 G9 ] e; O4 |5.3.7问题窗口
0 m) }. n2 X" O/ T5.4小结3 C; [' L9 d8 x: i: ?3 ]8 h& p
: R/ I7 S, a' G: g/ Z8 n
第6章 反汇编导航
7 J' U- W( S* O4 N! ^) ]7 @
" J. j8 Q' w# u! ? _6 H6.1基本IDA导航; x5 n& [6 ^" I5 m
6.1.1双击导航/ o. ~2 p2 C* {" w, y q
6.1.2跳转到地址, D9 }8 u- S6 k# `0 ?+ q8 o: b/ w
6.1.3导航历史记录* L, k$ D9 A& U
6.2栈帧4 T' b; n+ V* u3 s7 v- T
6.2.1调用约定
( R" {" G- Y' x7 ]: O6.2.2局部变量布局
9 Q) V; `# n2 ^0 d0 D# t6.2.3栈帧示例
6 {8 S O& f8 Y1 C6 x2 q2 U. j6.2.4IDA栈视图
' t f) _' Z$ |, |7 d8 ?6.3搜索数据库
- z8 L' z9 P- d- q( Z+ Y6 z) X6.3.1文本搜索
: `' e$ O! c2 L- ~6.3.2二进制搜索
2 e* N+ [% l+ a6.4小结
. g$ m5 { }' I9 E* F
0 d/ ~1 m5 n+ ~0 b; C! t第7章 反汇编操作. a7 J) }" Y* q! c
" P" @- p6 t8 [ h5 a0 Y( m$ G7.1名称与命名
4 e0 r8 K" M& K9 j( e7.1.1参数和局部变量% I0 M4 s( h3 A9 B
7.1.2已命名的位置
, N1 T: V% F! Q7.1.3寄存器名称
. I9 a5 o( N+ B* P7.2IDA中的注释 d6 B8 d. I) B6 @
7.2.1常规注释 p# f4 }+ W9 x# H+ B/ O- W, l
7.2.2可重复注释
/ o. o' ^0 b# A7.2.3在前注释和在后注释8 ]; _3 z# ~, `& _" {
7.2.4函数注释% D. E8 J' W5 z* q
7.3基本代码转换
! G, ^- q- E% Q" j7.3.1代码显示选项9 X1 }' G- P1 s) x2 w
7.3.2格式化指令操作数
2 b( X- e2 b$ A7.3.3操纵函数5 y' P1 p7 E& Q% f; [- A6 x7 A
7.3.4数据与代码互相转换5 d% l2 p; N: R& O. s4 f9 `
7.4基本数据转换% b6 R0 ?, d3 x, {6 z
7.4.1指定数据大小
7 W$ b6 E' D4 \" \" j# B7.4.2处理字符串1 q6 H7 B1 [/ T: C& @
7.4.3指定数组1 M- z, s/ n( D& j5 ]3 E% [
7.5小结
4 Q1 x y% J" u) {1 q5 n- G+ u# f+ Q$ K. w" q/ E2 b
第8章 数据类型与数据结构0 Z1 z5 Y6 H; L0 q
* f" N7 l! T/ `) e0 f( @5 M; P4 {
8.1识别数据结构的用法% T' s9 m, H% }& ]. z
8.1.1数组成员访问
) [3 Q2 N/ b i' ]5 `8.1.2结构体成员访问
8 [3 g+ @0 j% o( m. i' A- N m! x3 h8.2创建IDA结构体
5 x' A0 y5 R7 S2 i! I; g w8.2.1创建一个新的结构体(或联合); v/ w# E" H1 m y4 w% m9 ?
8.2.2编辑结构体成员5 _6 w6 e6 m; V. s
8.2.3用栈帧作为专用结构体
^) X: m) v; N( Q: }/ g8.3使用结构体模板- v/ j* o5 |+ k' D0 r. o
8.4导入新的结构体4 r' ~! T9 Z* b; I$ p
8.4.1解析C结构体声明
9 F& V, L8 P ?5 {& ?4 ]8.4.2解析C头文件
. f: p) p: U6 f8.5使用标准结构体9 R8 ~3 ?* K9 V- |7 t# H- H
8.6IDA TIL文件
7 r: w k9 R6 r8.6.1加载新的TIL文件
5 B: S0 L3 j6 E1 ]& o# \& Q8.6.2共享TIL文件$ e' o/ @3 M3 o" p
8.7C++逆向工程基础
5 M {4 {' o' H) `! C# |/ w/ f8.7.1this指针; p2 x6 W+ G5 V! i0 F+ i
8.7.2虚函数和虚表 R8 j4 ~$ k4 ]. r* L2 L
8.7.3对象生命周期3 x, z; g1 P/ Z) Y/ N3 g1 f, E
8.7.4名称改编
6 O y/ x% B& h/ {: X% Y) I& I8.7.5运行时类型识别
9 H; Y, A, ^/ U* P3 Z8.7.6继承关系
; ^$ e5 L/ `/ K* F, N+ J* U8.7.7C++逆向工程参考文献
! ~( z3 v0 i. D8.8小结! }! L7 r' I8 l* L$ Y0 l
6 d6 E% X2 @7 R l( g% j第9章 交叉引用与绘图功能
; P: z' b) ?' H( S" }' N8 o
) b# z( z, @1 Q! H8 H! c* f. _" q; G9.1交叉引用
/ \! O7 x* W, m& @; M8 F" R! n& F9.1.1代码交叉引用
4 `$ A* }, q5 O+ Y9 W( }0 e9.1.2数据交叉引用
/ \+ S: @+ ~! `5 r# p( m9.1.3交叉引用列表9 R* @0 X* y! q4 V0 c# C# |
9.1.4函数调用
# a5 o% a% o. a9.2IDA绘图6 O h1 L% ?2 l# z
9.2.1IDA外部(第三方)图形% \' s: G* }( t* ~
9.2.2IDA的集成绘图视图$ ~7 P; {9 B; z+ b1 s
9.3小结, o: i0 `5 T U) A. [8 m1 ]
+ q8 ]/ P5 O# E7 H5 G' I# y3 q
第10章 IDA的多种面孔) V( Z7 t4 N; J# I& w! ?
) _5 w( a6 Z! z: I, c$ f10.1控制台模式IDA7 I* t q1 c$ A6 k0 S- u
10.1.1控制台模式的共同特性& q" A8 x1 V; C! ~3 `+ Z m4 c
10.1.2Windows控制台- |0 K# S# {+ }1 O g; Z: G
10.1.3Linux控制台
7 E3 h3 x6 ~. J% \10.1.4OS X控制台
/ v# ^# E) j3 Z2 E/ ^10.2使用IDA的批量模式- |4 `0 F2 b4 Z# B1 J) e
10.3小结
/ M9 M- p( H0 q7 J0 A- e
2 |2 {6 ]) U# b. T3 s. w/ ]% r第三部分 IDA高级应用
: f# x) w1 U. w5 P: c9 d& ], Z: a" J& W# C3 Y. m
第11章 定制IDA
; @; N/ v- J. e4 z/ I/ R# I8 K: n r+ n' h6 s
11.1配置文件
5 \1 }( s+ Y& I; a R/ s% D" j11.1.1主配置文件:ida.cfg- u- x% k" I) i& {! E# s3 a
11.1.2GUI配置文件:idagui.cfg, q# [- M: s+ _
11.1.3控制台配置文件:idatui.cfg$ T9 X" |, ]# o& }
11.2其他IDA配置选项3 F. |0 M: ^6 i8 j. Q/ m: b" \
11.2.1IDA颜色
9 Z E o- B6 i, B4 Y. V% \( Y" c11.2.2定制IDA工具栏
* l5 W1 j: {! s$ _! O* @11.3小结" ~- ~) `" L# r: Y+ U
E! l' Z0 Y! b0 q0 N S
第12章 使用FLIRT签名来识别库- |8 E: V; G1 _! Y
R( I! x0 k" o( E% a
12.1快速库识别和鉴定技术' E( {: Q' f; d+ X
12.2应用FLIRT签名$ f* l G# m/ o8 X4 @% D, M7 ?
12.3创建FLIRT签名文件( _1 w) F/ _0 L! m/ u6 W F6 g; u
12.3.1创建签名概述
9 }! ^6 X$ x! [% \9 r& i" G12.3.2识别和获取静态库) V$ S1 R4 U1 B5 K
12.3.3创建模式文件- W- z' e, v8 P @ k6 I
12.3.4创建签名文件6 a1 X0 ], x3 P+ L; A9 V9 `+ g
12.3.5启动签名- Y1 d) O/ q* r
12.4小结
! V7 m) a2 x `2 l# x: r. y/ Q0 |4 X9 Q6 ~) a
第13章 扩展IDA的知识
, W/ N' j- M) L2 a* c6 c1 x+ T4 O$ |! ]4 j7 I) l* ^
13.1扩充函数信息
9 G, n7 B% ~: k! Y# {6 m, W4 Y% w13.1.1IDS文件
1 h/ z2 u$ }' Q6 {13.1.2创建IDS文件
. \, b2 Y% R! z e' c1 [) d13.2使用loadint扩充预定义注释. z7 |4 D0 }! b: U3 u6 }1 M
13.3小结8 V+ Q) \4 {5 B) N7 H4 H
# C1 B& g' q; M$ l
第14章 修补二进制文件及其他IDA限制
2 V" x M8 Z! l( O3 E- L
% {0 x7 |% j1 m- ?6 x1 X9 Q2 t, ~14.1隐藏的补丁程序菜单
7 R5 [/ Z4 ?6 q2 l$ X; o14.1.1更改数据库字节 _ g+ s. w, t: _/ O9 K
14.1.2更改数据库中的字
7 Z' R8 n' m. Y1 m9 i0 E! d3 d$ d14.1.3使用汇编对话框( p2 f. _6 x+ ?# h
14.2IDA输出文件与补丁生成8 v, S$ Q2 P% s9 ~2 o/ |
14.2.1IDA生成的MAP文件
{. Z1 g2 }6 H0 y( M9 e. n14.2.2IDA生成的ASM文件* l" B# ~0 G" f, X- b$ v
14.2.3IDA生成的INC文件6 ]* ~3 y( a/ D/ C# J/ {( Z1 K
14.2.4IDA生成的LST文件
* D* |' v: p( n/ M$ ^/ }, \0 l" ~6 ?" x% B14.2.5IDA生成的EXE文件# x$ t( M! \, |) A% e" @
14.2.6IDA生成的DIF文件
% P& y8 H. e& Y# V3 ]! t14.2.7IDA生成的HTML文件3 `4 e9 b# t) K4 h6 p
14.3小结+ |* V. B4 R( X9 _! D& v, m. O
$ p, C" r: b: H) B/ I/ \/ h
第四部分 扩展IDA的功能2 q- i: U5 F8 z( R& l
2 Z, B2 C b. `) v第15章 编写IDA脚本# c! A/ s; q2 t, { W
0 E c( c0 `6 q( q
15.1执行脚本的基础知识- e6 H. {. F9 h+ D9 H7 q6 Q' k
15.2IDC语言9 S1 T' l4 n \- ^
15.2.1IDC变量
+ R7 M) ?# L( l$ a15.2.2IDC表达式
, j2 M! v. B. Z; R7 Q15.2.3IDC语句! r$ r B: R% R
15.2.4IDC函数
$ c# d% U+ w. n$ I15.2.5IDC对象
( A( }: C) T; o1 v* d1 C; l R15.2.6IDC程序. Q( v2 \ `4 T) j* d) Q( y0 ~
15.2.7IDC错误处理- T% s1 X3 T& P2 \- n, u
15.2.8IDC永久数据存储" T/ l: G% K9 S9 }3 m
15.3关联IDC脚本与热键: p# V0 }) o* K- |
15.4有用的IDC函数
) r: e% _: j y5 M15.4.1读取和修改数据的函数- [2 b) r7 M: V- G# L
15.4.2用户交互函数; M$ u4 L& y5 f" { O- @
15.4.3字符串操纵函数* t2 F9 W# C7 b1 O+ y, h& f, H
15.4.4文件输入/输出函数- i, N% p1 u" m9 @: |$ n: k. _' E
15.4.5操纵数据库名称3 b, s6 C C$ W7 |4 G* K; I' H4 F
15.4.6处理函数的函数% c0 |, v$ T* y; B. A* w* T
15.4.7代码交叉引用函数
0 M" c$ _$ j+ B8 `. |7 h L15.4.8数据交叉引用函数* m( c- o; L* u/ `, T: s1 k
15.4.9数据库操纵函数, C" b( k, Y! K3 J L: Y3 M6 `
15.4.10数据库搜索函数
1 i& F0 I2 K5 b* n15.4.11反汇编行组件
' `% \8 O$ N. Z15.5IDC脚本示例1 K* R7 Y; L6 u y' Q
15.5.1枚举函数
, Z7 Q$ @ c" f: c# B* A( s: b, f15.5.2枚举指令+ ?# k* l7 F ] q7 W+ ~6 M; Z
15.5.3枚举交叉引用* t( u4 `. O# K8 a7 m* A
15.5.4枚举导出的函数
# C1 T$ p; ]& D$ j& Z" f15.5.5查找和标记函数参数7 D6 H: L* S) ?3 ^$ i3 J8 j
15.5.6模拟汇编语言行为
3 F7 h. H9 P2 H" C5 {& L15.6IDAPython
6 S, D% F# b$ q, ^. n* R15.7IDAPython脚本示例
$ }6 R. s4 o3 ^2 m! T# y6 }15.7.1枚举函数+ j" J5 ~( u6 T- H8 y
15.7.2枚举指令
) E* Q/ A: {! Y+ V: J. ?15.7.3枚举交叉引用
* L; r1 d- r1 U/ ~7 x15.7.4枚举导出的函数) b4 v7 x7 C& u! G$ \0 a! o
15.8小结
P9 E$ \6 L2 [; L5 l( K
$ x3 h: Q" m- Z5 L第16章 IDA软件开发工具包
2 }3 M, _) }1 T# }) O
4 N, u7 E1 j0 M$ ]6 E8 ?$ o0 m16.1SDK简介
0 t3 E" \3 `9 y4 k8 |* O" m16.1.1安装SDK1 B9 Y Z: \' a
16.1.2SDK的布局
0 I, c6 n4 m9 u% [, Q16.1.3配置构建环境
+ ?; V, z$ i) M4 G) o16.2IDA应用编程接口
+ s5 A: C$ f$ o/ _9 S( F16.2.1头文件概述& m' M+ D- K( ^# v8 |* |5 o
16.2.2网络节点
. y7 u' D. b- y0 y' ?16.2.3有用的SDK数据类型1 \# S% S, q9 Q+ K* D. H9 h. k& `
16.2.4常用的SDK函数; F9 x' b* O' V! u% a, z& u6 E2 s
16.2.5IDA API迭代技巧' p# s5 l6 Y7 Q3 H* U6 A, O6 _
16.3小结
, W) l0 ?) c$ D% g! ?3 T: i
( g2 v* f, O8 ~$ D, S8 _4 R2 Y3 L4 q第17章 IDA插件体系结构4 d2 F) W# @- B% M) r
1 S" J% D6 Q' q7 t17.1编写插件
9 t5 q- d$ y3 ?% F; j17.1.1插件生命周期) Y6 u1 i, C( m* b
17.1.2插件初始化( {3 `, [0 f, y% ?9 A
17.1.3事件通知
q: T1 C4 J+ m! w3 E17.1.4插件执行
, f& y1 U6 B1 }6 a17.2构建插件
' G; h8 K: I' j, c17.3插件安装4 w2 a) D8 X. ^' h0 Y3 m5 R# V2 \, D9 A
17.4插件配置
) v! B4 f% ]9 G1 V17.5扩展IDC/ _1 W% N" P; ]6 L x5 y, I9 e
17.6插件用户界面选项0 }" F# O( a' @* C `
17.6.1使用SDK的“选择器”对话框- v% I5 s4 j; ^/ b: i: ^4 [
17.6.2使用SDK创建自定义表单
- [# O& O8 V$ C4 I1 ^/ W' J17.6.3仅用于Windows的用户界面生成技巧
: f0 W3 N4 |+ D, p17.6.4使用Qt生成用户界面
7 J& i @1 X) o( W0 t: U) v17.7脚本化插件, r& e" S# v& K/ j
17.8小结
9 K( ^' F: r+ v
8 Z: r3 f% n m8 h0 Y' U第18章 二进制文件与IDA加载器模块% Z3 v- x: b, \! {3 |8 |0 q
6 |: C) V0 Y8 \6 m18.1未知文件分析; d% O5 V6 H, s* t, v1 z+ t
18.2手动加载一个Windows PE文件
' M4 @/ g4 G3 M+ B* D18.3IDA加载器模块
# `% q/ B5 C+ O! y18.4使用SDK编写IDA加载器
0 ?1 H: S3 R Q- m0 k18.4.1“傻瓜式”加载器/ \6 z2 E! G9 x
18.4.2构建IDA加载器模块$ b6 [) S" e6 T5 P2 w' ~
18.4.3IDA pcap加载器
+ o/ f5 ~2 S" t' G18.5其他加载器策略
- x, s" V4 {% u, _1 @: |9 S18.6编写脚本化加载器
" \& U" D o$ Y8 m18.7小结
1 ]( |' T6 K4 Y! E$ a" j( @
- k3 H. T, g& ^! A+ F* S8 T第19章 IDA处理器模块
: I c0 d( E5 j8 I! t$ s3 }2 b) v. A
19.1Python字节码$ @2 ]' i5 R6 V' S: Q
19.2Python解释器
7 m7 V, A; a G1 B P7 K' A( z. {19.3使用SDK编写处理器模块
5 ~! f6 X7 z+ E: P+ L19.3.1processor_t结构体
# |3 I5 y8 {5 r19.3.2LPH 结构体的基本初始化3 C/ T7 }" W( d2 v; W* i/ r, V
19.3.3分析器
R' V/ j0 t5 h3 \19.3.4模拟器
3 M# \$ Y5 S& Q: I0 L* N19.3.5输出器 {6 g) n! R9 x, K9 J
19.3.6处理器通知
3 [ ?& Z# O$ c2 {0 [. A19.3.7其他processor_t成员
, Y2 ?5 k) c% l+ t* R1 s19.4构建处理器模块( H) t! Y z8 t. I
19.5定制现有的处理器
$ P+ P9 m5 C' [8 l( F3 N# T t19.6处理器模块体系结构6 B2 M' y m/ i) |' l( M9 U
19.7编写处理器模块0 N) @- D% C* @2 X2 _2 }! z
19.8小结
% e/ N$ J7 r8 i; B7 N# d1 F' \5 L2 t" u6 G
第五部分 实际应用( w5 H, z$ U( Y ^
3 H: h' Z0 ?$ i
第20章 编译器变体
Z3 C _8 {: X3 b7 p6 x: i1 E: c8 e9 z& F
20.1跳转表与分支语句
4 D- i1 D1 d; g5 i. q' {9 F& K* v20.2RTTI实现% k) _8 q/ k; O; T0 }; ^9 F
20.3定位main函数% S. I# G* E- e$ ~; u0 U0 V* q, A
20.4调试版与发行版二进制文件$ ^/ s' H. l) g3 A* B" w
20.5其他调用约定
: i. T; N( P% g J( H( A20.6小结
% q" I$ I* H$ V$ g* T
* U* w3 n7 r6 G* n9 k第21章 模糊代码分析3 D3 |; E+ n9 @: q. V
1 _6 o0 N. ]6 l21.1反静态分析技巧
( t$ o }+ `, \. J+ [7 [21.1.1反汇编去同步
! E9 E$ U% W7 N! [, T* W21.1.2动态计算目标地址; }$ v$ _& S/ l4 ]/ [, s \4 g
21.1.3导入的函数模糊
+ N2 g0 O/ U3 K) D1 ~' o6 V/ j2 o/ e21.1.4有针对性地攻击分析工具. K: b9 W" C# |7 `. j
21.2反动态分析技巧
" t4 ]: n' Q+ c4 T0 Z/ b1 |21.2.1检测虚拟化
3 D- z3 g& S; `5 j* Z6 H21.2.2检测“检测工具”" j( d2 b/ a( x' {5 [" w2 A
21.2.3检测调试器
9 U6 D9 n# b3 D& K, Z4 V21.2.4防止调试& \# s2 `; E+ Z& ~2 v: }
21.3使用IDA对二进制文件进行“静态去模糊”$ A' l# E% U0 m
21.3.1面向脚本的去模糊4 H! {/ w: G4 W1 v1 s! q$ c2 \
21.3.2面向模拟的去模糊
5 u, h' N5 s+ r E$ M# a21.4基于虚拟机的模糊; C& S' B$ F4 ]0 r, R( p$ H
21.5小结
8 e4 h: c0 k9 k5 P
' X% V% S/ g" R& L2 U第22章 漏洞分析6 n' ~( G- {/ L0 P8 o- p0 v+ _
2 v# Y' d, Z$ y! o22.1使用IDA发现新的漏洞 z7 C2 i3 O) G3 D- i( r
22.2使用IDA在事后发现漏洞
/ W, y# d; a( \) [. C7 O# k4 K22.3IDA与破解程序开发过程& q+ P3 {! X: |! y$ P0 `
22.3.1栈帧细目
, t. E/ N1 q: j2 L' u22.3.2定位指令序列
- o# O8 f8 r, Q$ x: i4 n1 W22.3.3查找有用的虚拟地址4 h! i3 X+ u; g; B5 a( r
22.4分析shellcode
: Q+ ?6 ~% p# k8 O# @# P! h22.5小结
* s0 z7 ?' n5 r/ B# X W
$ N* O2 b- ~0 H( i5 P! X2 V; o第23章 实用IDA插件
' l7 _- I% e/ }3 s
8 C( o. U/ b8 ^23.1Hex-Rays% E) C/ M5 G$ S* i) T0 l; a
23.2IDAPython
0 W3 q q$ z+ S; C% o23.3collabREate
T7 Z1 a% f. B! Q% u+ G: l5 j, g% M2 ]23.4ida-x86emu
* N: D9 T2 P1 K' [23.5Class Informer6 p2 | `& B; }2 `
23.6MyNav
- |! u9 x" y% i23.7IdaPdf
0 q1 H; L* B$ V0 S$ z! ]23.8小结
S/ Y0 x3 W7 k7 M& x$ `
+ Q$ I# h& c# |4 m' ?+ O) r, g第六部分 IDA调试器$ m |- E7 i1 ?# b8 n
3 A4 c' l! m. Q3 ` ?7 A5 z第24章 IDA调试器
8 Q6 }& M8 W4 w- ]+ t' x G
" z6 D- W% j- M& N7 u/ \24.1启动调试器! t) f7 D9 ]2 W. B8 t, Y5 q
24.2调试器的基本显示
. S6 y2 f2 A% Q9 z$ K0 Z C3 I24.3进程控制" O0 m# E$ O/ W' J2 F% y o8 j8 {3 O
24.3.1断点
7 z3 K6 m; s7 {. S V# @24.3.2跟踪0 G" Z/ l' t$ B
24.3.3栈跟踪
. E' E2 O, _& D8 C* x) g3 A) w* i24.3.4监视
9 j4 k+ _9 T3 A# d- c8 e* x) |24.4调试器任务自动化
2 u! `/ c& I8 o+ v9 o" t24.4.1为调试器操作编写脚本
$ _( L, D$ ?: s/ `; g0 e3 Q- b- f24.4.2使用IDA插件实现调试器操作自动化3 K! s# p, P6 x* J! G9 l4 M7 k1 G
24.5小结
9 c. R4 d3 K, b% b
8 f8 }7 K1 a& f* d第25章 反汇编器/调试器集成
/ k( {! k" O1 S" N1 f# D1 G9 i- P) K# z2 k4 H( m
25.1背景知识, i$ I& ]: m0 M! f' b! z w
25.2IDA数据库与IDA调试器' c' A3 j- s. `2 |4 i& d
25.3调试模糊代码
" }; h2 d- \1 e/ H9 d J25.3.1启动进程
, ]8 Q c4 J ~ y {; ~7 `: h25.3.2简单的解密和解压循环# B1 h( o$ ?. U
25.3.3导入表重建
5 u; X. E& [- ^* `! H4 G25.3.4隐藏调试器
3 Y) e* a8 ]+ y- F25.4IDAStealth
7 A6 s& m4 |( u' r/ u25.5处理异常
5 K" v& L' C+ U M1 O' ]$ Y' @2 z25.6小结
! \/ u4 B5 d2 i4 M% F3 y4 y
# R2 l+ g5 l. ?- L& w第26章 其他调试功能
' ?/ e, O" i @7 ^
* H- i) C2 i$ t8 O- f26.1使用IDA进行远程调试* b- Q0 C. v0 o u5 `
26.1.1使用Hex-Rays调试服务器
# D0 q7 e' J- p+ i26.1.2连接到远程进程1 \2 q) n. @, A
26.1.3远程调试期间的异常处理
4 z$ ^( Y/ T9 ~+ a# U n/ E26.1.4在远程调试过程中使用脚本和插件 B! L' j o$ M% h, o1 _2 O5 Q- g
26.2使用Bochs进行调试
0 C7 c" e7 x+ x( O! ?. f+ W/ L26.2.1Bochs IDB模式" B" \$ ?! [0 v0 T: k8 P
26.2.2Bochs PE模式
, x+ O1 d0 e+ ?4 N7 {26.2.3Bochs磁盘映像模式
! b" ]) ` k5 h3 G& N* R26.3Appcall
9 J& P: p- M$ ^4 C26.4小结, O' i: f; x. [7 C% E
* d* ?- U5 D+ I+ r; N% `
附录A使用IDA免费版本5.0
" F" b% u9 h) U, H- u" a- c8 n
. K2 E" r- ]6 L( h( @! L附录BIDC/SDK交叉引用
* U# l4 B( s4 ^* p3 `& Q) r5 ~. ?) n% E8 ?' c1 }
|
|