0R? @JC
2020.5~2021.5 第1期<软件逆向工程特训>历时12个月 Y=|p}>.}
2021.5~2022.7 第2期<软件逆向工程特训>历时14个月,目前已圆满结束,第3期增加了一些新的内容,老师高超的技术水平+周到的交流辅导服务,这可能是最好的线上windows逆向安全培训班! %\HE1d5;
2022.9-2023.10 第3期 U"/T`f'H z
2023.10-2025.1 第四期(快完结) "Y^j=?1k
2025.2 第五期招生中 i7-i!`<
\]4EAKJE
wbJBGT{sm
逆向工程存在于各行各业,于IT行业来说,无论是开发还是安全,软件逆向一直充斥着重要的作用,学习软件逆向可以更好的理解甚至反推软件的设计框架、原理、实现思路、解决方案以及软件的操作行为,也是为了更好的做相关正向开发、软件安全和病毒分析,同时也需要掌握很多相关的技术知识点,难度较大,正因如此,逆向工程师人才紧缺,供不应求,薪资待遇处于IT业顶峰! 认真学习本课程、多与老师交流并加以实践将能达到就业水平。 HI{q#
互联网已经全面渗透于各行各业,逆向工程将关系到众多企业乃至国家的安全,所谓懂进攻知防守,精易作为国内最具影响力的PC软件开发社区之一,将带领大家从开发到安全,从正向到逆向,为社会和国家输出更多的安全人才。 xTuJ~$(
课程会着重对基础知识及原理的加固,让大家能够循序渐进,知其然和所以然,课程中将穿插大量的实例和项目以及每节课都会布置作业,只要跟着老师的学习路线,不懂就问,经过1年的实践,定会有所成就。 VoYL}67c
[K,P)V>K
开课日期 培训周期 教学模式 教学费用 (联系方式:QQ 727446985) 3O;H&
1年左右 直播+录播,周一~周五晚上2小时讲课+2小时答疑交流,白天通过QQ群/群语音交流 32000 限时惊爆价10600元 1K#[Ef4
kJl^,q
2~\SUGW-
第一章 进制、寄存器与汇编指令(汇编与C语言相结合) 3000元 5.ab/uk;M
学习汇编能做什么(逆向,游戏安全,加固/脱壳,反病毒,漏洞挖掘等等必备基础) DzMg^Kp
1.1 计算机的基本构造及其运行原理 59{X;
1.2 不同进制的书写方法 ;_SSR8uHv
1.3 为什么计算机要用二进制 ]e),#_M
1.4 不同进制间如何运算1
PX/Y?DP
1.5 不同进制间如何运算2 VqvjOeCbH
1.6 为什么要用十六进制 } r(b:}DN
1.7 什么是逻辑运算 N$e
mS
1.8 计算机的计数与数学计数的区别 %\,9S`0
1.9 谁能告诉我计算机有多少通用寄存器 c_ncx|dUs
1.10 安装VC2012/VC6,写简单的汇编 w>cqsTq
1.11 怎么操作汇编指令 Q*I8RAfd
1.12 什么是内存 4v/MZ:%C`
1.13 寄存器与内存有什么区别 CR23$<FC
1.14 怎么把[ ]里面的值变成地址 .
]h/M,xg
1.15 堆栈的作用。 f8[O]MrO;
1.16 函数的调用过程1 vu@.;-2E%
1.17 函数的调用过程2 ,x1OQ jtY
1.18 汇编指令运算过程中,出现进位借位,或者溢出该怎么办 {H(l"KuL
1.19 对寄存器ESI或者EDI操作的指令有哪些 Pb;c:HeI/
1.20 指令和内存有什么联系 pTi7Xy!Cw
1.21 如何用汇编写程序 xi{r-D8Z
1.22 逆向的起源。什么是内存框架 L,.~VNy-
1.23 用汇编怎么调用函数 'ux!:b"
1.24 不用CALL指令,如何调用函数 q/zU'7%@
考试:用汇编写一个程序 $%cHplQz5
ms5?^kS2O
TW>G
YGz
第二章 C语言(软件开发必备) 2500元 UH6 7<_mK
2.1 C语言有哪些规则,如何赋值 ?2#'>B
2.2 什么是C语言表达式 {|>Wwa2e
2.3 “如果”代表C语言的哪条语句 [m{sl(Q
2.4 “如果明天下雨,我不去逛街”该如何用C语言表达 E"VFBKB
2.5 假设(a*4)怎么用移位表达,a向哪边移,移多少 ~IW{^u
2.6 C语言有哪些循环语句 hsrf 2Xw[
2.7 C语言for 语句该如何使用 "G%</G8M
2.8 什么是C语言变量 OFtf)cGE
2.9 “现在有相同类型的100个变量”,怎么用一条C语句实现 >w<w*pC
2.10 什么是二维数组,二维数组跟一维数组有本质上的区别吗 XxMZU(5
2.11 C语言结构体是什么 =K0%bI
2.12 怎样合理的运用C语言结构体 UJh;Hp:
2.13 C语言变参函数有什么作用 BVeMV4
2.14 深刻理解switch 语句1 =q]!"yU[d
2.15 深刻理解switch 语句2 }R16WY_'
2.16 C语言宏定义有什么好处 vTx>z\7q,
2.17 什么是C语言指针, 指针是怎么赋值的 o/7u7BQl2
2.18 C语言指针和数组有什么区别 Le?g,c
2.19 C语言指针是有符号的,还是无符号的 XfE9QA[
2.20 “void a ;” 这样定义可以吗?什么是空指针 q 0F6MAXj
2.21 指针数组和数组指针分别代表什么 @:Zk,
2.22 指针数组和数组指针的区别在哪里 AvrvBz[
2.23 怎样定义C语言函数指针 sw}O g`U
2.24 C语言函数指针有什么作用 u$^tRz9
2.25 数据结构之单链表 %gO/mj3*
2.26 数据结构之双链表 _rB,N#{2R=
2.27 数据结构之数组 -GFZFi
2.28 数据结构之队列 5z0VMt
2.29 数据结构之二叉树 :p}8#rb
项目:学生管理系统或者贪吃蛇小游戏 MuO
KauYa
nyi!D
Rs5 lL-I
第三章 C++与MFC/逆向练习 4000元 `K5*Fjx
3.1 结构体与类有什么区别 \\\8{jq
3.2 封装之this指针的本质 C^
LxuUW
3.3 构造函数和析构函数 wjl )yo$z
3.4 继承有什么好处 I4jRz*Ufe?
3.5 多继承与菱形继承 bD ,X.
3.6 纯虚函数和虚函数 }r@dZBp:
3.7 多态与虚函数有什么联系 g=4^u*
3.8 虚继承以及析构调用虚函数 Sp X;nH-D
3.9 函数重载的妙用 y&
yf&p
3.10 什么是运算符重载 RV
V`
3.11 模板是怎么运用的 pAatv;Ex
3.12 类模板以及命名空间 *'{-!Y
3.13 容器之string =W3
K
6w
3.14容器之vector :6lv X$
3.15 容器之deque ) %Fwfb
3.16 容器之list LE<J<~2Z
3.17 迭代器的用法 8lpAe0p(Z
3.18 输入流和文件流 @T\n@M]
3.19set map :K^J bQ
3.20 stl之 元素计数以及最小值 wxvi)|)
3.21 函数对象和一元谓词 dWQsC|
3.22stl之 查找 删除 h*l$!nEN
3.23 C++异常 ujxr/8mjV
3.24 一个Win32程序的执行过程(消息机制的本质) L_Gw:"-+Q
3.25 win32之创建显示窗口 70 7( LG
3.26 win32之消息派发流程
Qh&Qsyo%
3.27 win32之消息循环及消息函数 TC/c5:)]
3.28 win32 对话框消息流程
gEj#>=s
3.29 MFC与Win32程序的关系 ~i;{+j6Ho!
3.30 MFC类层次结构以及消息流程 c$ZVvu
3.31 操纵控件的几种方法 <r:AJ;
3.32 MFC之对话框 "QdK
Md
3.33 MFC之菜单 4l
ZK@3
3.34 MFC之画图 GA
gTy
3.35 MFC之文本操作 q5R|
^
uf
3.36MFC之单文档和多文档 [o#% Eg;
3.37 C++版本超市管理系统 @5nFa~*K%
I2*rtVAP'j
*
HKu%g
数据库:(新增) q_.fVn:!
1. 数据库的基础 ~)ys,Q
2. 关系数据库的基础 RN(I}]] a
3. 表的管理和数据类型 HGGq;Nbm
4. 基础查询 0mSP
5. 创建表,添加和删除 Gf\h7)T\
6. 数据库设计 Ldj
z-
7. 创建数据库 p5#x7*xR6
8. 存储过程 0h@FHw2d
9. 触发器 \_1a#|97e
10. 事务
@ye!? %
11. 锁 Io.RT+slB
12. 数据备份和恢复 !}TsFa
13. 数据库的安全性 {3
`385
VQ
la.Y
+>q#eUS)
SOCKET编程:(新增) mcez3gH
1. 什么是 socket \nZB@u;S
2. Internet 套接字的两种类型 ^-Od*DTL
3. 网络理论 qazA,|L!
4. 结构体 _h!.gZB3
5. 本机转换 h`|04Q
6. IP 地址和如何处理它们 *z0d~j*W;
7. socket()函数 v3-'
GgM
8. bind()函数 EhHxB
fAQ
9. connect()程序 en< $.aY
10. listen()函数 {=[>N>"
11. accept()函数 3^y(@XFt
12. send() and recv()函数 @zg}x0]
13. sendto() 和 recvfrom()函数 )JS6W
14. close()和shutdown()函数 Tsg9,/vXM
15. getpeername()函数 XH!#_jy
16. gethostname()函数 p'
>i3T(
17. 域名服务(DNS) lDYgtUKG
18. 客户-服务器背景知识 O{X~,E
m=q
19. 简单的服务器 >u$8Z
20. 简单的客户程序 SQ>i:D;
21. 数据包 Sockets ZUQ
_u
22. 阻塞 4 ThFC
23. select()–多路同步 I/O f,HUr% @
)Zr9
`3[
*V6|
FU
逆向练习: o&q>[c
1. OD和IDA的基本用法 r9@=d
2. C语言全部语法逆向 p)IL(_X)
3. C++全部语法逆向 +x"uP
4. 按钮以及其他控件的入口方法 gN=.}$Kfu
5. 逆向窗口程序的通杀方法 R_PF*q2 '
练习:SOFTICE核心文件逆向 s/D)X=P1
WBE>0L
C{}_Rb'x
第四章 汇编编码 3000元 \~5|~|9<
学习硬编码的好处:(HOOK函数,系统HOOK, 代码变形,VM还原,TMD还原,解释器,调试器必备基础,这就是杀毒软件可以横行的法宝) ~29p|X<
机器码,简称汇编编码,俗称硬编码 lxL5Rit@Px
4.0 寄存器 (32位汇编;64位汇编) Q7865
4.01 汇编指令 .Fn|Okn^gr
4.02 堆栈 *HKw;I
4.03 逆向框架 3 ~v
1 7
4.04 函数内部运行机制 g
lMHT,
4.1 定长编码 (0x40-0x4f 0x50-0x5f 0x70-0x7f 0x0f 0x80 – 0x0f 0x8f) ,L/ x\_28
4.2 定长编码(0x04-0x07 0x0c-0x0f 0x14-0x17 0x1c-0x1d 0x24-0x27 0x2c-0x2d 0x34-0x37 0x3c-0x3d.)
lgOAc,
4.3 定长编码 (0x60 0x61 0x90-0x97 0xa8 0xa9 0xb0-0xbf 0xc2 0xc3 0xcc 0xcd 0xd4 0xd5 0xe0-0xe3 0xe8 0xe90 0xf8-0xfd等等) j<<d A[X
4.4 硬编码4 (写程序把定长编码打印出来) FO2e7p^Q
4.5 硬编码5 (写程序把定长编码打印出来) PE%$g\#?
4.6 变长编码 (0x88 0x89 0x8a 0x8b) >pU9}2fpT
4.7 变长编码 (0x88 0x89 0x8a 0x8b) }g}Eh>U
4.8 变长编码 (0x00-0x03 0x08-0x0b 0x10-0x13 0x18-0x1b 0x20-0x23 0x2b-0x2b 0x30-0x33 0x38-0x3b ) 5}#wp4U
4.9 变长编码 (0x84-0x87 0x8c-0x8e 等等) @ma(py
4.10 写程序把变长编码打印出来 CZ5\Et6r
4.11 写程序把变长编码打印出来 (&:gD4.
4.12 写程序把变长编码打印出来 D4=*yP
4.13 前缀 (0x26 0x2e 0x36 0x3e 0x66 0x67 0xf0 0xf2 0xf3) X$Vi=f vt
4.14 写程序处理前缀 9|+6@6VY!
4.15 写程序处理前缀 t7+A!7b{
4.16 组编码 (0x80-83 0xc6-0xc7 0xd0-0xd3 等等) s6bsVAO>
4.17 写程序处理硬编码
po*G`b;v
4.18 0F开头两个字节的编码 I^?tF'E
4.19 编写反汇编引擎 r`O
Yq
4.20 VMP的核心解释器基本原理 75^6?#GS
ukWn@q*
项目:反汇编引擎,解释器框架 1-_r\sb
&3Zq1o
||Zup\QB
第五章 Win32 API (只要是项目,都会调用API) 2500元 u7!9H<{>P
5.1 文件操作 =c[tHf
5.2 内存管理 Gnkar[oa&
5.3 进程线程 OR<+y~Rv
5.4 线程同步
THYw_]K
5.5 进程间通信 -R`{]7V
5.6 网络通信 <g[z jV9p
5.7 未公开API的使用 {OU|'
8`q7Yss6F
}E
'r?N
第六章 PE 3500元 bNea5u##
学习PE的好处(加密解密,写壳,脱壳,注入,重载操作系统) 7j]v_2S`
6.1 PE有哪些结构1 @Wu-&Lb
6.2 PE有哪些结构2 _;
1{feR_
6.3 为什么要有节表,节表有什么好处 GShxPH{_j
6.4 PE 磁盘拷贝到内存 (写程序) z5>I9R^q;
6.5 PE 内存拷贝到拷贝磁盘,存盘(写程序) 7>E.0DP
6.6 怎么给PE添加一个节
I%[e6qX@
6.7 PE扩大节有什么好处 2c9?,Le/;
6.8 PE合并节有什么作用 Gt`7i(
6.9 PE 输入表 (写程序打印输入表) *G19fJ[5
6.10 PE 输入表 (写程序打印输入表) m@4Dz|
6.11 PE 输出表 (写程序打印输出表) $]2)r[eA)
6.12 PE 输出表 (写程序打印输出表) jJ,_-ui
6.13 PE 重定位表 6Z2 ,:j;
6.14 修改OEP 弹出MessageBox 0t <nH%N}^
6.15 添加节,拷贝一段函数进去 Wq1>Bj$J8
6.16 病毒的框架 *pKTJP
6.17 病毒是如何在函数入口植入的 P49\A^5S!
6.18 病毒是如何写入PE的 ZaFt4#
6.19 DLL应用及书写方式 2B,O/3y
6.20 UPX壳的源码及其运用 O*EV~{
K
6.21 加密壳原理和方式 aLO^>",
项目: 手写PE分析工具LoadPe r"7n2
;P@]7vkff
m#7(<#
进阶篇 oUv26t
~
先复习 前面的基础篇的知识,然后写一个解释器完整版(20天) 7;'33Bm*
F/>_PH57
第七章 保护模式(段寄存器)(2个多月) 5000元 -pC8 L<
7.1 段寄存器构成 7{;it uqX
7.2 保护模式 GDTR IDTR ht3.e[%'b
7.3 GDTR,IDTR均为48bit结构体 rpR${%jc
7.4 超线程与多核 4U}qrN~=
7.5 保护模式 获取段寄存器的值 ym%UuC3^w
7.6 保护模式 GDTR.ATTRIBUTES &gXh:.
7.7 保护模式之修改段寄存器 8Lo#{`
7.8 保护模式 调用门 j|eA*UE
7.9 保护模式 中断门 陷阱门
EYAaK^ &
7.10 保护模式 CS:EIP kBu{ bxL
7.11 保护模式 RETF,IRETD FKa";f"
7.12 保护模式 门Dword Count .|UQ)J?s
7.13 保护模式 任务门 Z~5) )5Ye;
7.14 保护模式 3环进1环 ,^(]
zZh
7.15 保护模式 10-10-12 分页 k:@DK9
"^
7.16 保护模式 PDT PTE $<}c[Nm
7.17 保护模式 页的特点 ?e7]U*jEU
7.18 保护模式 TLB mB?x_6#d9
7.19 保护模式 异常与保护 $NXP)Lic)
7.20 保护模式 2-9-9-12 aB9!}3@
7.21 保护模式 CR0~CR4 7
u):J
7.22 10-10-12和2-9-9-12分页转换 "W|A^@r}
7.23-7.30 编写CE与内存搜索工具(VT引擎) n<I{x^!
iGN\ >m}
"LMj,qZ1!
第八章 操作系统 (本阶段较枯燥,将通过录播+直播答疑的方式进行) 5000元 T<AT&4
本章主要讲解及应用于:驱动保护,系统保护,游戏保护,底层开发,系统架构,架构师,引擎开发等… ep0,4!#FAO
8.1 操作系统 模拟线程切换 Wa_qD
8.2 操作系统 进程线程结构 4=
zs&
8.3 操作系统 进程线程链表 KpLmpK1
8.4 操作系统 TEB PEB Ha'[uEDb
8.5 操作系统 kpcr 结构 Rj8%% G-pt
8.6 操作系统 TrapFrame 结构体 {zdMmpQF
8.7 操作系统 SSDT 表 *H>rvE.K?
8.8 操作系统 驱动详解 X#Bb?Pv
8.9 操作系统 swapcontext函数 A4K.,bZ
8.10 操作系统 SwapContext函数 i|YS>Pw~j
8.11操作系统 ntReadVirtualMemory wQkM:=t5
8.12操作系统 kiSwapThread /ZLY@&M
8.13操作系统 kiWaitListHead vvoxK 0
8.14操作系统 对象句柄及线程等待快 &d# R'Z
8.15操作系统 线程等待机制 t}EMX9SQ
8.16操作系统 等待块及SetEvent 函数 ZL MH~cc
8.17操作系统 keWaitSingleObject函数 `8:
0x?X
8.18操作系统 APC机制 qUe
_B
8.19操作系统 kiDeliveApc z6>@9+V-&
8.20操作系统 Apc函数的调度时机 PnlI {d
8.21操作系统 异常处理 c0!.ei
8.22操作系统 kiDispatchException函数 :6^7l/p
8.23操作系统 3环异常处理过程 QLA.;`HIE
8.24操作系统 回调机制 i!wU8@
8.25操作系统 句柄 UM}u(;oo%)
8.26操作系统 对象句柄 eI
#Gx_mg
8.27-3.41项目(内核重载) 7R+(3NU1A
8.42操作系统 调试机制 %u -x9
8.43操作系统 Debug_Object 结构 W
U(_N*a
8.44操作系统 创建调试对象函数 ,$P,x
8.45操作系统 发送调试消息函数 Y+gY"
8.46操作系统 DbgKpSendApiMessage 函数 3
a/n/_D
8.47操作系统 调试寄存器 ~E<2gMKjO
8.48操作系统 挂钩DbgKpSendApiMessage NkE0S`Xf
8.49操作系统 文档视图 ~(5r+Z}*`
8.50操作系统 消息机制 *{o7G a
8.51操作系统 消息机制 \bA Yic
8.52操作系统 消息机制 >@ t
项目(3环调试器) G
dgL}"*F
2z.ot'
第九章 64位逆向(新增)
2ZH+fV?.
X64 汇编基础(一个半月)
U,
6iT
64位逆向是根据学员的需求添加的课程,比之32位逆向,有了一点点改动,但是大致语法是不变的 ZzT=m*tQ&
首先内存地址变成64位,寄存器的大小和栈的基本单元也变成64位 niVR!l
然后通用寄存器 (新增了R8~R15寄存器) wb-yAQ8
函数调用约定: 64位统一为一种变形的fastcall,64位的fastcall中最多可以把函数的4个参数存储到寄存器中传递 RCX,RDX,R8,R9等等 5of3&
本章的目的:带领大家熟悉64位下的各种语法结构,熟练的掌握64位逆向,为以后的64位逆向分析打下基础 q}1ZuK`6
H=r-f@EOrI
&4#Zi.]
1. 安装环境 bp1AN9~
2. 64位寄存器(RAX-R15,xmm0-xmm15) ab0Sx
3. rsp和堆栈平衡 gT+/nSrLV
4. x86和x64的调用约定(RCX,RDX,R8 R9) V7ph^^sC}
5. x64的指令解析(JMP, CALL) WzMYRKZ
6. X64的运算符解析 D7Q+w
7. X64的函数分析 YFKE>+
8. X64的局部变量和全局变量 9
_d2u#
9. X64的控制语句 >yIJ8IDF
10. X64的分支语句 5~Y`ikwxL
11. X64 do while和while循环 5{Cz!ut;tE
12. x64 for循环 }\pI`;*O|
13. X64的数组
L74Mz]v
14. X64 封装,继承 +SJ.BmT
15. X64 单冲继承虚表和多重继承虚表 D$>_W ,*V
16. x64位游戏分析 jYsAL=oh,*
17. X64游戏人物血值以及基地址
5xY{Q
18. X64人物和NPC |"H 2'L$
19. X64怪物数据 2wf&jGHs
20. X64游戏数据结构分析 BH
Xi g~d
21. X64游戏内存读写 ^5mc$~1`
22. X64注入方法 _n&Nw7d2
M
23. X64自动打怪分析 rS8a/d~;0
B.z$0=b
毕业设计 %+7]/_JO&