鱼C论坛

 找回密码
 立即注册
查看: 8405|回复: 3

[软件安全] 【入门】《加密与解密》(第3版)

[复制链接]
发表于 2016-11-12 18:32:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
TB1ivqzKpXXXXcjXXXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

* d; L% i5 E9 ]/ b( Z+ B& A: b9 S8 K5 w; f5 L& D, v0 T
书名:《加密与解密》(第3版)
. d' @- [6 c( W9 o作者:段钢
" Q3 V4 U- Y9 f出版社:电子工业出版社
( Z% R* i3 K( [* j2 Y出版年:2008年7月1日(第1版)
8 J% `6 p- V, v# R! l定价:59.00元8 ?# f9 W' z( j! L6 I; }& v6 H
装帧:平装# j0 P8 H, H- j6 e! h
ISBN:9787121066443
$ t9 U3 t, j2 K# G1 ?7 O$ w' ?) y* ?/ B6 G- D/ M6 D  e
购买链接:) n; B7 q" x( \6 k

/ d0 u5 M1 U# X2 P! D# O

5 ~8 C) ?5 |  p2 I1 G1 w8 Y/ y亚马逊(Kindle)-> 传送门
, W0 N4 \1 [6 o' i7 z. o* J
! Y4 y, T4 s0 _( p' h) l亚马逊 -> 传送门
! @; a; c7 G- b6 ?" c
& {. N3 k, N: P  p6 F  C0 O- O8 ?$ C当当网 -> 传送门, n5 z" A3 k0 P) V3 D
2 Z, Q# T0 x+ @/ R# P( E
京东 -> 传送门- u0 ]* o5 G  |* o* }; L8 [6 q

! X- v- Y! y" k& B  A天猫 -> 传送门% k/ q) {6 \( b6 X0 @" o
0 {8 n0 u' I6 c9 a) r! ~5 G

2 `* `2 J1 [5 m) R内容简介:
4 X( A! \. M5 G8 l
9 T" @( |2 r9 u% V9 f
5 A( f6 X  b: ?2 q
《加密与解密》(第3版)以加密与解密为切入点,讲述了软件安全领域许多基础知识和技能,如调试技能、逆向分析、加密保护、外壳开发、虚拟机设计等。读者在掌握《加密与解密》(第3版)的内容,很容易在漏洞分析、安全编程、病毒分析、软件保护等领域扩展,这些知识点都是相互的,彼此联系。国内高校对软件安全这块教育重视程度还不够,许多方面还是空白,而近年来许多企业对软件安全技术人才需求量越来越大。从就业角度来说,掌握这方面技术,可以提高自身的竞争能力。从个人成长角度来说,研究软件安全技术有助于掌握一些系统底层知识。
9 Z8 p7 B, w  V2 w* D$ ]1 l, i, }8 O3 t
《加密与解密》由看雪软件安全论众多高手共同打造而成,读者将从《加密与解密》(第3版)中获得许多极具价值的技术,是专业开发人员不可多得的一本好书。$ c0 l* p+ w3 d! w. d
( ~' [8 ^7 k% K0 V
0 G. X9 `1 A& a5 ]1 M7 L
目录:* I0 p' H% t" o4 m
# y9 @* h* J8 H! g  R0 G( a* ^, ~

' z! E' O2 }, x1 p: B$ o
第1篇 基础篇
6 @  u* ^# A, _/ ?  Z) T3 y4 T- G# o0 i, D
第1章 基础知识
* L5 e$ u& ?; i6 c- x5 f4 l6 R$ C. `' B  _2 _& X! d5 c3 F& K
1.1 文本字符
5 f8 d3 Q; q" @9 t6 x5 R1.1.1 字节存储顺序
; v) p' v$ Z. q5 g" T" r/ f) [1.1.2 ASCII与Unicode字符集
8 T" r% a3 X# {( Y/ H+ k7 V
# l+ }! @7 F4 O. W% L" t: i1.2 WINDOWS 操作系统
6 b' x9 i  `. K8 r1.2.1 Win API简介9 i+ ^! `$ E" L( F: E  t6 d  q
1.2.2 常用Win32 API函数6 C/ d- |4 i* Z8 O9 s$ V
1.2.3 什么是句柄
! d; V9 g' i4 @# u1.2.4 Windows 9x与Unicode
& J# U( B+ {6 f- @7 x) ]7 W  T! W1.2.5 Windows NT/2000/XP与Unicode
* s# w. l+ I1 U5 ~1.2.6 Windows 消息机制0 w$ q; W" p4 s* X, ?

, z7 m. V; A7 i  r4 g1.3 保护模式简介
2 @0 p4 K4 `9 u6 q% q1.3.1 虚拟内存
, x& T7 T7 S( ~% s+ m# ^1.3.2 保护模式的权限级别1 e3 M' P6 [9 J9 E2 a$ K% U
1.4 认识PE格式5 i* T- Z2 I0 v% W2 o; _
, m+ f& e; a/ h  E7 D9 x$ @+ T
第2篇 调试篇
" C: l+ e8 S6 H7 `4 r
3 t3 o0 p  h& H4 t2 n) d9 F第2章 动态分析技术( k# ^4 z6 H! m7 o  B- B2 I& i' T: u
" c4 J' B+ F" X% B, I$ v
2.1 OLLYDBG调试器
" g5 _; O; f* x9 l; d$ Q+ A2.1.1 OllyDbg界面
' \) v% h" \2 K# l4 x! D! ]8 Z2.1.2 OllyDbg的配置* M" V1 U. X  {! j
2.1.3 加载程序
9 N' C. w6 l/ `6 F2.1.4 基本操作2 q. h* T  D, z* K) ~% U6 c' j
2.1.5 断点9 h- P: H5 A# m7 y
2.1.6 插件" f7 Z& p0 T4 V( o4 W
2.1.7 Run trace% p7 I; c; b! q1 B+ @
2.1.8 Hit trace
- G" y! r( n2 M, B1 U2.1.9 符号调试技术! T1 h' U  Z$ j# F, \! }! S
2.1.10 OllyDbg常见问题
- b) ?3 W  T1 v' {+ p$ U$ `6 s2.2 SOFTICE调试器
9 G7 l9 U. e# U1 {& C1 M( h) C& b( a& k( S; W
第3章 静态分析技术7 k: V; Y. v/ g" L
# j% X2 F% X$ v$ g
3.1 文件类型分析
" W+ y, P+ ^& [# I/ ~! t3.1.1 PEiD工具8 e1 W" o  f- [9 ]/ G9 i5 i
3.1.2 FileInfo工具3 t5 d+ r7 i# c
1 g( ]( Y* Q$ Q! N- f1 I
3.2 静态反汇编* g) ^0 u( m: y6 ?+ O
3.2.1 打开文件1 k8 ]; L/ H, K
3.2.2 IDA的配置% \# m4 |1 w/ D" S6 I. Q; M
3.2.3 IDA主窗口界面
2 t, ^: E9 k6 x+ e, d9 d+ P3.2.6 交叉参考
/ i, p+ Y. b' C& Y4 u3.2.7 参考重命名* a1 J) y  M* p# ?$ C
3.2.8 标签的用法+ {5 O$ Z8 H( D" |/ o3 c  R
3.2.9 进制的转换
6 y, J9 e- R4 M' v3.2.10 代码和数据转换
0 b0 U7 X: J1 Q3.2.11 字符串+ T$ G8 t% W" r3 T! W' I
3.2.12 数组" f: h# l" B) W( B# D2 H. u$ D
3.2.13 结构体$ H5 Y* x0 t8 S4 F# o. O& k" Z
3.2.14 枚举类型
% T$ D, i3 O% m3 ~9 z/ r3.2.15 堆栈变量6 c( k' F+ D2 e' T9 \( n; l. F
3.2.16 IDC脚本
8 o+ `0 x( t+ n) z, Z% x/ K3.2.17 FLIRT
0 ~2 j9 \( g5 Y- ?: P* ]9 C) N3.2.18 插件" Q" S8 U! s5 ]3 e
3.2.19 其他功能( K% a& {0 q1 s) H
3.2.20 小结
. K' q* P1 n9 V7 Z* b3.3 可执行文件的修改
: p( H" q" {7 Q$ r8 ^# j3.4 静态分析技术应用实例* |+ u2 L7 ^8 z" P
3.4.1 解密初步! `9 J: e. r; v  b5 j
3.4.2 逆向工程初步
! _$ w& O4 `+ P9 C" S7 h% r1 o! q: o% B. r) v" Z
第4章 逆向分析技术
; X) n/ i0 a' H& w# K$ Y0 l' E& W
, N9 u7 L5 r9 D: }0 I6 |4.1 启动函数
# h9 u. ^! k1 Z- N  B4.2 函数. w  q4 Z3 [% x3 n# \+ j0 ~
4.2.1 函数的识别$ X7 ^' L) i! g: J9 b% F- [
4.2.2 函数的参数& r6 B1 N; T% s5 |& L/ g1 W- e
4.2.3 函数的返回值
1 i- d# H* S. L" @. Y" L0 }/ m
. h' \8 |; J5 t. V, b4.3 数据结构3 o: O3 }& B5 D( I
4.3.1 局部变量
+ `0 E- Q/ i' t6 {# ^0 _3 k4.3.2 全局变量
( q4 U5 {' z" z5 R% P" P4.3.3 数组
5 N5 S* w. s- }% s9 O! l+ ^2 H4.4 虚函数
, Z! F7 f5 @/ L- B5 Q4.5 控制语句1 h# E4 U! ~- O. c
4.5.1 IF-THEN-ELSE语句* B6 X, M) W& _# t4 B- u/ U& F& u- |2 p# k
4.5.2 SWITCH-CASE语句
+ o& f& d0 a7 b8 ?; j, o& W4.5.3 转移指令机器码的计算% u: o* u1 M+ x# b: n- `( e
4.5.4 条件设置指令
; x+ _& E  n1 b  @4 h4.5.5 纯算法实现逻辑判断
5 [) S9 F) M! i4 P) ^! U4.6 循环语句
: ^$ Q% g1 {0 e! W, X' p
! c" `  Y# e# G% A  v/ P4.7 数学运算符
% E- ^1 L: c, u6 [4.7.1 整数的加法和减法
3 V% s) }0 L: V% a* o4.7.2 整数的乘法
% b5 z$ k4 }% l( b4.7.3 整数的除法
! N; E& K# u* W( d9 J- o+ }5 ?- v& P2 M' ^4 ^5 q, d/ y+ R
4.8 文本字符串
% t! i- o$ x1 A( K4.8.1 字符串存储格式
* ]. \" Y' U, ?8 ]0 r* `  [2 E$ R4.8.2 字符寻址指令- k4 q1 g8 R, ~- @" _8 z
4.8.3 字母大小写转换
9 {4 U( H0 A' g  V6 W3 V; ]4.8.4 计算字符串的长度
( L. l/ T3 M( S+ g6 x4.9 指令修改技巧
3 u% [- p/ w( }* u% x5 G! v8 {# y
  y+ d( ^& R: z. n( E4 M2 R" r. F第3篇 解密篇6 g( ^9 }( ~7 ~  X& k- M# k* ^5 H
+ ~' h# [# W+ }/ D- C9 n
第5章 常见的演示版保护技术" O- H. t+ P5 ^- V& Y; `( m: R
1 n8 e& ^/ U4 c8 l6 J( o
5.1 序列号保护方式
$ d) z0 Z% L/ ~- S$ l) u6 X- ^5.1.1 序列号保护机制
$ {$ V! {8 E. W3 j3 S2 ?5 a% [5.1.2 如何攻击序列号保护
0 z' \0 q2 c- V5.1.3 字符串比较形式* k4 s$ [8 k' i# V2 E
5.1.4 注册机制作
7 `5 F5 R3 A' E0 V* h( s$ q5.2 警告(NAG)窗口
  c$ t* k) R, L  I# I( R3 k
8 k; H) t7 l+ ~. R5.3 时间限制
, h: y; _% x0 w6 A+ [! m. b5.3.1 计时器
& m: {( m6 t" `7 s1 Q2 M- |/ A5.3.2 时间限制
% [2 |- k1 E! ?, Q5.3.3 拆解时间限制保护4 y5 w/ {5 i/ U$ l2 w4 k% N, p

5 j8 H1 O8 ]- `8 `: \5.4 菜单功能限制
' V2 b5 N) Y3 u5.4.1 相关函数
) v2 B4 ?, h5 d  }8 l5.4.2 拆解菜单限制保护# L  p- }. S; g+ T7 L/ e
' j' [) |, W+ f9 F
5.5 KEYFILE保护5 K# b  `+ i8 |/ ?  l% R
5.5.1 相关API函数
: }3 B3 w' e# U5.5.2 拆解KeyFile保护0 u& K) p1 R# x4 v! C( t: ^

5 d: Z) Y4 \  n; v5.6 网络验证
! h( i# \. M8 ?& B7 E7 {" e5 r5.6.1 相关函数1 ~) c2 Y$ `1 @
5.6.2 网络验证破解一般思路
3 }. V3 w' k% L* i1 w
  {8 m( H- y% G( d7 g5.7 CD-CHECK
6 q5 z) D2 g* ]: v5.7.1 相关函数
/ i) I8 o+ Y" v/ B' \5.7.2 拆解光盘保护
7 D: L+ W# ^6 J& w9 R6 e5 Z7 H$ A! m) j
" f/ @0 b2 R2 ~5.8 只运行一个实例
, p$ |/ f) a! I: k* }' X5.8.1 实现方案9 b; z- g& L3 m- O7 H4 t
5.8.2 实例
" C: {" a# Z/ j3 ?! A) l! S, F5.9 常用断点设置技巧! o- n' j" g2 S  Q( X
, l0 s; U2 T: b3 L9 e9 g
第6章 加密算法
, X1 R* Z6 m/ |9 w$ i' t
' K* U9 I/ P8 S5 S6.1 单向散列算法
1 o# }( g- b/ ]; H& D6.1.1 MD5算法/ O# ^7 v" q7 ], n+ O2 X
6.1.2 SHA算法; B; O. ?6 ]1 c+ X! O& Z+ B; ?
6.1.3 小结
! s6 F7 j1 D* {* X2 j& g
( `' v7 m- ]! n, p4 C  K" F6.2 对称加密算法
$ N7 D- Z( H+ s  y6.2.1 RC4流密码
8 k4 h. {% C( N0 R6.2.2 TEA算法: @6 a# A+ y. A% ]4 {; n! B# O1 X
6.2.3 IDEA算法" h% K/ N8 B7 e
6.2.4 BlowFish算法
6 S/ c1 _1 ~: `6.2.5 AES算法
4 ^& |# o- R5 }7 q6.2.6 对称加密算法小结
# q: P0 w: E# e7 z. V, _# c4 D# n- O% U6 M
6.3 公开密钥加密算法
& |) E9 B4 S/ Y0 @9 r6.3.1 RSA算法
0 Y% b2 ~7 t6 W) ^5 a1 B7 N+ g6.3.2 ElGamal公钥算法
+ {3 Y2 F, I  R: z, E: V6.3.3 DSA数字签名算法
" _- o2 X  ^, e! |$ p8 Z" u6.3.4 椭圆曲线密码编码学0 G/ }) p3 H% u
( _' S' C, ?" ~* l
6.4.1 CRC32算法
  r+ a" M: ^3 Z* a; k- f/ ]6.4.2 Base64! k4 Q3 {4 m3 q
6.5 常见加密库接口及其识别9 U, u0 c' g1 X" r) @
6.5.1 Miracl大数运算库
# y6 A. K+ o) A5 Y, w6.5.2 FGInt' Z2 P' B# y2 Z
6.5.4 其它加密算法库介绍
1 H# {2 y; s! J! p& T- W/ E
" M) n7 J0 k: N: f2 z第4篇 语言和平台篇
6 u: T" r+ y) h
6 v( Z# R9 M9 E; I& Y8 ?第7章 DELPHI程序+ q  I) W" ^+ ~/ C
- X6 D9 G/ @: R- S. B
7.1 认识DELPHI
( a, b% D: E4 p3 V. s% i7.2 DEDE反编译器
- |! [1 O6 f6 R5 M) w# q" C7.3 按钮事件代码2 }6 p, N" y7 M; ]8 E9 u
7.4 模块初始化与结束化  e# t( w0 a. I' S5 t8 h

) r: W& V$ C: y7 J2 @第8章 VISUAL BASIC程序/ ~9 ~8 B3 R( v* {* y

5 v7 o8 O; u9 c* p8.1 基础知识# o6 f9 r/ A1 L% O  R7 e
8.1.1 字符编码方式
% }) q$ V' f+ w8.1.2 编译模式
. S, l/ i. A, N# E
  d8 ~2 C0 q0 J' U$ e8.2 自然编译(NATIVE)
" _4 F2 o: C( {" g$ o- u( |8.2.1 相关VB函数
( A7 ^: P; B7 R# c* `* ]# d1 I8.2.2 VB程序比较方式! s. N# I  _0 J. j3 k3 y, g
* {3 S7 i  P3 e* u
8.3 伪编译(PCODE)(cyclotron编写)9 R" Y# }2 e; A# p3 V
8.3.1 虚拟机与伪代码
- o( O7 g" U: v, U: p8.3.2 动态分析VB P-code程序
& g. ]% a$ U5 D  u8.3.3 伪代码的综合分析) g( Z: V2 V& |9 O4 `9 y, R. M4 v
8.3.4 VB P-code攻击实战  H' t$ @" L0 K' q1 O( T

3 w1 j- m. e$ L/ Z% `8 g/ T6 r第9章 .NET平台加解密(tankaiha 编写)$ r1 v6 R$ o/ i
  A; R6 h: t' k, _' h) a* Y  k
9.1 .NET概述/ |# t) Z3 v! N% O- F
9.1.1 什么是.Net. G$ q6 f1 g4 W! C
9.1.2 几个基本概念
/ H- ~2 K+ M4 h* F$ Z/ ~. }2 n9.1.3 第一个.Net程序5 j$ I4 P' G* g% h

$ l* x$ o  I2 b: r! H6 h9.2 MSIL与元数据
& F: Y8 d( d5 R" p9.2.1 PE结构的扩展3 B0 t: @+ ]) J& F. U
9.2.2 .Net下的汇编MSIL
- E- s$ _8 P' g; b9 M9.2.3 MSIL与元数据的结合
: |' C5 @7 r! G) w8 P  m6 s' y" Q. X9 B$ V2 a# Z, g
9.3 代码分析技术
( y" K/ w5 ?# b/ ?6 w( |' P9.3.1 静态分析
' [8 q* N: h; a. X# @: U! a9.3.2 动态调试! K2 O/ C. h1 B1 h( b0 f
9.3.3 代码修改
# u/ d7 L% _9 V' r
% E+ W5 `* G$ G$ G9.4 代码保护技术及其逆向
4 v$ o, N9 o- P8 J, b9.4.1 强名称
9 t# M' Y) }( ~1 u" Z9.4.2 名称混淆+ E4 K0 P' [4 y3 j* t& e+ v
9.4.3 流程混淆
! ]4 ]7 {2 S4 W% y+ k! Y$ r5 Z8 o9.4.4 压缩/ P7 g; x7 A: n
9.4.5 加密1 S/ ~! c. z. I2 M. D% H) N
9.4.6 其它保护手段( }1 s, I. @( [2 X

4 \1 r) n, F2 {6 E+ ]9.5 深入.NET) {+ A/ A2 C# ], l
9.5.1 反射与CodeDOM) K9 \8 L: \- ~" f! J3 ?0 S
9.5.2 Unmaganed API
0 |" l" l1 @/ O2 u9.5.3 Rotor、MONO与.Net内核
- J3 v& U, j; T- K
/ e2 [; b2 h4 b0 O* `第5篇 系统篇
# V1 D" [+ D5 N" v2 ]1 P# \2 d+ T/ d  ?( m! i: U" Y) K
第10章 PE文件格式/ `- L; R# S* E2 {7 {! K2 [

) F4 B! `2 ?% F, T10.1 PE的基本概念0 g2 s* a3 Y7 Y0 @" v
10.1.1 基地址
4 d9 l2 e9 X4 \. N4 b10.1.2 相对虚拟地址" j) m( D& H/ H
10.1.3 文件偏移地址
" t, r" {0 \% F5 u10.2 MS-DOS头部) T' T5 w6 O5 A' }4 S# x

# T7 y, T2 q2 D2 U; J10.3 PE文件头
. X, B1 o. K$ I1 r7 |10.3.1 Signature字段
& B. k7 [0 V- e( ]4 [10.3.2 IMAGE_FILE_HEADER 结构4 m( T7 ]% [) E6 W: J; o9 F
10.3.3 Optional Header# `4 J1 G* m% g6 Y1 {
7 B3 r- A6 e. ^" W
10.4 区块# H& d% k; Y- M3 k. c% T& f
10.4.1 区块表
" k/ r3 g) c& K2 \9 D' M# n: I10.4.2 各种区块的描述( O6 r& d4 R+ [; p! I: n" o
10.4.3 区块的对齐值5 S9 m% N$ d7 x: i* i8 u9 |
10.4.4 文件偏移与虚拟地址转换
7 c" A7 l1 W; n1 z2 `1 R- I: h7 h2 A3 {* T- j# |6 I( {
10.5 输入表( J4 V8 U" @: y7 X0 i. [; C- e
10.5.1 输入函数的调用
$ K0 s4 N; I  r6 f+ t10.5.2 输入表结构/ J% g: `, j" R+ a9 w' E: e
10.5.3 输入地址表
' ]' R: S/ E$ C/ }" W10.5.4 输入表实例分析4 a; ~6 J! z: T; x0 g1 d
10.6 绑定输入, K- T( V1 p* I

* a) Q7 j* x: m- k10.7 输出表2 K- L* ]$ p* \/ R: Y8 N  p6 N, s4 O
10.7.1 输出表结构
3 x+ W1 \2 p5 a" P4 u10.7.2 输出表结构实例分析" k6 v, T- h4 l  L
4 [* k' @4 L; g2 s2 Y3 _; n
10.8 基址重定位
2 B4 t8 d) W+ s10.8.1 基址重定位概念
" T7 E/ x# r8 ]5 c$ ]  t10.8.2 基址重定位结构定义
$ n' R: w4 Q7 X3 x' U$ R4 {10.8.3 基址重定位结构实例分析7 U. S8 E$ V6 U5 s6 V
- P) V7 {( l& m- e: f
10.9 资源0 d0 H, [* t0 z& R9 Y6 C7 C
10.9.1 资源结构
4 g/ g3 {' R2 C; d, z10.9.2 资源结构实例分析; b* [4 E( L. |. v9 x) U; Y
10.9.3 资源编辑工具
% {6 x1 g7 e: h" I10.10 TLS初始化0 ]+ z" o( r# K8 h
10.11 调试目录
, x2 k+ M8 j6 Q) Y6 @10.12 延迟装入数据) d% B3 m- |  J# T  s  b. ?8 a5 G
10.13 程序异常数据6 |0 j' }# X! z/ }6 z6 W
10.14 .NET头部
7 Q5 S7 q" G6 K- ]9 j& c7 p) p7 w( O10.15 PE分析工具编写) A8 _; c# k- u
10.15.1 文件格式检查% W6 P. [3 `) X
10.15.2 FileHeader和OptionalHeader内容的读取  r! q' y& a0 _4 B2 i) O2 w- V
10.15.3 得到数据目录表信息* B5 p) P2 }' {/ C* f6 Q" R8 O
10.15.4 得到区块表信息1 b/ W2 f, M  B6 D+ B" z$ _
10.15.5 得到输出表信息
  i0 [" Q6 {: K& P10.15.6 得到输入表信息- |( N0 p2 O5 `+ M  k3 N
! I# v. y( M/ b0 w8 |  O5 \
第11章 结构化异常处理
1 }# N; t- @- S" i0 T. d- L" e
6 a7 e7 @6 R/ O1 @% j8 T11.1 基本概念
! i$ o' W+ L& }% U, v( G11.1.1 异常列表
- ~& h! u' h, Q  _# O. s0 t, T11.1.2 异常处理的基本过程0 A" O; |- x( d% R. W/ w4 @3 D
11.1.3 SEH的分类
# O4 t3 q4 \' c5 @; A! q' l  y6 H1 v
11.2 SEH相关数据结构) B& c4 P( G/ s3 B
11.2.1 TEB结构
3 r; z% E! W, f0 l11.2.2 EXCEPTION_REGISTRATION结构( S8 v0 J+ A9 X
11.2.3 EXCEPTION_POINTERS、EXCEPTION_RECORD、CONTEXT
1 N2 k) @$ ?7 p6 A. j11.3 异常处理回调函数
7 p% P: Y$ y; D
' {# J9 |/ O+ j6 k/ B; G1 R) _" Q; i第6篇 脱壳篇; P# Y% P$ Z6 C$ U' e8 Z9 W

: g, J/ `) e1 b$ o9 I/ Z第12章 专用加密软件! V; a" S7 l+ }9 ^9 R, p' m) b

1 s; }' q' W6 j12.1 认识壳( `3 y* f' P9 Z; v7 O
12.1.1 壳的概念6 f) S1 r; ~* {. s8 F* _0 J3 F! H
12.1.2 压缩引擎
2 B$ P# O  L8 R3 w$ W12.2 压缩壳
: ~' A- L# u! V/ `9 Z6 o3 f12.2.1 UPX+ `9 T" O+ [6 K% `& W1 P
12.2.2 ASPacK
/ g0 f& Y* L: [$ q* f5 {/ J$ y/ g' y) B# ~
12.3 加密壳7 j, l  P) d) Q, J, Q
12.3.1 ASProtect
4 c- }4 J/ u. P  I2 u" ?: T12.3.2 Armadillo6 w- w9 u8 R% ]1 w8 Q6 }$ Y
12.3.3 EXECryptor+ o$ b3 G# f! R* A
12.3.4 Themida
, }, Y6 _( m; |/ g; g5 o( p( q
6 j: _$ u# o$ u/ A7 N  p$ \) k12.4 虚拟机保护软件
- ?+ z- S* ~7 T9 _- D$ `! W12.4.1 虚拟机介绍2 {8 c) U% A; h' c) S
12.4.2 VMProtect简介" ?' N( k1 ]( E
+ H3 h( J: b2 I# ?  K# M
第13章 脱壳技术
: L) J& m- H( H7 |" }9 E
% {5 l  c9 ^% W/ o7 x( Y4 W13.1 基础知识
8 x% j4 ~4 y! G: ]13.1.1 壳的加载过程
, u# E5 G% I) ^13.1.2 脱壳机
% J8 h( F5 ^/ u1 o! G% c13.1.3 手动脱壳; R2 S1 a8 i. r8 F& ]

$ ?, E8 G; x% ~  c( Z4 \0 R13.2 寻找OEP
) _& C% M: M# g. i13.2.1 根据跨段指令寻找OEP, [' |5 D( F- M2 D5 H( O! d; N7 V
13.2.2 用内存访问断点找OEP# b2 ]3 [% `% P6 T' W! K
13.2.3 根据堆栈平衡原理找OEP5 w1 z0 G. w) f( O2 M; ]
13.2.4 根据编译语言特点找OEP, G! s  i* T# R- y# z1 {# L
/ s- @8 X  i$ Y: r0 h
13.3 抓取内存映像
( V  O% L0 i/ ]! X$ H+ S7 C% ]13.3.1 Dump原理
4 I4 n$ z$ J2 \" ?$ {13.3.2 反DUMP技术1 I3 e, ]5 [2 A3 g6 f  i) G
3 }8 j) X; S& c! j* v! R, s
13.4 重建输入表7 y' s% t, G' Z& L/ X
13.4.1 输入表重建的原理
& l% R+ ^- L( E' g13.4.2 确定IAT的地址和大小" r0 V6 `* E& W5 \$ b
13.4.3 根据IAT重建输入表
$ s% v* l7 i( D# f  P13.4.4 ImportREC重建输入表7 l/ ?$ |, I( k
13.4.5 输入表加密概括
+ j& i; B& T8 L8 o3 q; C! @; `  a" m! k- g8 _  A
13.5 DLL文件脱壳! Y9 H# d8 g" x
13.5.1 寻找OEP
/ X! [. Y# [+ z1 g$ F/ i2 v13.5.2 Dump映像文件
# }8 g* E& j* i* |, D8 i/ B+ x" T13.5.3 重建DLL的输入表
+ g( Q  b3 E0 I13.5.4 构造重定位表
' a8 C) d6 D2 `13.6 附加数据
" @% t( R1 g2 \5 p  S+ m13.7 PE文件的优化
5 ?) B' o1 p2 Q! V- d, H13.8 压缩壳
, g8 u% \: p2 M/ e1 O; i3 S13.8.1 UPX外壳
  W& {  B  G$ U+ C, P9 E, r# X) i13.8.2 ASPack外壳+ t/ I/ T+ ~$ {8 x4 ]
13.9 静态脱壳/ W% W' P* r% ~  ]( U4 ^
13.9.1 外壳Loader的分析4 i: R- V8 W. [. o
13.9.2 编写静态脱壳器
# v8 M1 o; d4 ]13.10 加密壳; A4 ?: _3 R5 |8 @3 u, P7 Y: [
13.10.1 ASProtect
# m5 p( H3 ]# d5 M/ O2 M. Z+ X13.10.2 Thmedia的SDK分析
% c6 ~) P% L5 Y' `8 e* q; M0 H4 z3 }8 P
第7篇 保护篇
) B2 v- |7 v4 q3 [2 p9 o
: r: _; k6 b5 [3 k. Z4 l第14章 软件保护技术
; @: R/ t. \8 c- W' M
# A+ ?9 Z* L3 q14.1 防范算法求逆
/ k2 ^+ R$ `8 f2 ^14.1.1 基本概念
0 P/ C6 U+ ]% @' P5 n& X. B  H14.1.2 堡垒战术
0 P/ W& s+ m6 g6 U  ?: }14.1.3 游击战术8 u" D4 F& J+ w* S
6 V9 }, ^5 h3 b, B
14.2 抵御静态分析0 D3 |5 I5 ]# I5 c% X
14.2.1 花指令
. {1 O0 W# z  B- d! D14.2.2 SMC技术实现
1 z* d5 c8 A/ x$ L: t: E. O14.2.3 信息隐藏; M% b% k5 l5 h) ?) e
14.2.4 简单多态变形技术
$ S- j9 U: O8 t# H
, {. X# m8 @8 O  Y9 p- Z0 C0 ?: e( c2 d14.3 文件完整性检验
4 c, I0 P' V7 w4 b/ O14.3.1 磁盘文件校验实现+ Q3 h# K. Q, g1 i9 L  l
14.3.2 校验和(Checksum)
, P1 A: Q4 w2 g$ e  q$ U4 z+ H6 [14.3.3 内存映像校验+ l& v5 T4 ~) J. x9 n& I5 R$ u
1 N: E# Z1 c4 I
14.4 代码与数据结合技术
9 m" T# I( i% b: S14.4.1 准备工作
; _9 M% }; m; V0 @% _4 ^! d$ c  ]3 s+ S14.4.2 加密算法选用
; H$ p7 q5 I. k. V* D) Z) o14.4.3 手动加密代码
: Y3 v9 h3 M$ g7 Q; h! x14.4.4 使.text区块可写
" f8 n" m1 ^# u# y! @- ]14.5 软件保护的若干忠告- [' D$ B" N- I. F8 S- g$ s
9 ]; u( J/ P$ M$ P7 @
第15章 反跟踪技术(forgot编写)* m2 a( F$ s0 e' R' T% J
2 B2 {0 g5 G! X( `3 s
15.1 由BEINGDEBUGGED引发的蝴蝶效应/ M! b: G5 g: s0 S& F9 A5 I
15.1.1 BeingDebugged
* f. @8 h: ]. c; P9 X9 r15.1.2 NtGlobalFlag) e8 ~5 b- @! s  V9 f. g1 K4 g
15.1.3 Heap Magic
; k; n' ~$ E0 I1 C9 r) [" G  Q15.1.4 从源头消灭BeingDebugged
$ T' ~# l1 i2 D$ F5 I) k2 Z- }: ?% T! q# t; b' X( ?7 q9 z5 M6 _7 S
15.2 回归NATIVE:用户态的梦魇
3 W& v, {5 [! U: h% j# s15.2.1 CheckRemoteDebuggerPresent
9 [% s4 P% g$ W( A; D15.2.2 ProcessDebugPort% p  n$ i0 c" v9 j
15.2.3 ThreadHideFromDebugger
5 ]! ~; I* h$ J" n& |15.2.4 Debug Object, t  B6 L8 F: a" @: m; p5 a9 E. X
15.2.5 SystemKernelDebuggerInformation
! [5 m( b% p. ]# A* S15.2.6 Native API8 |7 F0 G- E. {+ k9 Y1 R
15.2.7 Hook和AntiHook
2 Y" ~+ B8 o6 H- |2 G7 ~! d4 ~  B3 `% L" P* f. F! w
15.3 真正的奥秘:小技巧一览5 d) ~7 N0 `) c( F2 U' Q" l
15.3.1 SoftICE检测方法
) \1 V8 X- G$ U/ Q' Q15.3.2 OllyDbg检测方法( j* P# o6 B5 t! o3 K  v2 ^' a% J
15.3.3 调试器漏洞: v# ^: `9 c8 c1 b5 e
15.3.4 防止调试器附加
+ Y8 f, I& D# `$ d! X15.3.5 父进程检测
" k% }& a# n+ p15.3.6 时间差
3 _% F. \. N4 L4 L9 T15.3.7 通过Trap Flag检测! r7 Q% p) M9 J; ~! G2 G
15.3.8 双进程保护
  R5 v0 p) n8 }/ K7 ?
  W* d; C; J) z/ D* `* z第16章 外壳编写基础(Hying编写)9 @, @( K, U/ F! v- o

% }. L6 X* B# ^6 Z, S/ D- X, f% q16.1 外壳的结构7 B) s2 Y- D6 A. V6 b5 e
16.2 加壳主程序) k3 E0 |' D* @7 k: t
16.2.1 判断文件是否为PE格式
: K3 ?, G' C8 J% h4 }16.2.2 文件基本数据读入9 N1 E5 z' x% t) A
16.2.3 附加数据读取
$ s6 D0 a8 f7 P* ^; ~7 O# u+ [16.2.4 输入表处理2 K2 @" \% Q( ?8 y
16.2.5 重定位表处理- ~* P$ v2 Z  q3 g) f
16.2.6 文件的压缩
0 T) t2 O$ H% ^$ T16.2.7 资源数据处理
6 z# n4 C* k7 }8 s16.2.8 区块的融合
8 Q3 c/ L8 P+ ^/ `- {  ?3 u* T% h) x5 `& _8 `1 ^
16.3 外壳部分编写
9 [% r* n( P# ?# O+ G& `9 F16.3.1 外壳的加载过程
/ P8 o: j. q/ a8 c: I1 z$ D7 s8 _$ V16.3.2 自建输入表) z+ U6 a! `3 H
16.3.4 外壳引导段
# j* R- p  g0 }8 @% {% v3 o16.3.5 外壳第二段
% Q9 Q0 b1 R& j1 K* N  V) a16.4 将外壳部分添加至原程序! R" v; ~/ F. ]0 J' X/ ], X" S. f
9 U& Y- D* h# V1 z
第17章 虚拟机的设计
( y) ]$ }% `! w* O6 X7 K! ^$ C: }8 e
17.1 原理
' M7 v% e! R0 x17.1.1 反汇编引擎
. r: ?, O/ m" V: M, ]; l8 C17.1.2 指令分类/ Y: X) X0 T. w$ v9 }6 K' v1 e
0 T. \1 ]4 w; k, z5 e# S
17.2 启动框架和调用约定9 K6 ^. {  @! ]
17.2.1 调度器VStartVM
; w; c( N# c. S; h" S17.2.2 虚拟环境:VMContext' t" a" k( \( f$ P* ^$ J4 P. A) Y
17.2.3 平衡堆栈:VBegin和VCheckEsp
0 g- t0 ^4 a7 F) j( `: A6 `6 K: U3 C+ A* h: x4 d' F1 P  W. U" c6 V
17.3 HANDLER的设计
! _# P0 L" _5 ^17.3.1 辅助Handler
5 _- y. |# M( F# D7 T+ {( v17.3.2 普通Handler和指令拆解0 Z: v9 t+ L. z5 u* ?
17.3.3 标志位问题
+ g& L4 X, X; m  |2 D17.3.4 相同作用的指令
1 P1 `& }. ?- Y/ [17.3.5 转移指令% j; `) d4 T) P( L' Z, A
17.3.6 转移跳转指令的另一种实现& ^4 ^" {/ M9 Y. N
17.3.7 CALL指令& Q7 Z  }, b6 P! }2 u
17.3.8 retn指令
% F- Z0 l% C. c3 D17.3.9 不可模拟指令' A* O8 R/ [8 I+ W. T* O
9 l/ M  ~8 s" U$ J
17.4 托管代码的异常处理  c( K+ C2 c( x2 f9 n2 W
17.4.1 VC++的异常处理/ `, O6 A1 {' c) l/ B9 E7 x
17.4.2 Delphi的异常处理9 J- t" D' K' |. I
17.5 小结
* }+ g4 A- [2 @3 c  r1 X
% N8 e2 L8 p4 \% ~0 _第8篇 PEDIY篇
4 }- ~; j6 S4 X
" `8 U3 _/ H$ B7 q第18章 补丁技术
! r3 _' E0 [- G# N; `8 O3 }3 k5 q
5 `( g) ^0 ^" a  f; M* _6 }18.1 文件补丁8 B( [  T3 K  E1 K0 _1 B1 D
18.2 内存补丁! T! H6 y$ P3 C3 p7 ?
18.2.1 跨进程内存存取机制
  u& u  o& S8 P" O; N2 [3 J0 C8 ~18.2.2 Debug API机制4 r% C" q9 j5 x: x2 y: a5 [
18.2.3 利用调试寄存器机制" S6 P' B5 d, Q3 s" ~$ [7 d! c
18.2.4 DLL劫持技术) p9 c: Y1 D, }$ Q/ C( f* a+ E/ k

- }" Z; E- [1 J/ M) f18.3 SMC补丁技术  V6 K% I+ Y, R4 c4 G
18.3.1 单层SMC补丁技术6 m0 j& Z  @5 P
18.3.2 多层SMC补丁技术
, A, Y$ C4 O) q" i: D18.4 补丁工具- @# G# D5 O7 j8 R' |

& r; [$ z' g* z; t: i第19章 代码的二次开发
6 v- Z  {0 B( |' p8 x
4 c( K5 H  F' p19.1 数据对齐9 `" I* V. B2 c/ {& {- p, i) p) s
19.2 增加空间4 T" K# ?9 |( }8 B
19.2.1 区块间隙( i1 p) {$ T2 v4 ]/ _& r
19.2.2 手工构造区块2 \+ {- y0 s7 M* a0 q
19.2.3 工具辅助构造区块+ ]* j2 @4 b# A. a& e6 [/ T
! r5 E2 W5 K: s
19.3 获得函数的调用
+ D' l/ j+ O/ [8 q5 i* m% l19.3.1 增加输入函数# e; ?# D- O+ h+ R" C% _
19.3.2 显式链接调用DLL4 J/ e& m! k% x, s' l5 M) m8 c* h
" g* B2 d' |& }. {  R4 F0 \: l
19.4 代码的重定位
5 Y: v' p2 @; P19.4.1 修复重定位表
% `+ m. ?' y$ [* z19.4.2 代码的自定位技术
. g. f( A! U  T, n19.5 增加输出函数( S& ~/ l+ |' o  ~  w. {8 X! k. Z

+ z0 g. f" ^. o: t1 y2 q19.6 消息循环- [( d! }* C9 V) A8 c
19.6.1 WndProc函数5 J% `9 u! X9 E" \6 _. G$ I
19.6.2 寻找消息循环; l. n6 k1 a; ]' r* L$ ~
19.6.3 WndProc汇编形式
" c8 V7 f8 _" X, P5 H) Z
" ?3 t% U/ s& N2 P19.7 修改WNDPROC扩充功能. H- `1 B9 e7 E2 h2 C; c2 z
19.7.1 扩充WndProc6 M) b" `: M1 o* x" Q& H* P* L
19.7.2 扩充Exit菜单功能
5 s+ h' x  v3 w8 Z! q9 P19.7.3 扩充Open菜单功能
3 e  }: P6 e  P- k7 d) u- i# v
4 @: L* h& k: Y2 Z4 ]19.8 增加接口! j, g/ t: P' y4 Q) E8 n
19.8.1 用DLL增加功能
6 r, T% R! h- ?) c7 \/ Q' m. s. U19.8.2 扩展消息循环: Y4 v4 P5 m) P# q0 e

' o9 ?( z7 [. s8 J附录8 i: h9 [1 a9 C% m+ C( f/ n+ [/ h
$ w3 H* K/ `4 k9 t7 m. J
附录A 浮点指令+ i7 q& O" H/ ^6 _( s' R

/ [( B, N: @. ~附录B 在Visual C++中使用内联汇编
3 p& S" b; n, K( u& h3 o
9 a) A, N/ g1 d7 [术语表$ ?+ y7 e. x1 ~2 U; K3 Q- V
1 w- C+ z; C' V# }! p% j; q
参考文献. A5 d5 |( b' G' `% H; m

; c1 B( e- P; c: l4 @" ]4 O
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-1 14:12:52 | 显示全部楼层
   脑子乱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-19 19:59:50 | 显示全部楼层

  1. 9 T; o" d2 N0 ?+ I3 }  T4 ]
复制代码
& ?' z6 C  J- D" c) {' J% d0 P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 15:27:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表