|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
$ P" e* P7 t4 E% [! l7 j
6 X$ J/ y3 K3 Y0 I4 \书名:《加密与解密》(第3版)5 V" A: ?7 C% A! u( J4 g+ }
作者:段钢
9 {, L& g& l7 \) w出版社:电子工业出版社2 o. D, q# y. A
出版年:2008年7月1日(第1版)
, G4 @( R: L5 G, z: ^- I定价:59.00元
9 P0 B) C, X6 o装帧:平装+ {8 N( s' b3 G! Y
ISBN:9787121066443. w: ?6 V m% {9 E: x; [ m5 a V
M( s; A9 t# r) u0 R* s2 U8 [购买链接:+ g( J- v: f" g; \
/ F$ K2 e) F2 Z2 e
# U9 T& e1 z9 _
亚马逊(Kindle)-> 传送门5 d8 P! E, y& M3 V" n) d% g) z
9 S4 x9 V8 v4 u- I- K
亚马逊 -> 传送门
& h$ j. j: E0 o+ v I! b
) J. L. K* h! n- E% c' j当当网 -> 传送门$ P6 u. f- n2 e! H) {, q
. O& S6 d, R: z京东 -> 传送门
' _9 q @5 l6 \
6 l3 x' H0 ]/ m, F2 R天猫 -> 传送门8 ~' [1 J! V- m) `8 f
2 u: U( K+ C! }6 ]7 d
) @: n* L. q! N! S( G; I- G内容简介:
2 S) @5 Y, f6 p
. Q4 f& u% | w( R8 Z: n5 D. v, j" I
3 x; D+ }+ X, f% y i《加密与解密》(第3版)以加密与解密为切入点,讲述了软件安全领域许多基础知识和技能,如调试技能、逆向分析、加密保护、外壳开发、虚拟机设计等。读者在掌握《加密与解密》(第3版)的内容,很容易在漏洞分析、安全编程、病毒分析、软件保护等领域扩展,这些知识点都是相互的,彼此联系。国内高校对软件安全这块教育重视程度还不够,许多方面还是空白,而近年来许多企业对软件安全技术人才需求量越来越大。从就业角度来说,掌握这方面技术,可以提高自身的竞争能力。从个人成长角度来说,研究软件安全技术有助于掌握一些系统底层知识。, o" D' J) a4 r; ?' {/ U) L1 F a
& }! B2 J2 R) ]《加密与解密》由看雪软件安全论众多高手共同打造而成,读者将从《加密与解密》(第3版)中获得许多极具价值的技术,是专业开发人员不可多得的一本好书。9 i" p. Q0 L q* }' m3 P. n) c8 o
& H( t C$ {% F' A) U
" G; N2 u" n) D% @' R: v/ _目录:
0 k, D7 Y1 C5 y T! I& k
0 Z. X& D' D; r$ ?1 O o3 J7 f1 O
+ u) `' S6 x8 N8 E第1篇 基础篇
) Q9 C: n- c3 J. |8 S+ }; U3 i" `0 q' X2 O
第1章 基础知识
+ \3 E$ O( [$ ~5 b# L- V }
, Y) T2 L1 Z2 y5 Y) e1.1 文本字符( F- a% P/ z. C5 _6 |
1.1.1 字节存储顺序2 h2 I, z0 W' }8 H. ?( y% ~
1.1.2 ASCII与Unicode字符集1 K4 f' O U V( K
- j) i5 W/ y" s7 ?
1.2 WINDOWS 操作系统1 {3 @1 Y4 Y8 J/ w% ^/ F& N
1.2.1 Win API简介
- P% \+ J" {' S% P7 t9 q1.2.2 常用Win32 API函数
8 C: s7 p: E0 R$ {, `7 m5 Z* W- G O1.2.3 什么是句柄
; M0 f s6 s3 l8 G1.2.4 Windows 9x与Unicode
* P& V0 ^4 @3 ?0 W8 |" C6 z1.2.5 Windows NT/2000/XP与Unicode u2 O8 i8 }3 {# x& L
1.2.6 Windows 消息机制$ Y" h0 c% N3 {6 H3 L* P. R
n; [: D2 C& i5 @ }
1.3 保护模式简介
4 ]; D; a$ o$ Z6 o9 j+ V( B1.3.1 虚拟内存
: T3 R3 z/ i& y8 M& p1.3.2 保护模式的权限级别
0 W# Y% [3 B" N& R5 l1.4 认识PE格式
( d8 M: u3 u/ V% B% e. O( g7 B: T7 t% L# T
第2篇 调试篇2 ?' P1 ]9 Z% |5 ?
6 h2 ]; c3 p; w1 ~第2章 动态分析技术
1 [( s2 j! L4 \, d5 m/ |0 v. ], l% e: e4 i
2.1 OLLYDBG调试器6 U3 k: o6 S" C' d
2.1.1 OllyDbg界面
" T9 t+ | D5 {" I2.1.2 OllyDbg的配置- {" Z: O8 m1 W2 v) _: _
2.1.3 加载程序, A3 l8 Q) ?' ?$ `0 y1 e
2.1.4 基本操作9 l, e0 z; B7 L$ s# _
2.1.5 断点
# ?5 X7 c; L2 j% _& |8 b2.1.6 插件
3 d$ V4 c2 V T q, C& z. y$ w1 x2.1.7 Run trace2 B$ J* m0 G9 U& X
2.1.8 Hit trace" d4 }+ U4 k, n7 f ?- |
2.1.9 符号调试技术 n: f. r3 ^" t c- F( R
2.1.10 OllyDbg常见问题
, D4 B9 V2 l, i& d6 e! c# q9 T2.2 SOFTICE调试器, Q/ t1 [+ m. I1 k# ~* g/ f0 S
6 D7 T; d* k8 L M' A) X% y! `
第3章 静态分析技术* X ?* q" ]; a3 k( {, S- l- u
6 M0 S! S1 C1 R1 g7 g3.1 文件类型分析' ?) d) ], o& d2 G1 q4 b4 T0 ^1 j$ ~
3.1.1 PEiD工具
; m* L5 H* L8 D3.1.2 FileInfo工具% S% r, G6 U+ y- [
: a: s6 V: i7 Q. o3.2 静态反汇编9 b% J; u0 d8 e. W* d& }% k
3.2.1 打开文件
7 ?* I" d; W. w t' b3.2.2 IDA的配置
8 I1 ~: C, z3 u9 Q3.2.3 IDA主窗口界面1 L& v, r- n9 s3 W Z& D: v
3.2.6 交叉参考( v2 D7 T% \+ N) w' W
3.2.7 参考重命名
- x: \: X! _" C3 c3.2.8 标签的用法. ^ x* L. W9 J4 Z+ ~2 Q6 L
3.2.9 进制的转换
s! s5 r+ y! j2 Z& U3.2.10 代码和数据转换8 ?0 _+ N u. e. j$ t! Q
3.2.11 字符串
3 ?) x4 { H. j4 h7 M3.2.12 数组( |. X+ n# F% X7 _3 O; S* G) m; w
3.2.13 结构体
V- _. `' x1 z5 G# K3.2.14 枚举类型
6 S: D: i, r7 j& q3.2.15 堆栈变量: I# H+ ~3 p, f: M3 `- }2 |
3.2.16 IDC脚本% x9 k# S' U0 l* G, R4 z4 Y+ U9 a `0 |2 E
3.2.17 FLIRT
9 Q! }! L7 z6 V9 }6 q) _" J3.2.18 插件
1 r2 @2 ~' L/ l8 |$ n$ m1 M3.2.19 其他功能+ `. l$ ?1 s9 H2 ?' R/ e; ^
3.2.20 小结
. k' [& P! Z+ \" d3.3 可执行文件的修改0 L# R$ M" Q! @8 L! Q
3.4 静态分析技术应用实例2 N( X B( ^$ b9 h) K4 |
3.4.1 解密初步
% {9 n7 J* u. u) ^3 S' ?3 R, p3.4.2 逆向工程初步: b1 G! M1 y; c7 N: y- t0 \! u5 O
0 p: v# j8 W9 {1 W
第4章 逆向分析技术4 ]8 F# O' O* a1 o6 f+ y
/ q5 F! D: A1 ^9 F+ }4.1 启动函数! P* i V3 C2 Q! D7 F$ {! k2 Y
4.2 函数
}* T8 p9 e' Y5 B4 G4.2.1 函数的识别
5 ?3 S! ]- d+ F; [8 Y7 U4.2.2 函数的参数
# F, V9 Q0 Z3 Y% D; W/ @4.2.3 函数的返回值, e$ P; A, s4 C" X6 v7 ?8 S
) r4 _5 F, J3 S1 b* n$ z4.3 数据结构/ X/ C& v0 s; m0 \, F' E4 W. v
4.3.1 局部变量
4 h; t3 k. K5 d" v4 ]$ O' K4.3.2 全局变量! e$ y" @) L; n" j/ d, s$ A
4.3.3 数组
( C3 K1 Y: X3 X4.4 虚函数$ s6 \" F4 S$ F) B# q
4.5 控制语句' P" L4 X6 U0 ?6 d. A# |. l' |
4.5.1 IF-THEN-ELSE语句
# j q2 G1 d H8 ]$ K4.5.2 SWITCH-CASE语句
% s O1 X% d6 {; Q0 H% S4.5.3 转移指令机器码的计算1 ?% R* X& N9 J! s- Z( R
4.5.4 条件设置指令
' a" u' p$ y2 `4.5.5 纯算法实现逻辑判断
4 K8 \. L. \( h3 x( M3 C4.6 循环语句5 O9 Y0 Y4 w, \% B9 o Y0 S$ l" z3 S
9 N& @+ W; ~: u- ?2 I( g( K* f1 `4.7 数学运算符
4 V2 e" `' z; O# F. J4.7.1 整数的加法和减法 E0 t5 T: g! o% ], X( r f
4.7.2 整数的乘法
& a* \+ D1 h$ P% G: d4.7.3 整数的除法
3 _. U) a2 ^& E3 @* u
* y5 `' M( f/ q3 |, c" R* |4.8 文本字符串. K6 B( D6 Y1 \0 i* ?; d8 I
4.8.1 字符串存储格式
8 h1 x' R- @; V- m4 E: z4.8.2 字符寻址指令
! Z! D2 B1 F- _) u7 z5 q4.8.3 字母大小写转换
( O+ t. I) g0 v Y4.8.4 计算字符串的长度+ W4 N& n& \9 r
4.9 指令修改技巧+ m5 _" e$ |' b
+ E, J, c, `: p" `3 W* D- h6 p第3篇 解密篇
6 K5 I ~' j( e+ c' K8 R {" D
0 S. Z5 u$ ?' v, R, O第5章 常见的演示版保护技术& l6 G5 }$ G: b
V& M1 f/ G6 [5 i, D5.1 序列号保护方式
+ y; [! f7 q" ^) t4 w& x5.1.1 序列号保护机制
8 H# N# G6 v! W& r: n" x5.1.2 如何攻击序列号保护
9 t1 C$ ~: h4 l1 A0 }3 q5.1.3 字符串比较形式
8 R7 d `: o. E8 v5.1.4 注册机制作
* j- t8 |) U, Y3 `& J1 J5.2 警告(NAG)窗口* Y+ W" p/ B% }, q
5 p% J8 t5 M# C( X! R) G6 W5.3 时间限制
& D- a" r; {; Q$ D5.3.1 计时器- J; t; r6 ?' f/ U$ |$ j6 X& G
5.3.2 时间限制+ Q: S* S- s) ~* O- v: ^& M
5.3.3 拆解时间限制保护
2 f7 R1 Z( B. f+ C* }! e' p% t$ Z' F+ m- N8 H; g {
5.4 菜单功能限制8 a9 o: P0 U r& s
5.4.1 相关函数" T4 Y7 Y. T* O' `
5.4.2 拆解菜单限制保护; _/ v3 k/ e) G
3 F' y/ f z2 U5.5 KEYFILE保护
9 K0 X7 G. |3 N5.5.1 相关API函数
. w$ \! O* j3 X- F+ E% r4 o5.5.2 拆解KeyFile保护/ y# d3 ]! k) ` k; F, X9 R6 b& V
{: J& m9 X& t5 |; ~. ]& N5.6 网络验证7 w, ]+ w1 @+ ` P5 g3 p% Q. t$ O
5.6.1 相关函数
/ L5 G: g2 O2 F" W y5.6.2 网络验证破解一般思路
S+ G7 @* B5 L1 z& R5 C. N" ]$ k
5 P7 ~+ Y) g9 J1 N; v8 h$ S5.7 CD-CHECK
: ^, n9 T' F8 C* |" q1 C/ i# ~8 P5.7.1 相关函数3 n& a8 y7 U# R# g, G9 }
5.7.2 拆解光盘保护9 P/ I9 w5 ~/ z& @- u
4 h+ _( O7 b: g: U( G
5.8 只运行一个实例
) d! j* G, D F, I! I* @# v5.8.1 实现方案" `& n% f8 z5 H) v" A
5.8.2 实例& r1 \/ ?% d. ]; ?- T. v" e
5.9 常用断点设置技巧
5 X7 m+ [. i" @2 T6 m) Q* a0 w
; s% t3 x. ~- c# e( {第6章 加密算法% ~3 C! u' K2 w# W4 W/ l
$ s- I# {( p$ O3 [6 X* s' _
6.1 单向散列算法
+ O0 |# V$ \/ z& l6.1.1 MD5算法4 P+ ~2 x1 J' [, w$ f, j( l
6.1.2 SHA算法1 M' @) E/ h" H8 f4 r; s) K
6.1.3 小结9 f* K0 _0 G I& k
, d( T1 I. A: S: g6 a/ l
6.2 对称加密算法, v: ]6 u" v5 b) O/ u, Z
6.2.1 RC4流密码
8 b! m5 u$ W0 z( w5 s1 `6.2.2 TEA算法
' U+ W `0 ]6 `) b3 _2 C6.2.3 IDEA算法- B3 c( a) L5 V: M! C- u4 J! k
6.2.4 BlowFish算法
6 |$ p, j3 [3 v$ B" b( v6.2.5 AES算法6 K( H ?( M6 V3 o" @+ N
6.2.6 对称加密算法小结3 l& g3 C) A" e6 ^
% Y7 Q. G9 }: J7 v& j6.3 公开密钥加密算法: s) {* ~/ n# g. G
6.3.1 RSA算法& q# |1 z; Z9 ?0 G
6.3.2 ElGamal公钥算法* A0 J6 \* n- K' w
6.3.3 DSA数字签名算法. A/ h. A9 U0 g5 |. b
6.3.4 椭圆曲线密码编码学; o! A3 F& V7 Y4 v# z; I
6 p: h4 ^( Q" m6 [6.4.1 CRC32算法: ~3 j4 L6 ^' B% I, v! f- o
6.4.2 Base64
) @6 K, w9 a/ t+ U1 [6.5 常见加密库接口及其识别5 a3 q2 x3 U" n4 X# [) c
6.5.1 Miracl大数运算库; a* | W4 \, ~; N9 X) G V* q
6.5.2 FGInt" B3 i# }/ a! Y+ t3 m
6.5.4 其它加密算法库介绍
4 X+ A! Y" ^! k4 W
9 z+ ~& h6 }8 }* F& L第4篇 语言和平台篇
2 H, i' [0 y3 Q. U
" T D7 C* P K. c3 {( y第7章 DELPHI程序
7 H5 O( |( @5 X# P" x/ L$ W4 u1 N, k$ n. P9 v f; U4 U
7.1 认识DELPHI
9 _ T s6 h* g' Z7.2 DEDE反编译器# }( ]9 G3 n4 U( p* ?+ a5 L
7.3 按钮事件代码
% k' @0 d: G9 j a" A7.4 模块初始化与结束化
# o9 p* \! q7 A! g# _4 p+ ?; R
/ v& d+ A/ Z A* {! d( `" K( G第8章 VISUAL BASIC程序2 X# D; T/ r& s' R% |
/ [5 O8 d5 R9 u+ C [9 _8.1 基础知识
. V: |, X: z2 K* G. L) E' G7 ?3 |8.1.1 字符编码方式" z1 e3 E7 C4 n/ {. B( h
8.1.2 编译模式
$ D& l- @0 I" P$ Q( a5 v3 C
6 Z* s6 u" S( E/ ]1 U3 Q8.2 自然编译(NATIVE)
. G9 c/ E/ V Z+ n/ j. `8.2.1 相关VB函数. ~1 c# O' d" w+ j$ s- d, ^8 C
8.2.2 VB程序比较方式
" q, g' l0 E! `, |, Y# q
- R, ~3 |7 M/ C; N, h8.3 伪编译(PCODE)(cyclotron编写)
" j% O+ V$ I% Q) O. I8.3.1 虚拟机与伪代码+ c1 ?: `: M; W0 _3 H# A0 O( D
8.3.2 动态分析VB P-code程序2 U! U( T3 R2 z4 ^
8.3.3 伪代码的综合分析1 k- ]! h8 F* O6 U
8.3.4 VB P-code攻击实战
) u0 Z! `# P. D( \: @% F" V
$ A0 M2 ]% a4 c) H第9章 .NET平台加解密(tankaiha 编写)+ G! w9 @! C w+ T V$ X
3 `9 Z' p' s4 G2 a! \
9.1 .NET概述
7 x! ]* D# Z) |2 ^/ l9.1.1 什么是.Net2 F* y9 j& D& M L
9.1.2 几个基本概念
2 u$ l6 {- ~) H- I# x* W9.1.3 第一个.Net程序
, b& K9 [* V# D, d
D% f' J+ g# P, R' U$ w" H9.2 MSIL与元数据1 s1 Z2 y% f$ y* _) ]2 l4 y3 ^( ]
9.2.1 PE结构的扩展2 ?" V; q, F5 H! K9 q$ a
9.2.2 .Net下的汇编MSIL
- x/ V! d( Q! d, \9.2.3 MSIL与元数据的结合
( s6 \/ u. c; N+ g+ a
( @: I: N0 q& x! }9.3 代码分析技术2 j- P* T/ K( A6 O5 O" \- U
9.3.1 静态分析 N2 L8 ?( D0 Q2 L0 I; k% l
9.3.2 动态调试
- k) |) ?8 _3 V+ e9.3.3 代码修改/ x. B/ g$ K' ^" g
) j8 s/ i5 R0 C$ [( y
9.4 代码保护技术及其逆向
+ k! S3 _& g% E4 e0 I$ a" Q9.4.1 强名称
! Z0 Y" d$ K( p8 f( G" c4 \2 \$ p9.4.2 名称混淆
/ i# z3 i. R% s2 [2 `& @5 `9 D8 l9.4.3 流程混淆( j0 I, G8 R% j a9 ~
9.4.4 压缩& ]9 X( k3 w4 r/ E) ~
9.4.5 加密: T5 [/ Q- L" H/ C' ]
9.4.6 其它保护手段
9 s: X8 _6 ]- M
* O9 d3 A( ^1 B9.5 深入.NET! Q$ ]% D. x3 E+ g1 }4 p$ D' z
9.5.1 反射与CodeDOM
y4 _5 _+ @9 n8 ~8 ^# [' ?9.5.2 Unmaganed API5 ^' T( \8 @: a% V% L' D3 V
9.5.3 Rotor、MONO与.Net内核- |% p G0 b3 {5 S
' c6 \! \+ v; O9 b第5篇 系统篇2 S; D. t- }$ g
* O$ v3 }- ^" M, O I第10章 PE文件格式$ t' t( b/ a5 n j
( [/ O b4 d. X: Q/ V6 `
10.1 PE的基本概念3 @ F" L0 W R
10.1.1 基地址
" t, K% `* Q. f/ c6 w* V10.1.2 相对虚拟地址& o) t8 g( u: C, a; A q
10.1.3 文件偏移地址7 m1 f4 {* u' ^4 ^
10.2 MS-DOS头部' p: b4 S3 `( X7 k% v1 y3 {' P' M9 z1 D
" W. ]( a/ Y* Z$ d
10.3 PE文件头, I" T9 ~* }! P6 A6 `4 |
10.3.1 Signature字段
1 G; h: G: Q: e0 k2 f) J10.3.2 IMAGE_FILE_HEADER 结构# q& k3 g, P C- l1 G
10.3.3 Optional Header" f& y2 R# z3 l: @
! i. v" ]( H3 s0 G10.4 区块9 @ p. m f" c8 d* n
10.4.1 区块表
! Q) S' H: `6 p, U6 K4 X10.4.2 各种区块的描述
; e5 J+ u% K2 U" A# n10.4.3 区块的对齐值& B+ \ ?% `. S, k: g& O5 |
10.4.4 文件偏移与虚拟地址转换
& O! y+ a! C2 v6 t' R# c2 T
( R- u6 `2 f8 d" I10.5 输入表: o r- C- G* W, b1 b; \
10.5.1 输入函数的调用
, f7 [4 C% ?. j" K+ a" }10.5.2 输入表结构
' r# y4 N ?. x6 R10.5.3 输入地址表/ t0 [ m* I4 q! P
10.5.4 输入表实例分析" P1 x) U% ^) b+ a @0 [
10.6 绑定输入6 p2 x1 H% J3 Y7 d8 }. u
+ y. Z( Y% C) p6 {* t: L10.7 输出表! _3 s0 c, `( Z2 d
10.7.1 输出表结构
) L+ ^7 d) g; M& X3 P10.7.2 输出表结构实例分析& W$ q' U; F6 T1 s
' J, D1 ]- p) b. Y$ Y
10.8 基址重定位2 G+ W* \1 h9 W( n: j9 J2 a% |
10.8.1 基址重定位概念0 L' O) q8 L4 ` s0 u- C7 e
10.8.2 基址重定位结构定义
! K+ D* l$ F* w8 i6 U9 m10.8.3 基址重定位结构实例分析
# d2 [& d4 l& I* P3 r8 C
: h' }% l0 O+ G/ u C0 H10.9 资源; u3 M# {0 I' s. I
10.9.1 资源结构
* j c, m7 b: p- @! U& L10.9.2 资源结构实例分析
; k) D( m- W/ S) u10.9.3 资源编辑工具
$ {6 N9 o* \' `' @4 `7 G. o, t$ a" u10.10 TLS初始化$ u0 F+ t N, C8 |: A6 A8 r3 W( u
10.11 调试目录3 K7 X' ^( h. T9 N1 U! O4 t" a
10.12 延迟装入数据% j6 T8 Q3 G m; H2 S
10.13 程序异常数据: D9 y/ h8 C8 |7 o3 Y
10.14 .NET头部$ p7 T; R, `* y* T) x) x, @/ m
10.15 PE分析工具编写$ w; M. f3 @2 E. E& J
10.15.1 文件格式检查0 U$ b/ ?8 n d% p- C% R6 d
10.15.2 FileHeader和OptionalHeader内容的读取* B& j$ }2 @; h: Z, u
10.15.3 得到数据目录表信息) x, q) C) W. H( K8 B* a# I6 f
10.15.4 得到区块表信息
& K# @# ?0 g! u/ o/ ]0 U$ k* a10.15.5 得到输出表信息
* U3 t" U6 Q% y$ F- q! F10.15.6 得到输入表信息
: A: ]. P* M. g. s
}7 z- Q0 h$ s3 Z( u) V第11章 结构化异常处理7 N" i) S8 A/ T# Y" D4 \4 x1 D
4 o; A9 Z+ M# O/ b y. `- Q
11.1 基本概念
0 }6 P4 Y. L1 ~2 U. E5 a5 u t$ a11.1.1 异常列表
7 b- {9 f( t. |7 H) e11.1.2 异常处理的基本过程
! Q2 _3 @8 x3 r5 h$ Y11.1.3 SEH的分类: o9 X$ M+ C( o, }+ g
% q/ h4 _# m+ Q! x/ X
11.2 SEH相关数据结构0 _9 v$ {5 W. |
11.2.1 TEB结构
# H- w3 b. ]* Q% ^11.2.2 EXCEPTION_REGISTRATION结构 m8 G" W/ B% p& M* U( T7 Z
11.2.3 EXCEPTION_POINTERS、EXCEPTION_RECORD、CONTEXT" V: u1 T. r5 T9 X- k8 ]3 E
11.3 异常处理回调函数8 s; T. x( }) f6 |
& m; E4 W7 N0 A第6篇 脱壳篇
i4 k2 N$ F$ H# z$ {' ]) S) R8 @( r2 h. W0 `' c& i- p
第12章 专用加密软件
5 }" I: z/ L1 {0 _
7 a% G4 ~* G4 y) q7 m' @12.1 认识壳
" m8 z' {& I* J t g: ^12.1.1 壳的概念
+ E Y- U( N$ i" X% y. Z& B! s* Q9 N, F; N12.1.2 压缩引擎
# h9 e6 d6 Y7 ]% R12.2 压缩壳
! R" p/ c) P! L" P) b* S12.2.1 UPX! M- c" H8 b) y4 |2 K. H3 C& E
12.2.2 ASPacK
- I7 y4 {4 U) k3 K0 ^' ?7 A/ ]/ | j; B- F8 f$ w
12.3 加密壳
" N8 G! m4 |) Q2 L12.3.1 ASProtect6 D3 p) t- q$ v/ V1 s" h _6 e* ^' d
12.3.2 Armadillo7 N/ k- v! b7 C6 |
12.3.3 EXECryptor: d# T& s1 H6 O) l# H8 m/ u
12.3.4 Themida
7 c: {" w3 R K- I7 Y5 l, ^9 A% i2 A+ X# G
12.4 虚拟机保护软件
; h4 V4 ]: F6 {8 w12.4.1 虚拟机介绍
0 Q8 N8 ~* I/ j( \9 B1 A. @# l$ ^& z0 }12.4.2 VMProtect简介7 I5 P# g# x& v$ |) l
4 a2 u" }0 U7 _; [" S4 C
第13章 脱壳技术
; ~8 Y2 e" b* q7 S# {) C
U2 f4 A& l: @- u13.1 基础知识4 [5 ^. a C2 Z, `' o3 C1 W" e2 r
13.1.1 壳的加载过程. H8 _7 Q, m: F! y2 ^9 R
13.1.2 脱壳机" Q- O. e1 o4 ]( b
13.1.3 手动脱壳
% A) B! e3 ~+ O7 y( S
0 y4 g* w2 j7 ~, W7 o! j" C: ~13.2 寻找OEP3 B# ]7 x: n: L7 x, ]+ Z
13.2.1 根据跨段指令寻找OEP
# q$ F; e6 W. w: Q, o13.2.2 用内存访问断点找OEP0 E/ s8 r+ k- E0 y
13.2.3 根据堆栈平衡原理找OEP
9 Y6 `3 u5 f1 _13.2.4 根据编译语言特点找OEP7 t5 L& z" h2 @ x/ N
" p0 Y/ I7 R ]% O13.3 抓取内存映像
5 a. Y3 y& M6 s' P' M13.3.1 Dump原理" i; W1 w7 ~0 o
13.3.2 反DUMP技术, a0 u; Q8 V; D6 F: D ~
' I" h0 z4 |8 I) B, i
13.4 重建输入表
, d' @/ |+ V! B/ b3 N& O! J13.4.1 输入表重建的原理8 B8 V9 k6 S" m, ^! k( d9 a8 `+ [
13.4.2 确定IAT的地址和大小& v1 U& z0 ~# X5 l: o
13.4.3 根据IAT重建输入表
: d" v, P$ g' [13.4.4 ImportREC重建输入表
, R. a- }! M( @: K5 F4 K* D7 Z13.4.5 输入表加密概括
$ x! N, r, g3 s& Q8 D, j
. h/ `/ v: T. ~) i m* [6 F& g13.5 DLL文件脱壳 V$ \" E, ], n1 }# T
13.5.1 寻找OEP
4 N8 p, }: B; i7 G3 z* [1 i+ }/ ~1 R4 |, D13.5.2 Dump映像文件) x7 z/ a$ k& Z3 m6 ~7 C* a6 P
13.5.3 重建DLL的输入表
. b* e! {8 ~1 n4 G k13.5.4 构造重定位表
7 S+ D# {: ]1 q) r13.6 附加数据. r* l9 D- R: ~
13.7 PE文件的优化
8 f) J" F+ H2 z1 f13.8 压缩壳6 z) |! m+ R% q# m7 v( R
13.8.1 UPX外壳
# l3 a& f9 m! H9 `0 ]13.8.2 ASPack外壳
- U) G* i8 u9 C* v13.9 静态脱壳
5 g# U7 Y4 B8 u+ Z13.9.1 外壳Loader的分析1 g2 t! D+ B5 d9 z- H. k5 } y
13.9.2 编写静态脱壳器
* |# w$ p h( h3 R6 ]4 y13.10 加密壳7 S7 W. N; `9 l1 i
13.10.1 ASProtect! w% A& s) X7 k) ~1 g' H
13.10.2 Thmedia的SDK分析
! d& l9 C8 p6 s3 D% Z
& K+ N- P# Y* v5 [4 x* ` K& c第7篇 保护篇4 d% ^! b; Z! R m) l" q3 s
8 B0 x4 I' n* Q, O
第14章 软件保护技术
. o" P/ M7 [% y9 {0 u: i( V, O. L9 A2 X2 S6 u
14.1 防范算法求逆% y: ^4 H# [: a
14.1.1 基本概念
9 J5 F9 ?; y1 g) }/ R14.1.2 堡垒战术
3 S* l5 N' X% I# Y6 U' _( [$ }* Q14.1.3 游击战术- w+ T/ b: _5 P7 m: r, F5 R
5 k8 ?' Z! O& J F7 @9 G1 Q
14.2 抵御静态分析" W* o% {+ S% K2 o7 M! D
14.2.1 花指令* H8 ?: y. u5 N5 A
14.2.2 SMC技术实现
4 d' l n. _2 T& b0 ~( \, A+ y14.2.3 信息隐藏. I7 V1 r' w! p: g0 L: L; v
14.2.4 简单多态变形技术
5 h8 l4 f. A I! p- m q
' J& X h% @) E9 {2 e% K2 ?14.3 文件完整性检验
, l. Y" \/ N5 B8 I3 a" w14.3.1 磁盘文件校验实现
8 L* r% i9 r3 P$ ?0 X14.3.2 校验和(Checksum)/ W6 [/ b' E/ H, f/ v' ] T4 p
14.3.3 内存映像校验
8 A6 }# t- Y7 Z1 S+ ^1 y6 s+ v& g, S; V" C1 l* Q$ o* `0 T: [. d
14.4 代码与数据结合技术
$ e2 P+ \& ^+ N7 E14.4.1 准备工作; [1 c- A4 h4 Q9 _3 B) \4 a
14.4.2 加密算法选用6 L7 p9 y- a2 O# E: U8 J
14.4.3 手动加密代码
3 z. `& y2 F; C* \5 H; q7 Q14.4.4 使.text区块可写
5 [" l& }+ S3 }2 v, N+ w14.5 软件保护的若干忠告
1 b1 @, c" ~ B ]
! T9 r0 x( N5 a; l0 E第15章 反跟踪技术(forgot编写)5 g/ o- M% A' _+ c
* Z( o, }, J) i
15.1 由BEINGDEBUGGED引发的蝴蝶效应
; J( p1 s# {. n' G4 G* e15.1.1 BeingDebugged
+ U. L: v; x% z _1 L/ l15.1.2 NtGlobalFlag5 R, d8 B5 n- ^* r
15.1.3 Heap Magic
# c/ j9 B: {9 }6 {& b15.1.4 从源头消灭BeingDebugged1 n, t3 e5 H6 p6 v, c$ }
/ v* v$ Z! g- J0 `8 P& m' g15.2 回归NATIVE:用户态的梦魇. D2 E! c$ q0 q* Q" F" Z$ V
15.2.1 CheckRemoteDebuggerPresent
7 h; ` t7 m5 r& ]9 D15.2.2 ProcessDebugPort8 B) T6 i* c k
15.2.3 ThreadHideFromDebugger9 z! N6 S: J0 M; K4 z/ D# D
15.2.4 Debug Object
# D* n9 w) ~7 H$ [. t15.2.5 SystemKernelDebuggerInformation
& t6 C4 ~- t# q# {) Y' L15.2.6 Native API4 ^$ H1 G$ q, M0 g
15.2.7 Hook和AntiHook3 t* n) @: ?0 c8 `5 M; G; X
" c) y( m! u: c' D15.3 真正的奥秘:小技巧一览
% N$ s, @/ v7 Q6 p15.3.1 SoftICE检测方法, X, |1 H, M( s& g
15.3.2 OllyDbg检测方法9 p1 U1 N# l. \( T) U
15.3.3 调试器漏洞( l& c1 M! E! m: B7 e& S4 t% r4 ]
15.3.4 防止调试器附加
" Y' j& {* T/ v) z6 ^15.3.5 父进程检测
: ?0 K# O! Q5 u- @7 s15.3.6 时间差
5 B+ o$ m& U. I) w* @15.3.7 通过Trap Flag检测
! p( f4 p& G, ^; ^6 N0 p m7 i/ C15.3.8 双进程保护
: o: ^; z3 `) q, R% x" o2 a- l" e. f6 a$ K+ M
第16章 外壳编写基础(Hying编写)
. `* }0 i1 A! R" e
J4 v! u" m3 W- i0 |3 E- K16.1 外壳的结构- G$ j8 |8 [! ^3 X) x% n4 F: A
16.2 加壳主程序% m7 x2 k( W0 x" v. B: S; I
16.2.1 判断文件是否为PE格式+ [, C2 i2 F5 y( D* r$ [" t8 p
16.2.2 文件基本数据读入
% w# g8 s- r9 `1 I4 J. d; y& ?5 y16.2.3 附加数据读取
3 g' s/ @2 t9 j! _0 F S16.2.4 输入表处理8 a/ _+ {3 c! `. v
16.2.5 重定位表处理+ i/ y2 Z) b3 \1 K
16.2.6 文件的压缩: \7 j& E9 ?1 }; ?) e5 K5 ^
16.2.7 资源数据处理
3 l( P1 H: p/ ?2 a- I. ~16.2.8 区块的融合
n! s( p, R6 A5 g5 ]9 W# C( Z' i! e% C* U0 m. x
16.3 外壳部分编写
* r3 Q; J3 k( `" d' O# T16.3.1 外壳的加载过程
) D! J. u& S9 ]+ u16.3.2 自建输入表6 w+ v/ R p, b$ H! Q+ O! `" w
16.3.4 外壳引导段) t$ ~' m8 u7 J# X; Y& h; d
16.3.5 外壳第二段
) t M \, u5 P16.4 将外壳部分添加至原程序$ r7 K6 }3 Z2 i1 l
G% E6 M `7 A
第17章 虚拟机的设计* ?# A& r2 E: j0 s" B
3 `. Z7 g! a/ Z# g r3 E' d' f; s
17.1 原理7 ]0 w& C3 a3 E2 w+ M
17.1.1 反汇编引擎
$ M. V3 K d" _8 I: {7 d! |& G0 V- R17.1.2 指令分类# h% E0 Y7 T8 y% T! j* Z; b! b6 M
5 T0 m) _$ K: R
17.2 启动框架和调用约定
3 m+ @, d' V0 g6 s5 q6 e17.2.1 调度器VStartVM4 {' B1 H/ U, ~# ~' I
17.2.2 虚拟环境:VMContext
4 B7 G4 `; m8 h' j, o$ I17.2.3 平衡堆栈:VBegin和VCheckEsp
+ m, p3 g7 W1 T1 z! l- \( c5 T4 l% @5 H' t% x* c5 {
17.3 HANDLER的设计. s" G0 N6 }0 T; k, p2 j
17.3.1 辅助Handler
2 I, ]$ F7 \, }: n17.3.2 普通Handler和指令拆解( z7 c4 N4 u+ }4 k
17.3.3 标志位问题
, j. c3 S/ V" D M: O17.3.4 相同作用的指令
: ?. O) J5 w4 a$ H17.3.5 转移指令 L3 v3 s% B: m" j
17.3.6 转移跳转指令的另一种实现4 h7 d, P* x" @$ W
17.3.7 CALL指令' \# X: B( k! W* M5 q
17.3.8 retn指令- Q3 `/ n0 m- E7 a" M
17.3.9 不可模拟指令
( D$ B( v( y( S4 {) x6 f; u
3 G' I' g* T( M+ i, A. y17.4 托管代码的异常处理
4 n; r8 S1 S9 J, n$ y! r17.4.1 VC++的异常处理0 |) Y3 e; S, j; h! w* p8 O- a
17.4.2 Delphi的异常处理
! z7 F9 {* y3 H6 `4 m17.5 小结2 S& B T; s) c T" ?7 g/ Z+ D
# A0 J6 I6 ]% l" m8 f+ R第8篇 PEDIY篇
# D2 K& R8 M$ b D6 X* r; F7 E9 c* D3 P5 D
第18章 补丁技术! A7 }# \6 q( f& W
# L' x, K" v V& _0 g5 J
18.1 文件补丁
. f9 a+ e8 `$ X R7 D4 P; Z18.2 内存补丁
0 W+ Y% @* t) b" B' C- ^& w" t+ E18.2.1 跨进程内存存取机制' N' }: P7 c9 v9 B3 P( W; L
18.2.2 Debug API机制
7 o# P2 w, P, h8 M4 b18.2.3 利用调试寄存器机制* m, w7 Q X# l
18.2.4 DLL劫持技术
$ ]! V7 w3 y4 q! {
% v. p1 @- W [, U% N. U& ]! x18.3 SMC补丁技术* a% [, r5 r% e1 t; Z0 x* W
18.3.1 单层SMC补丁技术
3 z5 q1 E2 |2 D+ ?/ L18.3.2 多层SMC补丁技术
6 L: S. l) `9 ~: ^18.4 补丁工具
3 ]2 m5 f% Q* n* e4 P7 @2 _" @
* o2 C5 F) A* f4 ]3 h0 ?) Q第19章 代码的二次开发! M8 a; u( }* [
1 d# {- o2 ~0 f19.1 数据对齐1 a3 I6 U" @$ O" H9 k) q
19.2 增加空间
; ]; n/ U `" t# r" u19.2.1 区块间隙0 y# }0 L/ i! S! v& N
19.2.2 手工构造区块
4 Z1 `) e# R6 V19.2.3 工具辅助构造区块
: W# b% h/ {' V% j% D8 B7 e
& L6 j2 L: F( v# h0 v19.3 获得函数的调用
6 Q- ^7 j0 n) u+ J, R+ I; m: {: S* V19.3.1 增加输入函数
% ?5 j* H+ c; o* f7 n3 Z19.3.2 显式链接调用DLL; X$ {8 l* N/ J
- a4 y' u, p9 h; {2 h' k/ ], o* r19.4 代码的重定位6 b( c( O& f* _0 D/ t4 ^
19.4.1 修复重定位表
. b- c- A- _1 o z0 f% b- r19.4.2 代码的自定位技术# V9 e( }: ?7 e! |2 |" B
19.5 增加输出函数 F/ E: L& l/ z$ o/ _
- L( H- I* W1 j4 V1 a: q
19.6 消息循环
9 ^$ ?& S. i0 ?5 c19.6.1 WndProc函数6 h0 n2 W/ i% x7 Y' `
19.6.2 寻找消息循环
: r* ^9 K) ~0 w19.6.3 WndProc汇编形式
% x T% ]2 X1 x, N& e
7 Z- ~5 M N" H* q S19.7 修改WNDPROC扩充功能
: K- Z: |4 T3 f- _% `; b19.7.1 扩充WndProc2 c" h$ ~% J0 i: I
19.7.2 扩充Exit菜单功能
: h' U$ X' O" P/ A( ?1 C; b19.7.3 扩充Open菜单功能0 J* g. Q9 v3 J8 `7 F0 t8 V3 ?
- {1 A: W* V% R1 H; Q( G19.8 增加接口; y7 W; R& b q
19.8.1 用DLL增加功能. Y7 g H4 {' `8 u. O, H; o, n* P5 v
19.8.2 扩展消息循环
9 ?% q% L# x8 m8 E: P7 R
9 e. _/ M' \$ p/ R) f# Q附录
/ ~( U2 Q. D3 ?1 j2 [
/ ?$ W1 a* d" W9 b/ D6 B附录A 浮点指令
) ^8 ^) E& y: w! c3 R2 y
/ L% b% d3 S! p附录B 在Visual C++中使用内联汇编
( F0 q6 O- P9 y, r. ?
' b( S/ x" ~, n7 ^- I+ `, H4 L术语表1 ^5 b6 @& c( V2 F
( O' U6 |& m8 p: I/ h参考文献
) l1 m( q0 z2 m, s) `4 _# X- a3 P4 v: }! y9 H
|
|