|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
" ?/ ?% Y H/ a
6 ~3 m9 o0 I* h# E
书名:《IDA Pro权威指南》(第2版)7 t- W8 k( J, ^$ @. Q8 v0 `
作者:Chris Eagle
1 o; I, R ^% }; f译者:石华耀,段桂菊
F1 A; M0 R" |/ L) L, R出版社:人民邮电出版社# {+ [7 Y' d* S3 B, ]
出版年:2012年2月1日(第2版)" l9 o4 X/ q) Z3 g
定价:89.00元) X9 E9 [4 f! b0 I
装帧:平装
, q/ l* Z3 q8 n6 |) LISBN:9787115273680
& {& r9 C+ b8 x6 W& j8 }: J1 }: k4 p; Y B) |9 b8 a+ M) }' }
购买链接:, w& q, b7 v" W6 ?3 V. p! V
; G& h3 @) D1 _# Z3 U
. u" V: a2 G& o$ `' g亚马逊(Kindle)-> 传送门1 s+ D' F& X3 l
, T( c; W8 o, a( Z当当网 -> 传送门+ N1 Q$ p. @0 y9 T Q- N
" T% d! }! k3 }! n# m京东 -> 传送门
7 d9 {" S8 H( N4 B3 r) k
. p8 L0 X) k- o天猫 -> 传送门
4 r, D% x' c" k1 k6 y- ~7 r8 u& O V' D8 w! \: U: k/ u
; u) @$ {# j3 e. `% k! u$ I
内容简介:& [9 ~3 {" e8 d+ I l5 h
' Z1 B' o/ g& F8 X! i$ t
; ~6 D1 o2 p( I7 m* ]
《IDA Pro权威指南》(第2版)共分为六部分,首先介绍了反汇编与逆向工程的基本信息和 IDA Pro 的背景知识,接着讨论了 IDA Pro 的基本用法和高级用法,然后讲解了其高扩展性及其在安全领域的实际应用,最后介绍了 IDA 的内置调试器(包括 Bochs 调试器),一方面让用户对 IDA Pro 有全面深入的了解,另一方面让读者掌握 IDA Pro 在现实中的应用。相比上一版,这一版以 IDA6.0 为基础,介绍了它的新的、基于 Qt 的图形用户界面,以及 IDAPython 插件。《IDA Pro权威指南》(第2版)适合 IT 领域的所有安全工作者阅读。
# W: h# q: x1 e* B' P R9 z2 f
; {' O' t* ~6 V; o/ R
8 m% W( y8 s. V7 C! S% }0 M目录:
( \6 o4 K8 q- k. A0 m
1 [) F9 h- |& E! V
/ K3 m9 C! Z+ ?% X9 @9 D第一部分 IDA简介
7 G9 W( C$ l9 r; @& S; D; [! {& k7 r
第1章 反汇编简介" b/ B- \2 \6 t0 `
' u! K z+ o+ r! g1.1反汇编理论- S/ m8 }( @9 W( F7 h
1.2何为反汇编
# X) r8 h9 H+ e4 E( [% |1.3为何反汇编
' G" A- e: W n2 ~1.3.1分析恶意软件
9 w+ j) \% J* [1 D' N1.3.2漏洞分析
; z# _4 y# o$ R! q7 X1.3.3软件互操作性$ d9 v1 Q; W; u% x
1.3.4编译器验证
+ `2 u2 I$ k) u- I$ M1.3.5显示调试信息" _; i3 W s/ ~0 g
1.4如何反汇编
- F" w1 Y; `! ~: G. K! K4 Y8 u1.4.1基本的反汇编算法
1 H1 P& X# ?" D# j( i1.4.2线性扫描反汇编
) C. f# ^( J7 L8 s. ~4 s3 k) [1.4.3递归下降反汇编, e% K- X6 ^6 s8 e) a! J
1.5小结
2 U/ [# ]3 u- C/ t$ j& n, Q9 M
! y4 Z8 l/ D8 O, Q0 O第2章 逆向与反汇编工具 : m0 C0 l+ Q1 b9 j( ~1 l5 G
0 g; ?$ E& _* z% {' v6 F2 _3 {7 P
2.1分类工具
1 g5 g$ t+ U/ p L, L2.1.1file: P" r; i3 }# R" q
2.1.2PE Tools
6 {3 X2 b# {& P) S w6 Y2.1.3PEiD
/ r3 B; l* W3 o2 D9 N! W2.2摘要工具
* g3 @( @0 b. [# x0 g2.2.1nm
+ n: S( A4 d4 ]2.2.2ldd; G* @5 s( J1 ?
2.2.3objdump
7 R* ]" o! \0 h3 M( b/ ~2.2.4otool' }9 V, Z, J+ T9 t% k) M B. W3 Y
2.2.5dumpbin+ a% g) c# A# [( ?2 q$ g g. ^
2.2.6c++filt
; t! g% r6 r+ {/ a7 {3 h! |2.3深度检测工具
3 D$ K# B: ~. S( w$ J2.3.1strings- J% e3 b/ V$ L6 P$ ?' ]; u5 @6 M
2.3.2反汇编器
( N" M/ n9 z% v/ Z7 l7 C2.4小结
9 k4 p. f1 X) _. ?. ^
1 S. K, }7 T5 w( ]第3章 IDA Pro背景知识
. B" Y" u: U9 C7 Q% M$ j" l1 [, e
3.1Hex-Rays公司的反盗版策略6 C$ q6 O& S' G1 U
3.2获取IDA Pro7 w$ n+ [; s' q5 X3 p6 r) Y# e
3.2.1IDA版本
9 h0 H# `9 N; g$ ?* o1 y3.2.2IDA许可证
- E: H) z" ?- w3 a3.2.3购买IDA" g) A; w: N$ O2 {; l Z
3.2.4升级IDA+ n5 z3 ^+ y$ r* F& y4 c: E
3.3IDA支持资源; u+ @& O9 b: W- x6 J& D
3.4安装IDA% r" I) x g# y+ o# X, P5 z5 y" e
3.4.1Windows安装4 T& `5 f8 z' p) I
3.4.2OS X和Linux安装+ l, k/ N4 y% Q; y+ U
3.4.3IDA与SELinux5 f, b$ T' l3 a
3.4.432位IDA与64位IDA6 G& A/ ]4 ]/ D2 n7 f
3.4.5IDA目录的结构6 d0 L! Q9 n- L* a. |1 k
3.5IDA用户界面
3 m6 l9 G; R: a3.6小结" W6 S; `6 N0 y! ^* W# @% K
+ [9 P) w3 V" }! [# u. ]第二部分 IDA基本用法
: ~, L( ]- J' n2 ~% o0 N; `* o, b) R0 J4 G; P/ B
第4章 IDA入门
- d4 W- B$ e. `) s1 v% J. f5 @( t! ^( a8 ]$ v) _$ J. y; l( ~
4.1启动IDA
9 v; ]0 Z; O5 `* Q4.1.1IDA文件加载
. l7 o0 V4 X' u# n4.1.2使用二进制文件加载器
8 N: f. |* [$ @" n; e4.2IDA数据库文件6 | k+ [1 ]9 g0 s. b' `
4.2.1创建IDA数据库5 y& Z( W3 _8 H o4 n+ x/ ^
4.2.2关闭IDA数据库
. }0 d: C9 c3 ~" N! X4.2.3重新打开数据库$ M B" P( I3 l5 S5 E2 C1 S/ R; C
4.3IDA桌面简介4 [' n5 ]' e% M0 r) Z* w% m8 P0 I- f
4.4初始分析时的桌面行为; f* j* y( R; D; k5 K) P# W) i, M
4.5IDA桌面提示和技巧
- Z8 R$ m X/ i3 z8 ]( y. ?, N$ p4.6报告bug
2 D- h/ \+ A7 j+ i3 ^( J3 \4.7小结
) N: W7 e/ T* L. U# q
p# M5 ? q5 w( L7 }第5章 IDA数据显示窗口
* ]# Y8 P @' }2 @$ W
- _9 ?0 z" N% M5 I; R5.1IDA主要的数据显示窗口. Y; G- t# O3 F/ A; t/ P& r& x% `
5.1.1反汇编窗口
' d8 V5 t1 J- d5.1.2函数窗口4 j0 f. O2 Y1 ^7 p7 o
5.1.3输出窗口
/ ]0 L: W5 x% g6 _5.2次要的IDA显示窗口
7 ?7 X. j; T3 q, Y( \. M! j# z' q/ r5.2.1十六进制窗口
+ J7 [9 C5 d2 w& R+ z9 s8 W# |5.2.2导出窗口
* F4 |4 p8 z2 H- V8 n3 o# q3 Y$ r5.2.3导入窗口( Q" ]) @4 |% u {/ B6 K
5.2.4结构体窗口. O" n3 L5 {/ Q: I
5.2.5枚举窗口
, l$ A% ~9 T: _5.3其他IDA显示窗口: }9 R6 }, G6 c' H( Q; @% ]
5.3.1Strings 窗口
0 X, u- ~3 ?; v2 w( W6 Z8 W8 Y5.3.2Names 窗口6 I# L7 l3 w9 L* c( x9 ^5 ?
5.3.3段窗口
5 Y6 r* |- @& p, J& d* f- q1 I3 @5.3.4签名窗口
" l: m, @+ g, C/ I* f) u- h1 N% U5.3.5类型库窗口
7 b8 { K7 D: Q" m: b% G5.3.6函数调用窗口
4 o) B* a" X1 @7 M' z) q5.3.7问题窗口
8 g/ \1 e; S6 `( G: {% j* y5.4小结
- V" o! S3 Y4 d( W5 r: x. \ H% Q# m
第6章 反汇编导航2 W a/ R7 |- f: z# y \ j
* A. ~$ d0 o2 \6 p+ ?4 Y: n) r6.1基本IDA导航- q. _' B# |% R
6.1.1双击导航
, N4 s4 B" W. F0 c. ^) S8 \6.1.2跳转到地址
2 ^ x4 n1 S) C; D- h# u6.1.3导航历史记录' d J& ^+ J7 @/ c0 ?7 H1 s, P( o
6.2栈帧0 ~* O9 V6 A) u! p! y+ R, i1 Y
6.2.1调用约定% ^ ]6 f5 c5 V1 P
6.2.2局部变量布局( ]8 F4 [1 f& u3 C$ _6 E
6.2.3栈帧示例
7 U5 U/ Y$ |+ w+ J. Y. q6.2.4IDA栈视图2 J9 J- V+ d5 r/ h, J
6.3搜索数据库( d$ E% n5 E, w3 r) P2 E! z: A3 y
6.3.1文本搜索2 O ~4 a+ O4 A; ^- H9 |
6.3.2二进制搜索; O; I/ R( ?7 c
6.4小结' u2 \, W: J8 s% t) L! D \0 S
) ?0 I1 l" U7 |8 \ H+ d
第7章 反汇编操作
' e6 x5 T( b7 z7 n2 m3 ?
0 G8 L+ B3 K* G7.1名称与命名
( t4 w5 B1 Z: m+ Y7.1.1参数和局部变量
- P( U# h3 k$ d$ o# l5 Z7.1.2已命名的位置
! u, f' b1 A0 I+ n$ ^5 C7.1.3寄存器名称5 F7 y" U+ {1 c& ]
7.2IDA中的注释
% k& S2 e) |$ U2 @% y' A/ q. q; h7.2.1常规注释% Y0 e4 Q3 q. G" @7 H7 H8 Z
7.2.2可重复注释* n9 ]1 R9 K8 b$ \
7.2.3在前注释和在后注释" W$ B- N3 |6 n9 V
7.2.4函数注释0 }& `; {) g1 Z/ Q: ^% z
7.3基本代码转换4 r4 n6 }5 x5 x+ v% N4 Z
7.3.1代码显示选项" y$ [1 V9 @! X0 `" ]/ w4 e" ^
7.3.2格式化指令操作数$ M3 M1 P% J5 l" _5 y3 q" L+ v
7.3.3操纵函数3 ?5 y! E( l( s5 W8 o% ?- V6 D' O" f
7.3.4数据与代码互相转换8 v" N3 u: }; }. l# N& i' {
7.4基本数据转换
$ E9 a6 ?/ |! h6 C7 e8 A7.4.1指定数据大小7 c' q9 B& z; q7 v6 l0 |: t! x
7.4.2处理字符串5 P6 \7 s) C( \% M$ ]& Z
7.4.3指定数组
. `: L# y. j) H7.5小结
1 @* G$ _6 g' m2 Y) u* o& E6 i& D7 m& T+ T* o H1 v
第8章 数据类型与数据结构" X1 ~# m7 v8 p5 t2 M! n1 }
* h; a" r7 H6 T; K
8.1识别数据结构的用法9 @6 G5 R+ P* J$ n! B p
8.1.1数组成员访问
9 r1 n! i* d4 t1 U8.1.2结构体成员访问3 V, X8 _8 [: y; A( `
8.2创建IDA结构体
' ?4 p ?3 t1 U- F+ r# ~6 L l. f8.2.1创建一个新的结构体(或联合)7 Y4 i! G& y" t7 c7 V. n% L5 H
8.2.2编辑结构体成员$ T- K8 I% L. X; S
8.2.3用栈帧作为专用结构体! f4 ]/ B0 _: b& K5 Y# ]& G
8.3使用结构体模板8 N6 W) x) H5 c1 [! j6 S
8.4导入新的结构体
, X/ F. Z5 Z# Y3 y+ p$ X8.4.1解析C结构体声明
/ Y% A% X1 s1 ~6 \: O X8.4.2解析C头文件$ A) u4 p$ P6 E8 F# g2 |: l# f, c
8.5使用标准结构体8 a% l7 ~7 |9 E( Z! P/ j4 ?
8.6IDA TIL文件9 I$ B/ U1 |/ t V, \1 y9 K0 |9 a
8.6.1加载新的TIL文件2 O' Z- Z# m m2 L: L7 @
8.6.2共享TIL文件1 N( F0 G+ E* b q0 q6 X
8.7C++逆向工程基础
" _) z! [4 D4 j; W& O9 Q/ ~8.7.1this指针- v) X3 @) _! u! u0 y( S2 Q
8.7.2虚函数和虚表8 H: o+ h7 c7 O: G7 N% j) c
8.7.3对象生命周期
( [% W7 x2 i- T# l8.7.4名称改编
" i. e* N+ {2 _' T# o; d1 v# S+ N+ j8.7.5运行时类型识别' I, Y' R; H; U( Z9 e# A
8.7.6继承关系
7 m9 l7 p' G: q! L: g8.7.7C++逆向工程参考文献7 n3 A& N9 W# V V0 J2 X
8.8小结, d9 F8 B+ }9 N* e* R2 }
- q0 {5 E% O0 s7 |# x9 p
第9章 交叉引用与绘图功能
$ A9 E1 S& R+ P1 U2 j
7 F6 n' x/ ^0 k/ Q9.1交叉引用
7 i7 p' q! g0 n# f9 g9.1.1代码交叉引用" I4 W. c8 v2 `! i0 w0 j _
9.1.2数据交叉引用3 L1 }1 n: j7 i# l" c+ u
9.1.3交叉引用列表. o6 [/ c9 k8 r' s" r
9.1.4函数调用- W: k5 q, p7 ?3 B
9.2IDA绘图
1 B1 @5 C9 }7 c+ Q h0 K9.2.1IDA外部(第三方)图形
$ T3 V. Y! j: T$ ^7 m$ ^9.2.2IDA的集成绘图视图
3 W$ e+ F5 A, B' S/ ~$ G9.3小结/ u' P3 s# ^0 }* I; \7 M
1 V- X6 f+ {7 m; s( z v1 @& I
第10章 IDA的多种面孔
, G, v, s" F1 I. L
3 V& ]& b ]8 q' m7 M10.1控制台模式IDA" X7 n( r9 K7 I/ h& u4 W: b6 ?
10.1.1控制台模式的共同特性
+ \) d1 p+ Z8 W! _+ c K10.1.2Windows控制台4 K' p! I" m1 N5 E
10.1.3Linux控制台0 c0 ]9 P! K o* F( \; x
10.1.4OS X控制台. j8 F5 ^# a# O/ _* v: g
10.2使用IDA的批量模式4 P# d. c( j. [0 R# b5 H) a+ h' x1 _
10.3小结. `, g2 ~1 O" j2 Z/ W
9 b T" E6 m* W+ a' `6 | I
第三部分 IDA高级应用6 X" r3 R& A. V4 ?2 j, q
( j, e9 J- j9 c# r4 d6 m' w4 v
第11章 定制IDA9 y a0 z" w) u
* F' q2 ^* b3 v, M2 [11.1配置文件3 D) v I1 H/ @
11.1.1主配置文件:ida.cfg$ J1 E6 v' c) i; F& ~' H$ `
11.1.2GUI配置文件:idagui.cfg$ V7 H) {" i+ U8 ~
11.1.3控制台配置文件:idatui.cfg
$ d8 W# v: r4 d) ~% f, ], U# S: u11.2其他IDA配置选项+ G9 j) h4 y. D: Z
11.2.1IDA颜色
0 t& H3 s/ X" |5 i11.2.2定制IDA工具栏6 ~ x2 ]2 z* R0 T; Q
11.3小结
) R" E+ t) ~9 N4 l$ {! Z( H
0 e3 W. V& N6 s5 K第12章 使用FLIRT签名来识别库
% E: p9 z+ k/ m) z a! t/ m) f2 c; ]5 n
12.1快速库识别和鉴定技术
7 [3 J' \: F. B5 E9 u2 B6 O3 V12.2应用FLIRT签名7 \4 l. a9 l% X6 x' ?4 o# Q
12.3创建FLIRT签名文件
% u1 i t& }3 f. h+ v. s1 H12.3.1创建签名概述# Q/ ~ O5 Y, Z
12.3.2识别和获取静态库
. W. N* T" g: h) \: l3 n8 V12.3.3创建模式文件
) r4 P( q, h0 n" h12.3.4创建签名文件
2 V. G: l$ m( M7 L) K12.3.5启动签名- R O* z; O, u, y
12.4小结
( s3 `5 t+ q. b: Q& m( a& r9 n$ }' T7 t& a6 g$ W, M
第13章 扩展IDA的知识! @) [# p2 Y% r" i) S2 E
: x4 t& v. C8 e: T- ?13.1扩充函数信息
3 N& a, B5 F, R; I* o/ u* V13.1.1IDS文件! i1 i) C6 m: g9 L6 g+ }
13.1.2创建IDS文件! P4 ^" S3 W! W9 E, A v& u ?
13.2使用loadint扩充预定义注释
4 w2 V; O/ \* P1 M: v4 O% g% O" s13.3小结( ~" a# ]% z6 M% T& ]
( }5 i) c, o/ B4 V- P第14章 修补二进制文件及其他IDA限制 P$ C8 x5 M' Z+ s8 m$ e
2 c* q: Z- t" W0 X; O5 ~( U14.1隐藏的补丁程序菜单
- u# L# o. d2 C: ?% i14.1.1更改数据库字节8 j! I2 Z9 s$ d
14.1.2更改数据库中的字! u4 ^$ ^8 f- d. B% l
14.1.3使用汇编对话框
/ d4 X9 {* V# a8 O% j6 G- |14.2IDA输出文件与补丁生成1 B m/ q0 k; O% E9 H
14.2.1IDA生成的MAP文件. A9 N; i( i/ Z1 i: |) l% J2 z
14.2.2IDA生成的ASM文件
7 V8 ]: z# n8 U. c14.2.3IDA生成的INC文件5 X! {7 B7 M I# P6 q/ i
14.2.4IDA生成的LST文件- ~" `) P9 S+ Y# @: U9 p
14.2.5IDA生成的EXE文件
, b" o& S5 d# j14.2.6IDA生成的DIF文件; Y4 Z) @; ^" _4 u$ @( [
14.2.7IDA生成的HTML文件9 `; N* {. o% Z1 A5 j
14.3小结5 [4 |) | `" S% P0 y
4 v5 t' X8 L c3 P6 h9 B5 G第四部分 扩展IDA的功能9 @9 o: H# |9 t- \$ T
, S) j/ X' n' H2 {# h1 j# G
第15章 编写IDA脚本! R3 b( b0 y( s0 U
8 N6 M+ h$ t6 L1 c! A15.1执行脚本的基础知识
8 R. g8 I |5 C) d: C15.2IDC语言
* }& w: J! }# ^( r15.2.1IDC变量) G- r! j; o- a0 a7 l
15.2.2IDC表达式
# p, N0 a1 _( ?- N15.2.3IDC语句
$ V1 B$ H3 G l8 M( X1 z$ _+ a15.2.4IDC函数- `# O& u0 p, W2 W" i9 ?
15.2.5IDC对象
9 y' }" e8 _' [1 k15.2.6IDC程序) n* Z7 F2 _% l! G/ L _
15.2.7IDC错误处理# a5 c" }' l' E, ~2 t' T
15.2.8IDC永久数据存储. ^6 N! p0 Y F$ H) \. C
15.3关联IDC脚本与热键2 m p( S8 I# M( [' n4 c* U* ]
15.4有用的IDC函数: r- ]9 R5 I$ X. x M& w! J
15.4.1读取和修改数据的函数- G7 M0 X9 B0 U2 @3 n
15.4.2用户交互函数0 A1 E5 x! R0 ~2 O3 I ^* ]0 {$ L
15.4.3字符串操纵函数
+ }/ Z! |6 p! Y B$ n! q- P& d15.4.4文件输入/输出函数. J4 Y4 Q6 p1 t) X% t s3 F, B
15.4.5操纵数据库名称 w4 d( z( @- a) L
15.4.6处理函数的函数 w5 ~: a2 J. {& C: f9 }+ `, A
15.4.7代码交叉引用函数
8 U4 z' [% {, e* }15.4.8数据交叉引用函数3 o% X3 D( ?" \# F
15.4.9数据库操纵函数) m, Q8 ?: m% p
15.4.10数据库搜索函数
) C4 V' |3 l: w. h3 c3 h15.4.11反汇编行组件! |& F; k$ f' K7 Z; E R% z
15.5IDC脚本示例: _) d0 `$ g7 E, g- {& W; b
15.5.1枚举函数
) W5 H( h0 `7 X1 r# X N15.5.2枚举指令; _- ?/ K/ E4 e2 ?+ n4 ^9 Q
15.5.3枚举交叉引用4 f% A3 R" C6 ^- C
15.5.4枚举导出的函数; ~/ M" c! c: w: c) y5 M( ^: T
15.5.5查找和标记函数参数+ Y# B" z% R" @5 x6 P0 C
15.5.6模拟汇编语言行为5 d3 U8 x- I1 J9 w
15.6IDAPython V4 ^; p2 R' p" {* e
15.7IDAPython脚本示例
: V# M+ D! F! P6 k15.7.1枚举函数
, y4 y3 w- W" l! U5 q% M D! S15.7.2枚举指令4 p* `- ~0 G6 O5 @
15.7.3枚举交叉引用/ e# A% t% l6 Z0 a0 ?& a
15.7.4枚举导出的函数
, f! k) a$ |& [: ^* S5 U: L15.8小结
$ N$ z/ B& p- H0 p% C. a" P
1 G: h% C) ?8 s第16章 IDA软件开发工具包* m$ j B. D: b! N7 @
# Z; ~. h w u* x2 f
16.1SDK简介
4 o" B, ^7 I3 a8 t, }4 z9 j9 d9 A16.1.1安装SDK# B' u" W. E2 L s) P
16.1.2SDK的布局
( j! J# s/ h! W$ M, c16.1.3配置构建环境* n- w0 u! q: D5 U
16.2IDA应用编程接口
8 ?. X: E9 k; e+ m; `16.2.1头文件概述
* W: F& O9 x" a7 ~2 }16.2.2网络节点
) \* S6 X7 i( C16.2.3有用的SDK数据类型6 j0 L1 f, h% F* }0 y- t
16.2.4常用的SDK函数( f5 D/ i+ I! @6 c6 \
16.2.5IDA API迭代技巧
! G+ O6 n1 H% D) Z. Z$ |4 @* N% p16.3小结8 L0 P$ l" z3 o; C/ }9 P' d2 h' ~
$ r* c# B, @$ q6 r. o第17章 IDA插件体系结构
$ m7 A( `6 {! g- D. L/ ~% ]
9 N% E- [+ z1 N17.1编写插件
, p9 v* u: B6 ]/ A* b3 u17.1.1插件生命周期# M8 J5 c5 k5 E8 P9 R4 ]
17.1.2插件初始化0 k0 ~% f; c7 K
17.1.3事件通知! l4 a8 I# S4 n) y( x1 Y. r# s4 Q+ j
17.1.4插件执行
- G8 O: ?* A& r17.2构建插件
& D/ `4 q6 l: m17.3插件安装
* W* T; w6 o0 W* g; t+ X6 A0 c17.4插件配置" c% \# \2 M) }* g- W9 i
17.5扩展IDC
6 n* V2 T+ t$ F5 ~+ N17.6插件用户界面选项) |; d2 z3 F" Z2 _8 [
17.6.1使用SDK的“选择器”对话框
# r% f T4 `- Z" s+ H3 \17.6.2使用SDK创建自定义表单" _3 N% t$ J0 X( `$ o
17.6.3仅用于Windows的用户界面生成技巧5 H+ m5 E8 |: v1 w- }2 f
17.6.4使用Qt生成用户界面2 r. X" m' m$ {4 A
17.7脚本化插件
/ o/ x5 e$ q( D* W' u17.8小结( M6 d8 j) l0 G1 S
) c2 Y: t/ T9 S6 o4 e0 I% J# P
第18章 二进制文件与IDA加载器模块
; g4 `' k1 {' P) r( g0 q( i) N H1 W6 n7 S, j- V, `( A
18.1未知文件分析
2 N: Q5 H4 T. e18.2手动加载一个Windows PE文件6 Z% g$ c: Z* |4 s" G! Y4 I
18.3IDA加载器模块
4 L2 E; A8 B: O! H& x18.4使用SDK编写IDA加载器
4 X% q! W) @1 A% Z# g i18.4.1“傻瓜式”加载器
5 x) m: p: W. }4 c18.4.2构建IDA加载器模块
3 u) U! C- g- o8 z- R+ s6 z18.4.3IDA pcap加载器
+ f9 o' E0 u3 Q6 S% W7 `18.5其他加载器策略
: R' y5 y" a. k# g% a- J3 C18.6编写脚本化加载器 ^' Q j5 Q( t5 a* D
18.7小结
. x. L3 y' p: E3 f6 q
7 q6 ~0 z$ ?' |/ i* {; [5 @第19章 IDA处理器模块
9 [5 c6 h1 T0 @8 y6 j
2 c. |: y0 ?' `) C' I19.1Python字节码
) R. k- W! T4 O! `+ }19.2Python解释器
& D' I/ i3 v0 H5 R+ B19.3使用SDK编写处理器模块4 R+ C& u2 D* F1 B. l
19.3.1processor_t结构体
2 R7 h. n2 T9 S/ f2 L. N19.3.2LPH 结构体的基本初始化5 R! Q8 `6 W4 x" n0 J) y
19.3.3分析器$ R3 Q7 R [: N% _! t* ^5 ]2 `
19.3.4模拟器
1 k' c4 {; o. R! y( N8 C' k* P' V" O19.3.5输出器
- m& x7 T7 B- l7 \3 N- C$ o19.3.6处理器通知* r$ n. {- M$ r/ w+ l& [) S7 f
19.3.7其他processor_t成员
6 \; U, Z. z" G8 P0 h19.4构建处理器模块
3 `4 p) C, l' f7 o4 V19.5定制现有的处理器
4 m2 F$ g" G. X19.6处理器模块体系结构
, X" m1 `2 x1 q2 z8 M19.7编写处理器模块2 {) g" |& a& U0 e0 V! M0 k
19.8小结
# f+ L5 D. f/ e" i6 T/ {! O
# A, r+ ^' B/ g第五部分 实际应用2 R; {8 J* Y' P: H I! G
4 ^& S* D) Y/ {! m第20章 编译器变体5 e& ` d# [: W8 `
5 U, w- p3 N$ [ C! L# s1 X20.1跳转表与分支语句
) L: e4 }6 ?' X% ~6 [+ {: O' O20.2RTTI实现9 K: f# f0 Q% O0 v: D
20.3定位main函数
- z0 F, {, _# U" }& Z5 s20.4调试版与发行版二进制文件
$ v2 Q0 x9 h9 K+ B20.5其他调用约定4 z% m& _( X I' |9 c; S/ d9 M8 i
20.6小结
/ F' S1 i2 I9 S( z2 E" T
H4 k% I* U, k; }0 q第21章 模糊代码分析
?0 r: M% q# M6 t+ V
$ }% g, ^% }4 l) E, W5 P! s3 [21.1反静态分析技巧$ e3 ^9 `. o# g
21.1.1反汇编去同步 u/ b, u1 c$ v3 x) d, K
21.1.2动态计算目标地址
. n7 F! ]' n& `# B4 m) y4 U21.1.3导入的函数模糊
/ r6 C7 b! r" w8 f* X/ h6 @8 I21.1.4有针对性地攻击分析工具: u% r p& E7 l5 ?; [0 d! N! `
21.2反动态分析技巧- } r, G% D) [/ d2 M
21.2.1检测虚拟化
# ^1 k3 ^. k& Z9 v. m6 W3 n21.2.2检测“检测工具”
8 b( J9 ^1 B3 `9 q$ n& t7 V21.2.3检测调试器
+ F! F" f3 J: t: o- W7 W# @7 R$ @7 s21.2.4防止调试+ v+ B# f7 ]6 p n! {$ y, k
21.3使用IDA对二进制文件进行“静态去模糊”0 y- J# f- O* u
21.3.1面向脚本的去模糊9 W N. S: u- x% u: w
21.3.2面向模拟的去模糊
( l. b$ A* c# _, f' T, t( I21.4基于虚拟机的模糊: }1 J6 U* T* a9 l H
21.5小结9 K4 q% Q- x6 ?0 h" w3 v Y
2 Z: X, |' Z; x5 f3 {
第22章 漏洞分析# |/ |" _# I" H |
9 K. k% |5 r8 ?: E9 B, V- A
22.1使用IDA发现新的漏洞/ q/ I- {% Q& ~" e' l# v5 ]8 z
22.2使用IDA在事后发现漏洞
' e$ k% y/ H4 D* ~$ r! a22.3IDA与破解程序开发过程
( `, k9 g& `3 v, ]1 J2 n! |22.3.1栈帧细目7 ?) q r/ p& z; C
22.3.2定位指令序列& C$ B9 r) N) d
22.3.3查找有用的虚拟地址
7 d$ k) r3 ?' T22.4分析shellcode
5 R. U# Q: Z& A22.5小结
( e6 q$ e# B* D; a7 p" p0 |
/ S7 U, p$ d7 q$ d6 v8 m% j; i& S' J第23章 实用IDA插件: v6 Q ^9 e8 @
; J; ]7 t' {9 X+ a2 ^23.1Hex-Rays) q8 h. ?$ k/ Z
23.2IDAPython: Y9 J7 S+ Q# S
23.3collabREate
: i8 Z/ [ N% ?" z: m23.4ida-x86emu3 v8 I3 F: N$ [+ }( K( P5 y
23.5Class Informer
+ q' m- a+ E% Z& O23.6MyNav
2 o6 j7 ]; u4 v* G0 |23.7IdaPdf( x+ ^7 h# \9 m e$ C
23.8小结
% z% ?$ I/ c% ?. v1 w: o3 r5 y' H' Z, z) c3 j3 U
第六部分 IDA调试器
& I1 T/ f6 S+ A. a
+ m4 g! E" X8 i- X2 X% ~: H第24章 IDA调试器
& _: R( i' w, R
0 Z5 Z5 K) U( z0 l0 G% c24.1启动调试器
: C) j! y1 H2 C% b3 L& H24.2调试器的基本显示0 s9 d" l0 z6 ]: b% }; K
24.3进程控制/ n* b0 _, u+ p7 x
24.3.1断点6 }: A/ j& n, O( h" j) N3 h# u) L
24.3.2跟踪
' u0 U7 f5 N6 m4 f. h N; q" L24.3.3栈跟踪) ~! V4 b6 `* V3 c; ?4 w
24.3.4监视
/ @5 G- I3 c) q! s+ t0 i24.4调试器任务自动化
9 s( }$ m# c& f4 W24.4.1为调试器操作编写脚本
7 f g, j6 T4 B6 M4 U# l$ ~24.4.2使用IDA插件实现调试器操作自动化
v" y- B0 G3 e: G. i/ w+ k24.5小结) J- {- }# U. y0 B# A0 q3 l
: ?! U0 |% h D: |0 F- Y; |第25章 反汇编器/调试器集成
I+ s* e. B" _; S* p( k
( I0 ~3 c& ]* D, X25.1背景知识2 b- k4 I7 V) o$ A4 s" l
25.2IDA数据库与IDA调试器0 ?. y2 x4 F0 ?+ [
25.3调试模糊代码
% l: P; d! {2 _" `& @& v25.3.1启动进程5 \! l$ [+ s: g6 d: e6 i
25.3.2简单的解密和解压循环& |) v: o3 \- f- j
25.3.3导入表重建/ P3 h' L& g- X* P
25.3.4隐藏调试器
* B: `/ A' l: d& ^25.4IDAStealth
- o5 ]7 r5 }2 ~, l0 B( b: A25.5处理异常$ w% H; o; G( K* h7 t+ c' V
25.6小结
`' [7 \3 m# _& V6 i0 Z8 n4 E
- d: _! b1 s( a, y9 K! M( j; l& {4 m第26章 其他调试功能
+ J( t R, D: ~3 s5 U& y
! [- ~8 U7 l5 f( x& ~# |, O26.1使用IDA进行远程调试" c( S! p: m9 c" }3 S8 D7 J
26.1.1使用Hex-Rays调试服务器' P3 q* L0 U$ B- m3 _, T- V* L6 [
26.1.2连接到远程进程' b% n2 w0 S0 `9 G8 \, a! r
26.1.3远程调试期间的异常处理) I# a0 o' ^4 u i
26.1.4在远程调试过程中使用脚本和插件
' f1 X/ S' D- k+ h; i26.2使用Bochs进行调试9 j. V' |" a H( U
26.2.1Bochs IDB模式
! Y+ P0 A/ q4 f- j0 e26.2.2Bochs PE模式
9 s5 X4 _4 ]6 Y9 Z+ U26.2.3Bochs磁盘映像模式
; V' E/ k, {& N, T2 K26.3Appcall
& }. M% k' m5 c26.4小结6 d& h. U" J7 _- W& P0 I. [
% z7 Z* R' H1 r9 ~9 Y) f: k2 s附录A使用IDA免费版本5.0
; N! q- o' |& r( s4 O+ @. R
3 v3 r$ b7 f- i# Q, f7 M/ J G( @: a附录BIDC/SDK交叉引用
+ D% X, b" q8 V% U& P( ?, I2 L' G2 t" ?+ F
|
|