鱼C论坛

 找回密码
 立即注册
查看: 9300|回复: 9

[软件安全] 【进阶】《逆向工程核心原理》

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

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

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

x
61ozEQObhvL.jpg
( V1 h& u; b& N4 p) h

7 Y, V1 E/ e4 L3 R4 Y书名:《逆向工程核心原理》+ \2 k' K) a5 s! l5 i( a; m
作者:李承远& y, n0 d; D: R! M* ]
译者:武传海
2 z; A" C$ p3 y! C出版社:人民邮电出版社- U4 @1 S" e' t# o$ P
出版年:2014年5月1日(第1版)- w! T1 o' E0 I) \1 a
定价:109.00元/ C5 X! ]$ S3 f& g; t
装帧:平装5 X: q  J" T5 @6 j2 B5 V0 F
ISBN:9787115350183
6 A5 e0 e0 ]3 T% S+ C, f2 d' g/ k; G# d+ M' J/ p
购买链接:
; t& U2 \0 e* V9 Z1 Z3 D, Z- d# T  |# }5 b9 F6 m  O


. U$ O& ~( Z) y9 s& J亚马逊 -> 传送门4 L3 ?; `% U1 _0 Y8 v

- X- W" X& ]3 r7 y7 s0 {当当网 -> 传送门
( a5 U; I) B+ v! o5 u9 ]# r
! T1 N6 e. C* |9 z5 A0 g! Z京东 -> 传送门
" E2 O1 b% l7 k) t. w1 p
7 Y3 v  A0 |1 G4 R4 w8 Q% K天猫 -> 传送门
# F( E% i! o" ]: C" x+ R1 V/ X" L% m$ j" N+ ^0 r( t
6 B; g6 D0 e% @" S
内容简介:
2 a3 L: n# g. W
  y( Q) r9 v$ C, Z& H8 I2 e

# r3 W0 ?7 r( C% p0 S2 c《逆向工程核心原理》十分详尽地介绍了代码逆向分析的核心原理。作者在 Ahnlab 研究所工作多年,书中不仅包括其以此经验为基础亲自编写的大量代码,还包含了逆向工程研究人员必须了解的各种技术和技巧。彻底理解并切实掌握逆向工程这门技术,就能在众多 IT 相关领域进行拓展运用,这本《逆向工程核心原理》就是通向逆向工程大门的捷径。
. J! J+ B$ q8 p+ ]. b0 M# s8 h2 c$ l) F% P6 D  t( o
想成为逆向工程研究员的读者或正在从事逆向开发工作的开发人员一定会通过《逆向工程核心原理》获得很大帮助。同时,想成为安全领域专家的人也可从《逆向工程核心原理》轻松起步。, R. I6 b9 j* W9 f% d! V6 R
  z) q7 P& T/ F; f- x
; i0 P; k. k* S7 x& c( S. W6 ^2 c9 ]
目录:/ X  b& {& M6 a% Y2 |1 J
( i; k) }. X/ ^+ \

8 i. q8 ]' {$ W
第一部分 代码逆向技术基础, m- F2 k+ h) Y5 v; b- j

# e6 [/ N& d, J/ W% Z! W第1章 关于逆向工程
4 U& H2 l& ]* B; F4 G
: p/ o* n" r2 {0 }% O1.1逆向工程
. Z) X- K' M5 C7 y; b1.2代码逆向工程
$ K$ J  @/ F; v6 c( x1.2.1逆向分析法
% c& `+ @& X' M6 ?" g. |7 R1.2.2源代码、十六进制代码、汇编代码
5 [' q7 a+ s4 H' ?' y: o( i1.2.3“打补丁”与“破解”
8 i7 h# J7 S+ q; N1.3代码逆向准备
, f* O6 _" Q8 p4 O1.3.1目标 2 F: p' L. [9 w7 g9 h+ v
1.3.2激情
/ W* I. g% L0 O. b  A$ U7 r: M1.3.3谷歌
) {; V9 s) ^" z( o6 Y7 t7 [1.4学习逆向分析技术的禁忌 : {! T4 U/ [8 w
1.4.1贪心
$ x2 M9 i7 A8 P8 h1.4.2急躁 + l6 \* [+ X5 B- i
1.5逆向分析技术的乐趣 1 K( g% q$ A5 q2 J5 F* S
" B; t; c8 R8 w* m
第2章 逆向分析HelloWorld!程序
- X  Z* ?- X$ t* Q' Z& t; ]8 z+ r; ]5 a5 ]  C, |1 S& t. G/ T
2.1HelloWorld!程序 1 w. {* ~1 g/ v3 e9 o( u$ w
2.2调试HelloWorld.exe程序 ( O7 [5 G/ R5 `: y
2.2.1调试目标 : {  @  O2 [' X1 |2 F2 a3 T8 i
2.2.2开始调试 ; i- T6 U1 k. F
2.2.3入口点 0 U1 n' N. J' k  R9 T
2.2.4跟踪40270C函数 ; E) m# N1 W6 r, o
2.2.5跟踪40104F跳转语句
) s. {/ Z# x5 ?& n2.2.6查找main()函数 5 g, c  J' l: x" N* O
2.3进一步熟悉调试器
6 D8 h6 e# v2 i( l: U2 d2.3.1调试器指令
; S' j2 `  d- [0 X2.3.2“大本营”
$ U% f- `: F9 K2.3.3设置“大本营”的四种方法 6 q- F- u. l2 B4 f
2.4快速查找指定代码的四种方法 # ?1 z- Q) ?0 C$ p1 [( V6 y
2.4.1代码执行法 / z; I, ~% `; v
2.4.2字符串检索法 4 F" ~' `7 R# s2 V! T8 v
2.4.3API检索法(1):在调用代码中设置断点 ) I( d3 l* C/ _" K$ H
2.4.4API检索法(2):在API代码中设置断点 . ]) F% o# t, A8 k+ T0 P% c3 s
2.5使用“打补丁”方式修改“HelloWorld!”字符串 + N7 L2 ?5 ?/ ?5 r+ w: J1 V
2.5.1“打补丁” : B0 U3 i! K5 R6 O2 `
2.5.2修改字符串的两种方法 . u! M0 W& P7 R1 S# j5 H" @
2.6小结
0 D# n1 q3 s3 ?. _, e' m
( U% W9 I* ?; P6 ?5 F. F# I第3章 小端序标记法 * ~. B& Y& U% z3 b: Z' J

# C: K" h8 Q; \" {- m# q3.1字节序 & w# O7 J; X& K' r  N4 r
3.1.1大端序与小端序
. r2 I& v( S8 u9 W9 G: }: R3.1.2在OllyDbg中查看小端序 2 C. f* d9 K4 ~* @7 g0 V$ X
6 Y( _+ \" p- q/ u$ F) n
第4章 IA—32寄存器基本讲解   S8 e* ~: t# q2 }2 m5 s5 K8 T
; h) b: ]! t( C% ~% u% T# P3 u
4.1什么是CPU寄存器
0 y! k/ [* W1 l+ p- j1 ?4.2IA—32寄存器
2 u) ~- y$ @' Y/ k. K9 E4.3小结
8 f- X, I0 v+ v; I: @: S" i" N$ p/ u5 F9 H; K/ x+ m. S
第5章栈4 C0 ?; V5 \' o$ s4 ]5 W! ?7 I

3 C2 m4 ~6 X2 w$ b5 T2 C& c5.1栈 8 V( l& R9 k& r) c( e8 ]
5.1.1栈的特征
; Y9 Q5 a3 Y( U+ \1 ]5.1.2栈操作示例
  D6 J, J5 Y+ k) F, T5 r+ A) Z% J/ V1 I7 m
第6章 分析abex'crackme#1
7 c' N% d2 R% s1 V# {# y- o0 f' j' }+ d! X% ]8 X4 E8 u7 X
6.1dbex'crackme#1
/ O/ B3 T0 [. n6.1.1开始调试 4 B+ ^0 j4 N: W1 c0 i" V3 r# M, k
6.1.2分析代码 - W+ t2 C. u$ U2 i9 r8 g4 |
6.2破解 6 i5 ?0 P0 i( L! q) A+ J; x% w
6.3将参数压入栈 ( O+ l. i) p, ]6 O
6.4小结 , d5 M$ }$ b5 @

8 _4 |  F* s1 \+ J第7章 栈帧
! X4 v) y0 ?$ _5 i% ^6 k  z; H7 l1 ]* f+ x9 \/ A
7.1栈帧
" \5 [; p6 ~& y# x* w7.2调试示例:stackframe.exe
/ e( U; }! `, Y; G- J7.2.1StackFrame.cpp 1 V0 \- P% n, V7 M
7.2.2开始执行main()函数&生成栈帧 # ]* |2 R' v! j, I/ h: ^
7.2.3设置局部变量 7 p7 |) @3 o; F7 o
7.2.4add()函数参数传递与调用
  r; F! Z9 S/ G7.2.5开始执行add()函数&生成栈帧 ( e9 ?" x, d: x# [; g
7.2.6设置add()函数的局部变量(x,y) $ z7 Y* R( ^, g% f( r' n' a, i9 N* T* _
7.2.7ADD运算
8 f) ?' v* v$ M9 F, W7.2.8删除函数add()的栈帧&函数执行完毕(返回)   u  j4 W' v' h: O. ]  j( H8 g
7.2.9从栈中删除函数add()的参数(整理栈) + T# Q4 B6 q1 y
7.2.10调用printf()函数 $ n1 ?+ ^' c, t$ J+ A6 o
7.2.11设置返回值
. A* a* L4 C" A! B7.2.12删除栈帧&main()函数终止 & |# c4 m. E3 r
7.3设置OllyDbg选项 6 Y; t" [/ x, m; z
7.3.1Disasm选项
6 U' A6 x; O) D3 Z4 @1 t7.3.2Analysisl选项
$ ~( `( M& }! O3 @7 T7.4小结 9 G; g* k" y( }1 C/ X# N
: z( j- B% e4 ]! c
第8章 abex'crackme#2 . x' r1 ]0 G  R$ M) ]7 U4 o0 ~- t

% O& z1 f6 a/ \7 T" `7 p0 s' d8.1运行abex'crackme#2 # _% d% e1 y7 K, f4 Y
8.2VisualBasic文件的特征
% @9 S! n/ X8 |8.2.1VB专用引擎 2 M6 {) \' J7 x
8.2.2本地代码和伪代码 ' |/ q# P$ w) b, W2 U6 `
8.2.3事件处理程序 4 W9 [2 ~8 ~) O8 |/ |) m7 e% o
8.2.4未文档化的结构体
0 K3 _: q4 I) A' B8.3开始调试 , M# g: C* D1 B9 f
8.3.1间接调用 / R& G9 o, `# p0 D
8.3.2RTMainStruct结构体
; K! Q5 B4 P0 l& J2 e  K* j3 ~8.3.3ThunRTMain()函数
8 z5 g2 z4 S* h$ \; `8.4分析crackme 2 N5 `; @/ S8 a3 r: S; l, N
8.4.1检索字符串
: I& P6 q, `8 `# m# M! B& I8.4.2查找字符串地址
! D8 y& g! C0 I9 V; M9 c8.4.3生成Serial的算法 , x1 O$ K2 r: j  _7 A( f
8.4.4预测代码 & u' ?" M8 I* G
8.4.5读取Name字符串的代码 3 P! n6 J( p, f# j1 \6 J. q. s
8.4.6加密循环
) N6 U/ v. U1 e+ w8.4.7加密方法   f/ h# y  z0 F1 L9 h: w
8.5小结
2 a0 `* y: J9 @, W2 m. ?: t" I9 a* w3 G/ v2 c  O: p% d
第9章 ProcessExplorer——最优秀的进程管理工具 ! `8 R9 n: `: V/ @  \: t  s
; u& ?6 u8 O4 |$ X8 R6 S5 U
9.1ProcessExplOrer 3 A, [* J6 B! X/ X' W) v& k; o
9.2具体有哪些优点呢 : y+ B- C4 R" u8 C
9.3sysintemals' O8 L% s: K' B* }) p- m

0 n# |8 o- b9 P第10章 函数调用约定 5 ^9 T6 I! d/ \( F- F& K

/ ~& A& z% V/ C) \% l/ e4 i10.1函数调用约定 3 N$ [( \; T  m
10.1.1Cdecl
, t7 v" _8 r  A  N. f9 k6 K10.1.2Stdcall ! E- X& }% Q7 y
10.1.3faStCall
5 F% ?- p, s& ?9 X: \! ?2 \5 W# s( K
; L4 Q  l1 K& M/ I第11章 视频讲座 $ `8 D6 d0 A  D
; ]5 `3 a; V# m7 V4 y% L: C8 ~' b
11.1运行 * U! _  w6 `8 t
11.2分析 1 w. N, P' e; H+ I: {2 _% _
11.2.1目标(1):去除消息框 . G; L, o' t+ n
11.2.2打补丁(1):去除消息框 3 s+ S0 {9 W/ Z6 w% x
11.2.3目标(2):查找注册码
/ y; [9 m, u' B/ x11.3小结
8 q$ M- M! N: d% N3 g2 M8 `! z; j# _
第12章 究竟应当如何学习代码逆向分析 % q9 X& c7 V5 d3 D3 R4 z

3 I. G3 C7 v& K( A4 `6 G4 K12.1逆向工程 : [: ^" _& m# k3 ]1 ]0 O
12.1.1任何学习都应当有目标
" e5 d# A7 t7 E12.1.2拥有积极心态
( \- o2 t: ?7 Y# ~0 R& @12.1.3要感受其中的乐趣 ' v* Y5 G+ g% Q' \4 V
12.1.4让检索成为日常生活的一部分
' L5 D. o/ k/ L- ^2 X. E- A: c12.1.5最重要的是实践 4 G  I3 `# J) ~6 k* K
12.1.6请保持平和的心态
- u- J+ N0 S0 `/ x/ B
7 n4 z8 N- e$ n* K5 U7 q+ X第二部分 PE文件格式 : H  H0 Q% E/ G* m* u
$ ]2 H4 t: B" ^0 W
第13章 PE文件格式
1 \! F! A! }& N4 k) a 8 j- O) a2 a& a$ ]! L1 M
13.1介绍
# n0 t1 p* A2 b2 N. }( l& C5 g13.2PE文件格式 ! Z* Z  b3 c2 I3 X4 W: v
13.2.1基本结构 " R2 a5 `2 c! }0 p. J( G
13.2.2VA&RVA - x. ~# X/ r- e; H
13.3PE头
% v1 ?' N' L& M3 @13.3.1DOS头
. f6 f2 u4 Y; h& S2 ?13.3.2DOS存根 + ?) y! r' s( O% @1 H: F
13.3.3NT头 ( A  \8 L6 g/ X% L% B- s; B
13.3.4NT头:文件头 * ?5 z" `' J$ K. o6 L
13.3.5NT头:可选头
! [8 p$ ^( y+ [5 K+ z& G  A13.3.6节区头 7 h+ a* }7 R7 B2 @2 }& ^
13.4RVAtoRAW
+ O, i2 h9 ^7 G1 u, Y4 Q+ ~$ \13.5IAT
$ g& D1 H9 \$ B7 t' t: Z. ]13.5.1DLL
, {  U, [) H4 B2 |( E5 ?13.5.2IMAGE_IMPORT_DESCRIPTOR
) p6 J/ N" U4 ]& x13.5.3使用notepad.exe练习
2 `. q: n( @: l3 L; c13.6EAT ) M  z' H+ S$ S/ e% t( _5 x+ O# s
13.6.1IMAGE_EXPORT_DIRECTORY 7 i  m. G7 l1 c7 i6 |9 [; Q
13.6.2使用keme132.dll练习 & ?* e7 N, [7 _
13.7高级PE 9 y1 J8 I/ p' Z! L% E+ ^; e* B
13.7.1PEview.exe + o) ]( L" H' M3 S% a6 w( d6 U8 u
13.7.2PatChedPE # U! H2 k) o1 P  ?6 v% D0 z+ ?
13.8小结
3 N* z8 g+ h$ W5 x
4 @" M' b9 _! f' O- b0 L第14章 运行时压缩
: T9 `' W+ D! v+ g2 H6 P; G5 r2 S$ i
14.1数据压缩
' O" r  F( C) y) u! r2 K( C* r14.1.1无损压缩 ' p' _! |- }: L1 I; t' @6 M6 q
14.1.2有损压缩
- u6 e# ~2 w. l* e; `6 e$ n$ m14.2运行时压缩器 $ {, R/ ~' `' d6 c; {2 C9 K$ y
14.2.1压缩器 & r7 _- e2 ?% Y* i- K$ U- \3 g
14.2.2保护器 & g# f0 O# Q4 N2 A4 ~8 e  I5 v
14.3运行时压缩测试
5 }9 g3 p8 M( _* r) t* ^* a: u% `6 j: r
第15章 调试UPX压缩的notepad程序 0 B9 J! r% \. q/ d$ H
2 K) t* e7 N3 ?7 E5 b
15.1notepad.exe的EP代码   p# V7 t1 t4 d  n5 K$ N# r5 h
15.2notepad_upx.exe的EP代码 % I% I' _; c& j" u! H5 b' i
15.3跟踪UPX文件 ( l1 U* u: Y- Z) {
15.3.10llyDbg的跟踪命令
2 m3 t6 U; J# V9 Z15.3.2循环#1 & G# i1 G1 f5 W' l! {; k2 a* [# B
15.3.3循环#2
8 }& M* R* y/ p% W; s) x* G15.3.4循环#3 5 r. h' F, K- t& t7 f9 g9 x
15.3.5循环#4 - r/ |% z& ^* g; {2 v0 D
15.4快速查找UPXOEP的方法 6 E8 e( b, H$ U& X0 C& T) [) r; _
15.4.1在POPAD指令后的JMP指令处设置断点 5 y8 ^1 F8 \& S% G+ N
15.4.2在栈中设置硬件断点
, r" A- K: J; ^: [3 Y/ Y# Q15.5小结 & H2 y- }+ b( h

* a" ~0 V, X5 A第16章 基址重定位表 ' L/ X* q: P7 r/ I- B+ ~% {
+ I9 \. E5 G* o8 N4 m
16.1PE重定位
7 n; v7 t" L, q6 s! r  S16.1.1DLI/SYS
) m6 a& D' b8 V: @& b+ C9 q16.1.2EXE
% l: s/ X  }9 U" h* t' T: s5 _) Z( b16.2PE重定位时执行的操作
. i4 g  a  X2 D& X, C7 @% }: i16.3PE重定位操作原理
- w9 k& I/ I) T( O- n$ ~16.3.1基址重定位表
  P: H' v3 [# l# y/ [0 u4 s16.3.2IMAGE_BASE_RELOCATION结构体
) g) L+ Z' h  N) l16.3.3基址重定位表的分析方法 * [; Z! V8 |1 C6 }* R  v
16.3.4练习
, d( k7 q/ y- L6 N  s) Q8 i# U! T
5 K3 O9 @9 m5 @3 B+ ]第17章 从可执行文件中删除.reloc节区* {5 }0 ?7 W) b+ |* B7 d3 Z

% S+ t2 c5 ?+ `1 Q% \% g17.1.reloc节区 2 b: d0 _2 L% N# h
17.2reloc.exe + W' M. [- f8 \
17.2.1删除.reloc节区头
) M8 @* z( h% U17.2.2删除.reloc节区
& V6 l. d7 d5 X17.2.3修改IMAGE_FILE_HEADER
& U! f) Q( z9 d  Z' _/ v9 ?17.2.4修改IMAGE_OPTIONAL_HEADER
( t' R0 ~. `/ m4 Y4 C; @! B17.3小结/ [* F9 I0 l+ B+ i3 a! n$ }$ R# P

: B' L4 e6 F) {! ^第18章 UPackPE文件头详细分析
: S- U4 x# p1 ?8 d/ C & Y3 k  ]" Y/ a$ j: s
18.1UPack说明
5 O, C5 Y$ Z. v4 A& Y4 ^+ T18.2使用UPack压缩not印ad.exe " _/ N4 l0 W, d  d
18.3使用StudPE工具 * K& N7 K3 G. E" P) J
18.4比较PE文件头
4 V# F1 o* X2 n0 P0 O18.4.1原notepad.exe的PE文件头
, P0 f8 a) f$ b* ?, H" v/ z0 y18.4.2notepad_upack.exe运行时压缩的PE文件头
6 H1 Y3 a* \4 U& V7 F2 t18.5分析UPack的PE文件头
! S  L6 d. D* s2 T- q9 z18.5.1重叠文件头
/ v1 R, m% B$ \! C! M" [  [* M18.5.2IMAGE_FILE_HEADER.Size Of Optional Header ' V7 y# I' f& j
18.5.3IMAGE_OPTIONAL_HEADER.Number Of—Rva And Sizes # ]% r' K. L9 h7 d* l
18.5.4IMAGE_SECTION_HEADER ) M4 C( u$ |+ E5 A/ r9 m
18.5.5重叠节区 ' W; i: u: h; q8 l% p+ ]' N6 l6 Q6 d
18.5.6RVA to RAW * t; i) n) B) }( M+ _+ A1 t7 t
18.5.7导入表(IMAGE_IMPORT_DESCRIPTORarray) 8 S# V' o8 b" ?1 \
18.5.8导入地址表 7 F7 h9 G$ p# \6 I3 s2 z, n1 @9 \
18.6小结; Z! B# A; j" N* t6 v: V1 p

- g/ G9 E; R- O6 P5 ], S第19章 UPack调试—查找OEP - l- ^# b* |7 I$ h. E0 N

& p1 a1 c2 H/ a1 F/ W7 J! @/ T19.1ollyDbg运行错误
3 F3 A2 W* ]! l+ [19.2解码循环
* u- v& `' C* M: R19.3设置IAT % K* ~6 c! K* q% a6 |
19.4小结8 |, Q$ S, w8 q' L
' X( n3 {+ U. [1 ~6 \$ V
第20章 “内嵌补丁”练习0 r1 w' R+ [/ q5 ~

3 j! |: f3 `5 K20.1内嵌补丁
- S# y7 z" ]1 u* x+ m, \20.2练习:Patchme
3 n5 p% k/ d  A; n! W  m! F20.3调试:查看代码流 & h/ B- ?7 S, |" n) H$ O. @' F! l
20.4代码结构
' F0 D, m- E( l# y3 L6 K20.5“内嵌补丁”练习 : G8 q" @: l: W8 t+ A& v8 J* M
20.5.1补丁代码要设置在何处呢
! H+ W! J4 \; K0 ?$ L6 r  l20.5.2制作补丁代码   i6 W6 V5 }- G2 A
20.5.3执行补丁代码 + {' z" `/ o6 d( C
20.5.4结果确认4 r' T' ?) N! x: R- `9 \' V
+ b1 O8 B5 [, h1 S, K5 P
第三部分DLL注入
' C% p- g9 f; G9 z! R9 L
8 \: v5 {  M6 t" B" G  G+ j第21章 Windows消息钩取
0 i- ~; P+ j1 X# S/ }
8 G/ m" r/ {# _8 Z, }& g211钩子 ( v, B- L$ v1 K. n, Z/ H
21.2消息钩子
5 ?0 O( v3 A0 ?( o* e7 ~: L. ?4 Z21.3SetWindowsHookEx()
% A5 `+ g7 h$ K/ ]21.4键盘消息钩取练习 ( w' i1 q2 y* j5 g1 ~
21.4.1练习示例HookMain.exe / q5 A! S$ S- L% ~4 q
21.4.2分析源代码 1 D9 r% G& d7 u
21.5调试练习
+ e( L$ A! R# j0 h3 N. e, g21.5.1调试HookMain.exe & j$ b, E- N" v/ V! Q
21.5.2调试Notepad.exe进程内的KeyHook.dll
* ~, L# F/ A# c9 H6 A9 z) w5 n21.6小结
; s! U8 E7 U9 O0 S: X; B3 O* e7 E: E" o: o 3 ]- G& D& s) `2 F
第22章 恶意键盘记录器1 v% f6 W9 N+ z, P* x9 w
3 _' ]1 k+ P1 g" W8 M' e2 R3 ]- ]
22.1恶意键盘记录器的目标 ! h, [1 O1 e$ P) N( W
22.1.1在线游戏
7 M/ `, D. c) N, N  l22.1.2网上银行 ; l! c: q( _& M
22.1.3商业机密泄露
' n: I4 C- O1 m( {0 m22.2键盘记录器的种类与发展趋势
: k: X$ O# X* i22.3防范恶意键盘记录器
  N+ Z9 ]/ _3 H22.4个人信息; w: Z/ r; v# C% |

% \! }2 k; c1 `* J, z3 E& v第23章 DLL注入
* N4 P3 E4 V# L6 i+ m$ x- S+ F
1 Z- H' O1 Z/ ], }& K+ ?: r( a23.1DLL注入 ' _' F' v) B$ w( K' }, K0 D
23.2DLL注入示例   Z  X: t+ ]: Y! `& C
23.2.1改善功能与修复Bug
8 Y7 T+ G8 P; {( a23.2.2消息钩取
3 o6 Q( r6 w6 U$ j, c6 X23.2.3API钩取
  u! t/ [4 i  p0 x% u23.2.4其他应用程序
' M  ?0 V4 v% I+ \! p8 F23.2.5恶意代码
( D7 ~% g8 a" U4 h# p6 \7 s; {23.3DLL注入的实现方法
2 B5 u7 @6 t4 u# [5 e: l23.4CreateRemoteThread() 8 x& f. _5 ?3 `
23.4.1练习示例myhack.dll
3 Y2 D2 w- G7 T" _1 v23.4.2分析示例源代码
2 x, V; K, ]& E9 c7 o+ _; Z23.4.3调试方法 ! D  f; t$ E3 B8 o  b$ e
23.5AppInit_DLLs
: ]0 g$ d: j% a$ {& J23.5.1分析示例源码
3 j/ [5 K8 v' v3 s; b23.5.2练习示例myhack2.dll
9 }5 a* K" K  C" R# U$ w5 o23.6SetWindowsHookEx()————— 1 O1 V- N( [* a* S4 I
23.7小结" m! ]) @0 t% ^3 k. G" J
: @. J$ }$ i* i) V) p7 I
第24章 DLL卸载
; S9 N2 X. i" ~6 s7 U) ~8 F0 d2 M* r6 Y/ I  ~  y5 i) X) c: I
24.1DLL卸载的工作原理
2 V+ j! [8 S$ Q24.2实现DLL卸载
: }9 o5 }; c0 t# U4 r24.2.1获取进程中加载的DLL信息 ) h0 _% s' R7 }" w
24.2.2获取目标进程的句柄
7 s0 M/ V/ `3 x. A5 v- _0 |24.2.3获取FreeLibrary()API地址 , h' U: f* a  Z
24.2.4在目标进程中运行线程
; _# v9 {  D5 y: j& u, w24.3.DLL卸载练习
; o, T3 E- ^1 s- l9 H* }* ~8 f$ M24.3.1复制文件及运行notepad.exe 6 J7 {% S  K, S8 K
24.3.2注入myhack.dll ) j! p6 {! ?0 t+ k: _! a/ o" x
24.3.3卸载myhack.dll
: Z8 I% y& U6 P/ H+ ]% Q# w4 M6 s6 S% }6 ^. P
第25章 通过修改PE加载DLL
* J; h1 `& r# h* M, R7 |
; |& c5 _7 u% L. J2 y& W' w7 H; J2 ^25.1练习文件
* Y, E7 K# q, F25.1.1TextView.exe 8 y# e" J0 i+ {
25.1.2TextView_patched.exe
) \8 W- D' o  Z2 J' ^25.2源代码—myhack3.cpp * J1 ]; S. Z3 A
25.2.1DllMain()   D) h, y  T0 m3 K
25.2.2DownloadURL()
/ `* L+ k$ ?/ O# e$ l1 ]2 V5 @25.2.3DropFile() 3 g8 n* T9 n; N
25.2.4dummy()
* V" c: ]( F+ Y) J, \25.3修改TextView.exe文件的准备工作 ; r; T; b- t/ `+ e# O  u' b2 }
25.3.1修改思路
0 {7 [, R3 ~7 q& ?8 R' b  [0 ^+ L& \25.3.2查看IDT是否有足够空间
1 x9 \& A! ]" v. I$ D25.3.3移动IDT
: ?9 |: r" ?" R( N  a25.4修改TextView.exe / g9 Z4 t/ n) A/ N! o' s) @
25.4.1修改导入表的RVA值 ) X0 h% D5 ~6 k6 T6 i1 E  \
25.4.2删除绑定导入表 . ?+ ^( P! [) ^
25.4.3创建新IDT ) |) n+ k* w- l: W
25.4.4设置Name.INT.IAT # i0 {7 l! |: `9 C
25.4.5修改IAT节区的属性值
5 [7 u! k! P) x* D, a25.5检测验证
& ]; P& H9 Q! {! l1 P25.6小结 1 l  j8 O3 r" i; u3 y7 X
- \* Y& R8 r9 }
第26章 PETools
: g6 U/ E( b5 ^3 P5 n, }4 S1 r 8 Y' L7 O7 @; D1 t  r; o" f& }
26.1PETools 2 M9 r5 ~! L' p  k& n4 `
26.1.1进程内存转储 1 w+ A7 _/ [) O3 L% `/ O
26.1.2PE编辑器 3 \+ i# H/ N2 J, j/ ^
26.2小结 : S4 W+ K& k4 `! |. Z
6 Q9 i$ ~# I% b0 O4 L
第27章 代码注入 0 @5 O$ K7 Y" a# E
9 }3 R: s4 U, v2 t! r2 F1 g
27.1代码注入 " c% X/ T) Y/ v: o8 X# g/ }, D
27.2DLL注入与代码注入 / y4 o9 p# u" s/ }( v4 s0 [
27.3练习示例 1 [5 q3 _5 V% b3 H
27.3.1运行notepad.exe
) K1 u$ L% `1 ]  m) m* W: ^9 m0 _27.3.2运行Codelnjection.exe
. r( S3 n% J$ @. e/ b+ S0 @2 {, `27.3.3弹出消息框
$ G9 A9 R9 l8 |$ q27.4Codelnjection.cpp $ u4 K, I) ~: y
27.4.1main()函数 , y% d3 U0 `% _/ t; f
27.4.2ThreadProc()函数 + e. T" z: X- }1 C. }
27.4.3InjectCode()函数
9 v3 H9 J7 _/ w4 f2 N% a27.5代码注入调试练习
/ K$ B7 q2 b, Z* ~+ u27.5.1调试notepad.exe # U( X" b7 L% g
27.5.2设置OllyDbg选项
* G/ H, F2 c$ q6 J  g8 D/ `7 y# M27.5.3运行Codelnjection.exe
2 r" x) r/ B( V( X2 h& v27.5.4线程开始代码 " d" C1 I* U. D8 u% m6 R/ ~
27.6小结 1 h9 n5 }2 ~. c0 b2 L# s

. o: O$ t0 P8 |2 Y+ y6 p. n; {第28章 使用汇编语言编写注入代码 8 s$ p& G& P+ a. m5 P1 o1 A
' i' m) g, ~! A+ B2 }
28.1目标 % L$ p. B3 T, y' ~9 J  K4 O
28.2汇编编程 ) w7 k2 ]1 n! I
28.3OllyDbg的汇编命令 ) v. a% p5 L: D% B3 Z1 W5 k% g
28.3.1编写ThreadProc()函数
# n+ @" c& A# @& M28.3.2保存文件 : Q1 F6 V) R6 _* Y
28.4编写代码注入程序
: V) t  z, q) O& ~% H% \1 \28.4.1获取ThreadProc()函数的二进制代码
& U1 h1 Y) Y3 n% Y& O  @0 J28.4.2Codelnjection2.cpp $ C0 I3 S6 `1 T4 ?( R2 D# E6 z
28.5调试练习
* o( \% l4 B6 x$ V' I$ k/ F28.5.1调试notepad.exe
# d0 j2 L5 O6 d28.5.2设置OllyDbg选项
2 H9 A" x& D' _# l9 H) t28.5.3运行Codelnjection2.exe
/ t6 `; G2 s( |8 a) f28.5.4线程起始代码 7 V3 Z' p# ?  l6 l
28.6详细分析
: ]. B. v. w) k  w  ?" C6 K28.6.1生成栈帧
4 `1 @7 D3 Q6 o2 R2 }1 |$ K+ x28.6.2THREAD_PARAM结构体指针
* I" K" n1 y& Q" H2 k7 l0 V( o2 V28.6.3"User32.dll"字符串 7 L% f$ B! Q& N  v' A) d
28.6.4压入"user32.dll"字符串参数 ' s' a3 ]  j! m: l' S
28.6.5调用LoadLibraryA("user32.dll")
/ |" `  S% a  }9 Z' A28.6.6"MessageBoxA"字符串 9 s1 Q; R" l, u5 H
28.6.7调用GetProcAddress(hMod,"MessageBoxA") & J4 J; i. @+ Y& U* u/ C
28.6.8压入MessageBoxA()函数的参数1—MB_OK 5 ]6 c& O  l, D) G! |3 \
28.6.9压入MessageBoxA()函数的参数2—"ReverseCore" - V8 u9 u! T! p4 N$ \+ L7 X
28.6.10压入MessageBoxA()函数的参数3—"www.reversecore.com"
3 O" `+ Q! J/ e* b- G28.6.11压入MessageBoxA()函数的参数4—NULL , F& q% a: p+ N, q2 D
28.6.12调用MessageBoxA()
7 n+ m. u6 T. H" Y2 B* [5 I28.6.13设置ThreadProc()函数的返回值
. |6 S8 ^' g0 E, A$ z+ q: M7 Y28.6.14删除栈帧及函数返回 2 k/ G! ]2 U! y1 ^3 L' M0 J
28.7小结 3 t6 T. ~3 p: Z/ T% [# z' o  S* }

% R+ F$ O) ^) J# f4 W& b6 G8 b……
  |8 Q7 T; g. _7 s+ D* I0 @4 x+ U, V2 k' \/ K; o$ T
第四部分 API钩取
! z; a0 c' X, ^8 n  I$ u# i4 C; d+ g) X* ?2 b
第五部分 64位&Windows内核6 8 M: _+ v3 f! G( w9 `  m6 X
6 ~2 F/ z4 A. s2 _* J" n0 I, m
第六部分 高级逆向分析技术 7 v7 x  @/ M$ _, ?

: U7 h8 Y& C# g4 ?9 I! {第七部分 反调试技术 ( F" T% C$ U# Y1 c0 e, I9 \
* |+ N* T8 D: n# h6 H+ B0 z
第八部分 调试练习 # e5 U4 f% C# Y0 Y# D0 C
& {; F3 b, M+ }% {' L5 i
结束语
# J3 H4 {& n. q8 T, c2 d
7 ^: U7 L/ i7 X1 h4 J9 T索引/ X( [; E9 [7 Z
6 U% L. e1 z# s. o0 p
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-21 17:01:30 | 显示全部楼层
学习逆向的一本好书。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-21 17:13:16 | 显示全部楼层
武老师的书呀,支持下`
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-19 14:45:35 | 显示全部楼层
果断买了本。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-13 07:30:03 | 显示全部楼层
的确是一本好书推荐大家都要看这本书真的是逆向的开山鼻祖了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 15:48:00 | 显示全部楼层
小甲鱼出的书吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-2 10:44:05 | 显示全部楼层
hello world ! 亮了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-4 18:27:06 | 显示全部楼层
逆向太难了,绝望
! y3 ~1 j0 P( y! ?: ~! u0 F1 j/ y9 Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-12-16 20:08:07 | 显示全部楼层
好东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-19 19:05:46 | 显示全部楼层
有电子版的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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