QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 2223|回复: 6

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

[复制链接]
累计签到:2151 天
连续签到:8 天
最佳答案
138 
发表于 2016-11-12 17:22:37 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
61ozEQObhvL.jpg
4 V( Q0 E0 n: S9 [0 _2 {2 |8 _

  J! T4 @% v( O- Y书名:《逆向工程核心原理》; L) Y7 @3 J+ R, q- b
作者:李承远
, i3 q1 y, z. P% Z/ {. Z+ j% h译者:武传海1 L; X" l3 y5 P8 B3 {; ?3 l
出版社:人民邮电出版社# E. g3 k5 y* O! I
出版年:2014年5月1日(第1版)
# P% ~! K6 Q3 ?' J定价:109.00元
. y$ q% U6 F3 \  T- M' W! b0 N2 J装帧:平装
. a* P/ W5 {3 B, I# d! r( cISBN:9787115350183
: G2 Y4 S6 e  U+ f$ E; g
& w2 \1 E& ]3 X/ M! a& ~9 B+ a购买链接:
4 Z; ]% o) }# a; j% X  R2 A1 \$ |, _* m6 d" q8 r

  O" ^7 H$ C6 c5 t+ U- g* n
亚马逊 -> 传送门* {% @' x# o% H* ~

: S3 K8 l: y* d4 j+ W$ r当当网 -> 传送门5 ^; k/ }# K/ K8 Y. L- F* y

' ~; g" k+ x# s0 N" v京东 -> 传送门. Z# R( u7 k* T+ S

4 f2 v" e1 k6 g3 O* V天猫 -> 传送门* M; C7 f7 a, o+ M' C8 C$ t* K6 N$ F( M" S

) e1 V7 j/ Q+ r
- {2 \- O; ?0 z  o内容简介:3 I; ?. \8 v" g5 c# g% m5 t* `8 P
2 }$ y0 n, T: X$ `' i8 D. {$ I! q5 r* o


  c+ V, ^; X* E8 P《逆向工程核心原理》十分详尽地介绍了代码逆向分析的核心原理。作者在 Ahnlab 研究所工作多年,书中不仅包括其以此经验为基础亲自编写的大量代码,还包含了逆向工程研究人员必须了解的各种技术和技巧。彻底理解并切实掌握逆向工程这门技术,就能在众多 IT 相关领域进行拓展运用,这本《逆向工程核心原理》就是通向逆向工程大门的捷径。; c3 }6 E2 Z* J
9 d: Z0 R% {. z$ v) V
想成为逆向工程研究员的读者或正在从事逆向开发工作的开发人员一定会通过《逆向工程核心原理》获得很大帮助。同时,想成为安全领域专家的人也可从《逆向工程核心原理》轻松起步。
' F0 p1 [2 F: B# F% H6 t. p, \3 a, c# K  V
# q. T5 t. H  c$ u2 \( x! p0 c: K
目录:5 C1 C- R, X6 x
$ K/ L0 w% K: e% U, D4 E5 w


! W* R: \$ L0 t; a# Y第一部分 代码逆向技术基础. W+ n$ \8 V# R8 w

, h$ f6 ^  `  {! W' j- h第1章 关于逆向工程 0 `; ]/ V. U* X8 Z6 U4 s
. O/ E- t# A7 e1 z$ [3 X
1.1逆向工程 0 n2 x6 \+ k& a
1.2代码逆向工程 % b) G) d; _0 a3 h% K) I
1.2.1逆向分析法
2 o8 d7 J% c9 @4 G1.2.2源代码、十六进制代码、汇编代码
" r  [& p, g% j$ p4 T7 V1.2.3“打补丁”与“破解” ) I+ q! y2 [. o* g2 i  @( j
1.3代码逆向准备 . a/ ]  \: s5 \7 a' ]% [; {+ U5 E
1.3.1目标 5 {1 H2 R2 R, @/ J+ h3 g6 O
1.3.2激情 6 G7 B# U0 i" N1 o
1.3.3谷歌 . s4 Y6 S/ p6 A4 ^7 _+ c/ ~
1.4学习逆向分析技术的禁忌
) b9 S7 U. i: x* n! P2 v1.4.1贪心 7 a( ]( [! ^( f& ?# `
1.4.2急躁 * U" I3 w0 q* d  }
1.5逆向分析技术的乐趣 9 T4 C+ v8 B9 j4 X4 c9 g: x* @
( K; [1 x4 B8 D# F) O! ?, b
第2章 逆向分析HelloWorld!程序
* X( O, ?0 i* Z, j  C1 o9 D& c+ N# S6 |( H
2.1HelloWorld!程序
! q, S2 d2 W& F1 E9 \2.2调试HelloWorld.exe程序
# q/ H' H8 t6 `2.2.1调试目标 ; |! Q/ g7 t4 ~/ H2 ?0 j" |
2.2.2开始调试
' Q3 c( p  a3 x  O2.2.3入口点 6 F7 ~( Q% H+ c2 r" ?: Y6 z* }
2.2.4跟踪40270C函数 ' H7 z  N8 c" D6 l' W
2.2.5跟踪40104F跳转语句 7 ?& h2 n. _7 g+ e) q5 M
2.2.6查找main()函数
3 f! M9 D( m" c" S* D6 V2.3进一步熟悉调试器 % I5 e3 D2 f7 X4 a. K
2.3.1调试器指令
* Q" u  |7 y# e' }, d) }2.3.2“大本营” $ f6 @  r& c5 O2 ]' \# S
2.3.3设置“大本营”的四种方法
( G% g. e/ Q% ?! t/ X1 j4 v: r2.4快速查找指定代码的四种方法 % v# o0 a3 M: F* k% [  k
2.4.1代码执行法 : A" U; H7 [$ P: _4 `8 b2 h$ {, a
2.4.2字符串检索法 / ~% A& [3 f5 C! d& Q
2.4.3API检索法(1):在调用代码中设置断点 0 H1 h: D5 Q+ l
2.4.4API检索法(2):在API代码中设置断点
& o4 j6 \& h  h2.5使用“打补丁”方式修改“HelloWorld!”字符串
" ~& o6 s* P$ |5 l% j! I  x2.5.1“打补丁”
' o' Y  E0 n$ @2.5.2修改字符串的两种方法
" y7 f. s. P  O% ~0 q% A2.6小结
+ [, X! i- w( p4 @, Y$ ^0 a6 m' J3 R& ~! F, B
第3章 小端序标记法
. }% J  ?1 Q, y* w; u % }# ^- m* a* Q! _0 i. \  D7 @
3.1字节序
) x+ D' B& A( `2 w: y, K' c3.1.1大端序与小端序
! {% `" B1 b: X. F# r/ M$ x3.1.2在OllyDbg中查看小端序 & u: C1 K- I1 X8 `0 |) _: i

* L$ ~/ W% U9 _1 a) Y3 D# l第4章 IA—32寄存器基本讲解
+ B# i& s  D2 \' [, N
; c5 D3 f% W" ^5 E, m4.1什么是CPU寄存器 % a2 Q1 U$ z6 v7 p* p3 i! ]6 D
4.2IA—32寄存器
- i' L3 ^* z/ U2 r0 ]6 t0 E4.3小结
, X- j$ q, l$ d; n- k8 B
0 L; y" I" Z. x0 C5 d第5章栈2 q& v. w+ V6 k( m

8 w6 E5 V" E' X, x! o! ^: D& h  T5.1栈
+ _. l6 w- ]$ k% `  C/ x5.1.1栈的特征
, t+ [) A$ @2 E) f' a9 K' F5.1.2栈操作示例
7 Q1 `& s( R9 r8 v
2 ~% Q7 M- a3 G# q1 X第6章 分析abex'crackme#11 s1 C% Y" |2 `; o4 S
$ p' I9 C2 f7 I% c6 W) k! B, S# d4 b, C- j
6.1dbex'crackme#1
, u7 w0 f6 R7 p7 w# [6.1.1开始调试
% Z5 s' Z& J. r8 \) m6.1.2分析代码
* d6 K( C2 g& E- T  W7 `+ A! h, e6.2破解 / c! ~# x5 k$ A
6.3将参数压入栈 - i& t  l. @2 P; J1 I
6.4小结 / C) A/ ?; K/ l) l0 @

, s( f6 l5 i6 v( r2 U4 {% g第7章 栈帧
) k: n" d; N4 p2 r; O; p. {$ F- A: o! o  y1 L( M
7.1栈帧 ' s% B- ~9 ^% K0 p
7.2调试示例:stackframe.exe / Y' q. @' r& O" b$ x/ s
7.2.1StackFrame.cpp 5 i  J; K6 }+ p3 r" I' V( ~! e7 {/ q
7.2.2开始执行main()函数&生成栈帧 : t* j4 R( M, F! g
7.2.3设置局部变量 . |& [* j) v8 H+ |5 M$ P6 b8 y% @
7.2.4add()函数参数传递与调用 " X9 d( [% O+ N6 m5 v
7.2.5开始执行add()函数&生成栈帧
0 @0 F7 O; r2 ^# g7.2.6设置add()函数的局部变量(x,y) 0 v2 G1 w8 b' L; }
7.2.7ADD运算
$ G' X3 e, f2 {7.2.8删除函数add()的栈帧&函数执行完毕(返回) 9 P' v$ `. D5 m; C; |( ~
7.2.9从栈中删除函数add()的参数(整理栈) 6 T8 t( ^, D" p9 k0 M
7.2.10调用printf()函数
% s# W# w; A( K$ Z6 S7.2.11设置返回值
8 |4 ]7 M5 ]2 L) m7.2.12删除栈帧&main()函数终止
- M& P  F# g; N# ^8 y- K7.3设置OllyDbg选项
) X; x1 {0 `5 j7.3.1Disasm选项
. u; U7 A: ?1 Z0 {3 C. N; c7.3.2Analysisl选项
) Q. Y# ?9 C1 B+ r/ T0 E7.4小结
. z6 ^+ l" u+ ^7 v+ ]4 ~1 a* n8 v8 k; H1 ?+ I; q
第8章 abex'crackme#2 4 V8 L8 c! r2 X( R: K4 x; C

7 s; U2 \4 M) h- ?8.1运行abex'crackme#2 : q3 Z# q" y3 L/ d0 o6 z! |9 V
8.2VisualBasic文件的特征
1 }, @5 l# q! p9 M1 A8.2.1VB专用引擎 8 q" z7 X2 m5 m) E/ c( i
8.2.2本地代码和伪代码
% V0 H/ X9 L9 g8.2.3事件处理程序
& X) V6 }# X5 ~0 g, y- Z8.2.4未文档化的结构体
+ v' F+ \3 X' B5 ]8 h* J3 l8.3开始调试
+ f7 b# i& i1 v8.3.1间接调用 * o: r3 i! l1 Z+ N" n: B$ K
8.3.2RTMainStruct结构体 : G5 e" h1 B; `* D" k
8.3.3ThunRTMain()函数
( H1 p4 B1 m8 A8 Y. I8.4分析crackme 9 s1 U( l$ E' N: q
8.4.1检索字符串 7 U% `* k# c, i, t( J& i6 i% t
8.4.2查找字符串地址
( g. v. I, T! [6 g  ^4 R. ?5 G8.4.3生成Serial的算法
$ r- a2 Z/ @. J3 l& K8.4.4预测代码 0 n; _8 i+ e- Y/ q8 s8 H
8.4.5读取Name字符串的代码 4 g  m: D% a  U3 l
8.4.6加密循环 5 I0 @" n$ U! P( K0 o( Q
8.4.7加密方法 - \8 W$ H% C( U: f3 e
8.5小结
  e" C" S! H' f# F* ]: l
0 R9 i; e4 k1 q0 s: T( g5 `第9章 ProcessExplorer——最优秀的进程管理工具
2 g, p8 e. ^! V: ~8 H' l2 c! t; c( U+ L! S3 K! v( c- J
9.1ProcessExplOrer
7 ]% O" _3 @# z1 j2 N5 m+ X9.2具体有哪些优点呢
* z& S1 x3 F" Z( j9.3sysintemals
0 R8 c4 F8 M9 ^; k
" Z) E4 k, w- Z* p第10章 函数调用约定 / F! ]" Y& y, R' M, n% w; `# F% ]
! G  g1 @0 @) y9 d
10.1函数调用约定 ; z' u7 l) d% \) f" S% }, c
10.1.1Cdecl ! x7 u: @/ \' i( m9 o" \; S$ p
10.1.2Stdcall
: h$ |# g3 _- T) S/ a8 Z10.1.3faStCall
9 ~' g& T7 Q" @0 }" |" u  c7 C, h1 |- {1 N6 |  D7 g
第11章 视频讲座
4 ~4 K3 B: e- ]7 m& J& s0 C: m, w- p  e  r5 r- o5 x
11.1运行
/ T' W$ k& ~  W11.2分析
% n3 @9 s3 U1 X0 y+ W, V- t11.2.1目标(1):去除消息框
& Q% [& h. S% k% _0 g% n4 v( I11.2.2打补丁(1):去除消息框 ; B7 u  K, r0 a# |% J8 P+ f
11.2.3目标(2):查找注册码
* g1 [# y- F2 p11.3小结   D; x- a7 T! B1 M

8 z: F/ ?- v& [% J2 o第12章 究竟应当如何学习代码逆向分析 : }; j+ x8 e, T4 z2 h
2 s! `9 c/ h2 s1 X
12.1逆向工程
! |3 y$ \7 e0 d. n& K" z4 X12.1.1任何学习都应当有目标 7 Z8 ?* t7 v8 O, F0 \* \) O# M  ]# c
12.1.2拥有积极心态 7 ^) C& l& }* M' m; ]
12.1.3要感受其中的乐趣
1 v& N2 P* T# K, A12.1.4让检索成为日常生活的一部分
" E+ T( A3 Q+ o12.1.5最重要的是实践 , i' h2 q6 S. T  J- c$ `& q3 g" h8 c
12.1.6请保持平和的心态
9 T' T* _7 N8 O8 G $ ~8 z: g$ `/ E) l, k8 Q
第二部分 PE文件格式 ! G! R8 O  q* k9 D6 _& S

2 X" W+ s- m9 l8 F, h* w第13章 PE文件格式
3 ^- k+ b% V- L3 L
. p9 S& B6 i) m4 N0 |13.1介绍 % E6 L! O' l$ I& G9 R( `
13.2PE文件格式
0 i. R7 Q3 x4 M! t4 _1 M" D. M+ m; J13.2.1基本结构
# O# Z9 g$ f- a/ s( p& w13.2.2VA&RVA
* r. ~8 B/ v  ~, M13.3PE头
6 D" _# Y- h+ q# Z# F* Q9 ~13.3.1DOS头
+ d' B6 ^8 w$ \* n13.3.2DOS存根 $ f& g- n& F1 c( M" w9 d
13.3.3NT头 ! @4 M3 ~7 g8 y" [
13.3.4NT头:文件头
4 A, D- M& f2 K. n9 X- X6 h6 j$ X, K) ?& [13.3.5NT头:可选头
) I, k- o. @( T8 {: o13.3.6节区头
2 P. ?8 Q# S9 A13.4RVAtoRAW " x1 m5 T3 m- [2 f4 N0 P, |/ k$ R6 r
13.5IAT
; k# E% F) V+ E) Z) b2 Z. z13.5.1DLL   B' o: {- h9 l5 {* T
13.5.2IMAGE_IMPORT_DESCRIPTOR 9 ~' B1 d* z0 \7 X1 O9 h
13.5.3使用notepad.exe练习 1 Q' x5 X. d' C$ O4 v7 e: t
13.6EAT
4 Q+ H: E/ y) U13.6.1IMAGE_EXPORT_DIRECTORY + |  ]. n) H  T# f, }
13.6.2使用keme132.dll练习
* e1 `1 C3 y8 l13.7高级PE
- o0 |( f$ S# s9 K5 D$ ?" Z9 W13.7.1PEview.exe 1 i$ ?2 I" a5 K2 v6 p1 {0 b
13.7.2PatChedPE 2 b0 q6 t, w  v- l9 z% E/ e( m0 ?
13.8小结
7 p  m1 }; g, x0 c0 }' v ) I$ _1 P( B9 k0 |( H8 F/ O) s& O6 @
第14章 运行时压缩 + c" D" m, j5 [' U( s! u7 [
" g/ u7 k6 S$ W/ n4 e/ T
14.1数据压缩 6 y; o: j# |' w; c2 h
14.1.1无损压缩 3 m/ w  @1 c* M* k6 g
14.1.2有损压缩 4 J" \" }, |2 B, W9 Y# F& K: s
14.2运行时压缩器 0 f/ s3 K* y4 E% q; p% W" ^
14.2.1压缩器 ' ]( H3 S$ u, A- W
14.2.2保护器 1 Y  w' R/ {! ~+ ~6 h3 o
14.3运行时压缩测试 . p  j  I* h2 \$ Q$ D8 B) q0 Y

6 E% E9 n  V4 I* w* U第15章 调试UPX压缩的notepad程序
- l/ o# C  Y7 _+ Q, R' R
3 D3 w6 b( [% b4 D( m15.1notepad.exe的EP代码 4 V% C& x# \0 ?$ F7 b! q
15.2notepad_upx.exe的EP代码
" c! @% V0 q( x4 f! A2 ^3 m. ~4 ]  `15.3跟踪UPX文件 $ i: I& ]4 H8 T1 y7 G1 P2 U, e
15.3.10llyDbg的跟踪命令 % T# \! b; \# k% U
15.3.2循环#1 " h7 m! m% _4 o/ _5 ^* |* C
15.3.3循环#2
  \3 V0 x" z; q$ E+ e6 y15.3.4循环#3 4 \* Z& Y& r' {
15.3.5循环#4
. q* ~4 t0 ~$ p  q, _! I7 G4 b9 P15.4快速查找UPXOEP的方法
' i7 ]9 D5 X, e% o/ ]# E15.4.1在POPAD指令后的JMP指令处设置断点
( |0 A! g) A# S$ Z: n$ |, e15.4.2在栈中设置硬件断点
- ^6 d! J3 e. s$ c$ X9 f15.5小结 : F4 V# c& z1 r) Q  p# m

. ~8 M! k: A7 S3 J- |' z) I( Q第16章 基址重定位表 % Z" ]3 j$ u  {& v9 |
/ E( A+ h8 T& z+ a
16.1PE重定位 ! \, t5 n7 ~" k! M
16.1.1DLI/SYS * S1 W; ?  q) A+ [
16.1.2EXE
4 {' ]' _, L5 b! C16.2PE重定位时执行的操作 8 t6 U3 S  T# k% _& R
16.3PE重定位操作原理
, r% D4 `1 o3 S/ A16.3.1基址重定位表 & j4 a: o9 ~6 h( V3 M
16.3.2IMAGE_BASE_RELOCATION结构体
- a5 _8 K. B, f7 V16.3.3基址重定位表的分析方法
5 w* b1 R$ y) i1 _- C- I) Q' G/ W16.3.4练习
: N% H! D( u/ N6 b0 O" ~
% J- [2 k' y- j' o4 l, m: d& p8 H第17章 从可执行文件中删除.reloc节区
2 y  L4 ?+ n0 p$ q
$ N( A/ A9 ]* [$ B8 T3 y17.1.reloc节区 , {/ q+ i& W* N# R0 U
17.2reloc.exe   N- a' ~7 m8 ^* q
17.2.1删除.reloc节区头
2 K0 ]2 C6 d. z0 T5 x17.2.2删除.reloc节区 1 @9 C8 _# M+ Y  B! r0 s
17.2.3修改IMAGE_FILE_HEADER
$ j1 X! f  w( h& `17.2.4修改IMAGE_OPTIONAL_HEADER
- g  j% w& w* g, M) B" F. k$ S17.3小结5 k' ?8 y( W4 B" y( L

# d7 f8 X2 [  ?第18章 UPackPE文件头详细分析. ~8 z6 d3 u: m- a) y

- s* c1 V3 ~6 E+ j; v18.1UPack说明 * r7 A/ \& O5 t) k2 \, y/ D- C; }% i
18.2使用UPack压缩not印ad.exe 8 P: W& o* b$ i4 C* w% X2 Y
18.3使用StudPE工具
8 B! @7 g. X" [4 ~2 ]/ X, Z18.4比较PE文件头
" |% L8 X3 l, `" h( I1 [- T6 {; V18.4.1原notepad.exe的PE文件头 - V- ~1 s: q# i
18.4.2notepad_upack.exe运行时压缩的PE文件头
9 u8 U- J2 Q( h2 j( Z7 ?$ U18.5分析UPack的PE文件头 . k$ p, t! s/ P: Z0 D( {
18.5.1重叠文件头 : w/ }% r9 t' I* a) N, r5 k. J2 Z
18.5.2IMAGE_FILE_HEADER.Size Of Optional Header
- W' h0 D# O/ y( h18.5.3IMAGE_OPTIONAL_HEADER.Number Of—Rva And Sizes
! ~7 n  Z7 T! A18.5.4IMAGE_SECTION_HEADER 1 O# i6 @$ z% b, u
18.5.5重叠节区 + @$ D5 ?1 h  {
18.5.6RVA to RAW
, s+ s: r8 L) n2 ^+ Q18.5.7导入表(IMAGE_IMPORT_DESCRIPTORarray) 9 v6 y+ z2 F' F2 A
18.5.8导入地址表 $ C5 I  X+ G& s
18.6小结8 m! ?: _9 H+ `% F
8 o0 ~9 f/ Z8 S- `  x, N: _
第19章 UPack调试—查找OEP % ^2 x$ X. G- g- n

4 l+ }  L2 o- J" n7 j+ _4 d19.1ollyDbg运行错误
# P  Z$ D" ?0 Y1 H: {5 Q19.2解码循环 ( p$ S! I) W. p8 o% S! B  a
19.3设置IAT
4 ^5 h8 s4 G* K' P5 ?5 S19.4小结
- Q" F5 N+ a" {# ]
4 b0 t. P. h* ^/ q第20章 “内嵌补丁”练习
9 ]2 O8 V$ t( V' i  ^
$ W* x1 s2 |' p1 A& h0 \4 Z' u% q20.1内嵌补丁 # Z/ w. U, B* B/ y/ Q
20.2练习:Patchme 6 U# A& R& _8 D7 K* I
20.3调试:查看代码流
0 P6 n( m. \' `0 O- Y# v20.4代码结构 7 M  Q% T( a+ H% p! A* G5 `
20.5“内嵌补丁”练习
+ a$ }9 l/ f2 u1 `5 q20.5.1补丁代码要设置在何处呢
5 w0 m. s* I* d+ m20.5.2制作补丁代码
3 e3 J1 d5 Y$ a8 f# ?# Z4 G  z) A& W20.5.3执行补丁代码
8 Y2 f' I# O. T: b4 r20.5.4结果确认
6 m" M0 T7 \) v$ d% M/ ~ 5 l1 f+ M  ]- Q- A/ V
第三部分DLL注入
. X* I* N3 P+ F2 m% u$ z
/ {; R0 V9 ]8 h( z- @7 y  ^/ Y7 T第21章 Windows消息钩取3 D- Y* G2 O9 A$ {  z& ]% u0 k6 i- G

3 X* m$ F9 b/ G211钩子
. A( G3 y+ d7 U6 S' v# L4 T21.2消息钩子
# \5 ~. l, K$ h4 R$ S21.3SetWindowsHookEx()
/ Y6 b0 M4 @1 X& _' a21.4键盘消息钩取练习
' u; l  Z5 ^# S" b" K21.4.1练习示例HookMain.exe
' ?! K, Z/ J7 }2 `5 S$ j' M" U8 g21.4.2分析源代码 ) [0 v) L" }; f" f( y
21.5调试练习 / A7 L7 b; j; f
21.5.1调试HookMain.exe
8 s3 v: \8 g. Y7 S5 W4 B6 h21.5.2调试Notepad.exe进程内的KeyHook.dll
& d9 w4 {2 |# n/ n9 x- c2 K21.6小结
; K4 Q$ W( |: w1 p, y 3 O/ l9 L/ u! H" W* j* J/ a, p, A
第22章 恶意键盘记录器
# W( Z" f' x* S) |
5 p; B( O, ^+ f, b6 g1 Y7 i22.1恶意键盘记录器的目标
6 S- t6 U' [& Q# V: k- n22.1.1在线游戏 . `" Q& Z+ `4 |5 _& u
22.1.2网上银行
- X9 |3 D# F2 A; A0 M) @22.1.3商业机密泄露
' r2 o7 |# r+ y/ H# ~22.2键盘记录器的种类与发展趋势
: ]- O# t- D) Y& I9 k5 l7 a1 L( f22.3防范恶意键盘记录器 5 y. |/ m  q8 u; Z! B, U
22.4个人信息# M! z0 ]$ b$ q: i4 m7 I
4 _& l. @: P$ c- ?! L4 [
第23章 DLL注入
4 |& {( r$ l& @5 k6 m! m7 X- a) G& H1 p7 u
23.1DLL注入
0 M& q9 h, {9 d) t" h9 Q9 h23.2DLL注入示例
+ q, X1 x  r9 L23.2.1改善功能与修复Bug
9 @! r7 h/ K7 @23.2.2消息钩取
6 P3 B3 T1 w4 Q+ W0 ?, K+ H4 ?23.2.3API钩取
+ z6 t' q- S4 Z& f& X( w3 ~; Y23.2.4其他应用程序 - P4 D( p  k. B* N$ D4 v; m# N3 h7 Z! y
23.2.5恶意代码 $ h7 ^) X* }7 U' I# Q, \
23.3DLL注入的实现方法 ( o6 ?+ `( A& h( C
23.4CreateRemoteThread() ( g* b3 T7 {6 E# W& g1 h
23.4.1练习示例myhack.dll + }/ I3 ]  d* g1 j# X0 A7 @4 p" p' o
23.4.2分析示例源代码
) E  P9 ~$ s( i* C23.4.3调试方法 6 y+ g/ `0 X$ t: S# d8 x& ?7 O
23.5AppInit_DLLs
0 T# k; q4 q% F0 z( p8 B2 p" y23.5.1分析示例源码
" Z! F' B. r. e23.5.2练习示例myhack2.dll ) Z! e# N4 z* \+ T+ H6 q, O! }- l
23.6SetWindowsHookEx()—————
/ ~/ q4 `# @$ `2 R: q3 N2 N) O. `5 T23.7小结
# l+ t! c9 |; M/ C0 [7 Q - d1 L+ ?5 H" {! q! m3 W9 F5 J
第24章 DLL卸载 $ \) T) S7 G6 P: q% ~! @# d
/ R/ T. x2 Q% Z, U1 A5 d
24.1DLL卸载的工作原理 . {/ M; `' ^- s8 Y7 r  B
24.2实现DLL卸载 5 K8 p- {& }! C9 z. ~- M6 }+ o
24.2.1获取进程中加载的DLL信息
, f8 e% b7 ^+ s0 R$ V* N24.2.2获取目标进程的句柄 * l2 U. o$ n3 s! X+ H# N
24.2.3获取FreeLibrary()API地址 * P. a2 Y1 P' ^% B- e) x& `
24.2.4在目标进程中运行线程 # {& v, S9 |( \1 s, |7 T5 N
24.3.DLL卸载练习
. S4 ~+ i/ V1 x" J$ g24.3.1复制文件及运行notepad.exe
( c" u0 e: p& \* G" e, ?24.3.2注入myhack.dll
5 ^# n$ n$ c3 `& p9 a24.3.3卸载myhack.dll
7 P# K' i' D) [1 I3 T1 L% u, M: e+ D7 ?% z1 v: H& f/ ~' D
第25章 通过修改PE加载DLL 8 E" B) t* U6 y6 j7 U; `
2 U9 m! G; O4 `( G: y( s3 M
25.1练习文件
/ y  j  C6 r1 e9 _8 [" c1 ]0 k: l25.1.1TextView.exe
; x2 U* B* [" |/ m$ N; w25.1.2TextView_patched.exe
, p7 c- N1 _; ?8 e. N25.2源代码—myhack3.cpp 3 e. G# e7 g( \( `
25.2.1DllMain()
' h1 l+ L+ z8 c; ~25.2.2DownloadURL() 6 O# w7 k2 Y5 @) j3 p% q7 Y9 p. B
25.2.3DropFile() ( U8 `/ w6 g! U
25.2.4dummy() $ `# k2 H9 A, y7 U- H
25.3修改TextView.exe文件的准备工作 8 g$ Q( _( n& c, s' n
25.3.1修改思路 & |* G, M5 y. i- X
25.3.2查看IDT是否有足够空间 " l0 E& Q1 ]! G2 }
25.3.3移动IDT
4 F6 S& P: g4 f8 t% x25.4修改TextView.exe & C2 @% s/ K- H" G
25.4.1修改导入表的RVA值 4 t# v3 b+ W9 h
25.4.2删除绑定导入表 9 v* B% F" @2 u! O
25.4.3创建新IDT
1 T4 [# d) \. h5 Q) O+ N& h25.4.4设置Name.INT.IAT $ {. N4 O& d1 s$ ]+ ?2 J, v8 s
25.4.5修改IAT节区的属性值 ! d$ f/ B. n- ?( j
25.5检测验证 8 g+ I9 k; _. S! i! f6 u
25.6小结 0 Q/ C! `4 K" E; i& ^( |

$ v: D2 E: z0 q  U6 @9 i9 c; I第26章 PETools
) `8 J- L; I7 O9 K0 a
2 |- G& C( |# l( S6 u& o26.1PETools : p1 X- [" f6 {7 O. S- G( |
26.1.1进程内存转储
5 U7 x! T7 G1 g8 v; ?# A+ F26.1.2PE编辑器 ! }" B- N# m0 e" y& d" a
26.2小结
5 Z4 `5 D/ g) e7 y% T3 u5 ]4 i
5 s" E- ~  o, W- h& S, a第27章 代码注入
8 ?+ C9 Z7 v  y5 Q" E& f
( X7 m- E( N3 `$ u: n4 o; n/ ~9 R- r27.1代码注入 : R. ?( G5 H. Z% [: b( y
27.2DLL注入与代码注入 ( N+ O; z" Z% O5 ~, @! C
27.3练习示例
' u! O' Z# G6 E  G1 t. k& L9 s27.3.1运行notepad.exe ; d* ~/ u5 E" g# H
27.3.2运行Codelnjection.exe ; ^6 v2 L, C5 g: ^: q
27.3.3弹出消息框
4 F3 u/ _" l' Z  |8 ~2 _27.4Codelnjection.cpp
: f' q2 N. ~" ]27.4.1main()函数 7 r4 o1 L3 D0 X9 D0 U; o
27.4.2ThreadProc()函数 0 U: Q4 a& ~/ n9 A. L
27.4.3InjectCode()函数
% Q) U8 V. V5 i9 s( Z% _% G27.5代码注入调试练习   o/ t- D$ P' j. e
27.5.1调试notepad.exe 0 K0 z' H2 Q) Q. q! S! U
27.5.2设置OllyDbg选项 2 t  M) G  o' `( E1 S4 h: B; {, F
27.5.3运行Codelnjection.exe 8 ^, A& v; g1 N+ e" ^: `" i
27.5.4线程开始代码 4 n+ O+ ]0 F( d+ t! z4 a( C
27.6小结
+ Y5 p' ^4 h: h. C% ?0 D8 P" \5 N# A; ?) r% v" V" n
第28章 使用汇编语言编写注入代码
4 W+ z  Y* S& j( O- k
; x0 [8 c  f# r1 O28.1目标
( k$ ?5 E' o) u7 ]28.2汇编编程 + X+ p/ \7 y7 b
28.3OllyDbg的汇编命令 7 u( F# x2 [' I- R# a& B; V. |$ i
28.3.1编写ThreadProc()函数
4 `. ?/ d6 e8 w- I  w) }2 d- ?28.3.2保存文件 9 ]" _5 z; @- A$ ?
28.4编写代码注入程序
7 w- x) f5 e- n) S) p0 O7 S9 }28.4.1获取ThreadProc()函数的二进制代码 : ^3 W4 G! Q& o- Z+ _
28.4.2Codelnjection2.cpp 4 Q1 Q& R( L8 _! ]
28.5调试练习 1 R: W# d) C; u7 j$ j2 w
28.5.1调试notepad.exe - j; S9 G6 W, ?
28.5.2设置OllyDbg选项
. C) U( l/ C$ T2 @0 w0 M, Z3 A28.5.3运行Codelnjection2.exe
6 D/ k1 U: b" n' y28.5.4线程起始代码
0 A0 z' R9 L% N  c/ T4 S28.6详细分析
# J8 \, _0 s2 j9 t$ Y# k6 T28.6.1生成栈帧
5 J* G  m' [3 O# B2 Y28.6.2THREAD_PARAM结构体指针 1 ]/ }- w* @  \' X1 K
28.6.3"User32.dll"字符串
. l  T( B! {$ E* c) K# z4 S3 _2 y0 j28.6.4压入"user32.dll"字符串参数 . f% q! J+ W; |7 Z) e
28.6.5调用LoadLibraryA("user32.dll")
# F" i6 b, k- ]2 ]1 Q6 Q. U1 Q4 x28.6.6"MessageBoxA"字符串
1 Y% l1 W5 d( g0 Y6 i; D28.6.7调用GetProcAddress(hMod,"MessageBoxA")
; H! [2 H  Y* U+ Q6 e' g3 P28.6.8压入MessageBoxA()函数的参数1—MB_OK
. E3 [. h3 n% W  v28.6.9压入MessageBoxA()函数的参数2—"ReverseCore"
* A' L/ U; H4 O4 r( }28.6.10压入MessageBoxA()函数的参数3—"www.reversecore.com"
# n: _" a+ G  q# T$ e; R28.6.11压入MessageBoxA()函数的参数4—NULL ' l( l& E2 ^# ?. F& K
28.6.12调用MessageBoxA()
  ^4 z. @) Y' q- @1 o6 U8 M28.6.13设置ThreadProc()函数的返回值 ' O2 C, w" k; m- Q
28.6.14删除栈帧及函数返回
/ M$ l8 i- d4 z28.7小结
) ^. Z( ~4 y7 g& N$ Q* b# ?6 |& G4 |( Y( X% [) F
…… 0 o/ p* t( C% \" |- f5 ^5 R
: Y% H6 A* n5 t' m
第四部分 API钩取
2 n4 G1 |, P. s* n) m0 I% j3 \# x+ r- k) U
第五部分 64位&Windows内核6
( h2 b' y: i( i( D
' o2 k6 `9 I2 \! D- i5 W第六部分 高级逆向分析技术 ! t* `8 s* |* P" H. h/ ^) Z9 G
) C: ?% i0 \$ C
第七部分 反调试技术 # j2 ~$ W# F6 h9 r( }2 ]1 v
0 V5 D( }- O  w4 g" ~$ ?! x
第八部分 调试练习
9 b, |2 y% L2 N9 x  ~* b& ]  ~6 E6 F( d5 D8 w( k
结束语 / ~9 c8 D. v/ ?1 W

$ L9 M6 D% V; x+ B6 |1 W索引- d1 n$ {- m  |* w; w

& Q' h" x4 M& y5 L4 n
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:793 天
连续签到:2 天
最佳答案
24 
发表于 2016-11-21 17:01:30 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:81 天
连续签到:1 天
最佳答案
1 
发表于 2016-11-21 17:13:16 | 显示全部楼层
武老师的书呀,支持下`
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:14 天
连续签到:1 天
最佳答案
0 
发表于 2017-3-19 14:45:35 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:66 天
连续签到:1 天
最佳答案
0 
发表于 2017-7-13 07:30:03 | 显示全部楼层
的确是一本好书推荐大家都要看这本书真的是逆向的开山鼻祖了。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:37 天
连续签到:1 天
最佳答案
8 
发表于 2017-7-19 15:48:00 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-8-2 10:44:05 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-8-20 21:31 Powered by Discuz! X2.5 Theme by dreambred

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