2020.5~2021.5 第1期<软件逆向工程特训>历时12个月 ~4e4Gyx c
2021.5~2022.7 第2期<软件逆向工程特训>历时14个月,目前已圆满结束,第3期增加了一些新的内容,老师高超的技术水平+周到的交流辅导服务,这可能是最好的线上windows逆向安全培训班! x
aQO=[
2022.9-2023.10 第3期 0E[&:6#Y
2023.10-2025.3 第四期 .UJp#/EHs
2025.2-2026.2 第五期(快完结) v<+5B5"1
2026.4 第六期招生中。。 8UY[$lc
s];jroW@u
cj=6_k
逆向工程存在于各行各业,于IT行业来说,无论是开发还是安全,软件逆向一直充斥着重要的作用,学习软件逆向可以更好的理解甚至反推软件的设计框架、原理、实现思路、解决方案以及软件的操作行为,也是为了更好的做相关正向开发、软件安全和病毒分析,同时也需要掌握很多相关的技术知识点,难度较大,正因如此,逆向工程师人才紧缺,供不应求,薪资待遇处于IT业顶峰! 认真学习本课程、多与老师交流并加以实践将能达到就业水平。 /_yJ;l/K
互联网已经全面渗透于各行各业,逆向工程将关系到众多企业乃至国家的安全,所谓懂进攻知防守,精易作为国内最具影响力的PC软件开发社区之一,将带领大家从开发到安全,从正向到逆向,为社会和国家输出更多的安全人才。 0$8iWL
课程会着重对基础知识及原理的加固,让大家能够循序渐进,知其然和所以然,课程中将穿插大量的实例和项目以及每节课都会布置作业,只要跟着老师的学习路线,不懂就问,经过1年的实践,定会有所成就。 ma__LWKM,
b#XY.+ *0
开课日期 培训周期 教学模式 教学费用 (联系方式:QQ 727446985) $\:;N]Cs~0
1年左右 直播+录播,周一~周五晚上2小时讲课+2小时答疑交流,白天通过QQ群/群语音交流 32000 限时惊爆价10600元 tGq0f"}'J
pP JhF8Dt
i7N|p9O.
第一章 进制、寄存器与汇编指令(汇编与C语言相结合) 3000元 -?T:> *]p
学习汇编能做什么(逆向,游戏安全,加固/脱壳,反病毒,漏洞挖掘等等必备基础) E?,O>bCJ5
1.1 计算机的基本构造及其运行原理 KmUH([#
1.2 不同进制的书写方法 9fLxp$`(T
1.3 为什么计算机要用二进制 {<f |h)r
1.4 不同进制间如何运算1 IIrp-E MXJ
1.5 不同进制间如何运算2 $^[^]Q
1.6 为什么要用十六进制 [FhFeW>
1.7 什么是逻辑运算 -M{.KqyW
1.8 计算机的计数与数学计数的区别 1|U8DK
1.9 谁能告诉我计算机有多少通用寄存器 kkA5pbS
1.10 安装VC2012/VC6,写简单的汇编 y2nwDw(xF
1.11 怎么操作汇编指令 ,E YB
E
1.12 什么是内存 v[P
$c$Xi
1.13 寄存器与内存有什么区别 Jat|n97$
1.14 怎么把[ ]里面的值变成地址 /*v}.fH%
1.15 堆栈的作用。 }q-* Ls
~
1.16 函数的调用过程1 {3s=U"\
1.17 函数的调用过程2 h^Bp^V5#
1.18 汇编指令运算过程中,出现进位借位,或者溢出该怎么办 d~ m,hCTe
1.19 对寄存器ESI或者EDI操作的指令有哪些
?4G/f<ou
1.20 指令和内存有什么联系 W7R`})F
1.21 如何用汇编写程序 G a1B&@T
1.22 逆向的起源。什么是内存框架 ((Jiv=%
1.23 用汇编怎么调用函数 )
?L
1.24 不用CALL指令,如何调用函数 -SF*DZ
考试:用汇编写一个程序 2<"kfan
mpcO-%a
g!<=NVhYt
第二章 C语言(软件开发必备) 2500元 25bLU?x5B
2.1 C语言有哪些规则,如何赋值 j>D[iHrH
2.2 什么是C语言表达式 2D`_!OG=
2.3 “如果”代表C语言的哪条语句 \piHdVD
2.4 “如果明天下雨,我不去逛街”该如何用C语言表达 vz
{Z
tE"
2.5 假设(a*4)怎么用移位表达,a向哪边移,移多少 =Fu~ 0Wc
2.6 C语言有哪些循环语句 @fjVCc;
2.7 C语言for 语句该如何使用 %yr(i 6L
2.8 什么是C语言变量 TOH!vQP
2.9 “现在有相同类型的100个变量”,怎么用一条C语句实现 2m! T.$
2.10 什么是二维数组,二维数组跟一维数组有本质上的区别吗 B <et&r;
2.11 C语言结构体是什么 d
:(&q
2.12 怎样合理的运用C语言结构体 5;:P^[cH9
2.13 C语言变参函数有什么作用 KG8:F].u(
2.14 深刻理解switch 语句1 86_`Z$ s
2.15 深刻理解switch 语句2 y9/x:n&]
2.16 C语言宏定义有什么好处 nqnVFkGd9
2.17 什么是C语言指针, 指针是怎么赋值的 gGdt&9z
%
2.18 C语言指针和数组有什么区别 2.6F5&:($
2.19 C语言指针是有符号的,还是无符号的 i'6>_,\(
2.20 “void a ;” 这样定义可以吗?什么是空指针 kim qm
2.21 指针数组和数组指针分别代表什么 N^Bjw
?3
2.22 指针数组和数组指针的区别在哪里 )p?p39>h
2.23 怎样定义C语言函数指针 e\ Igc.
2.24 C语言函数指针有什么作用 |ORro
r}
2.25 数据结构之单链表 cV|u]ce%1
2.26 数据结构之双链表 &@dMIJK"(
2.27 数据结构之数组 \DDRl{
2.28 数据结构之队列 XkGS3EY
2.29 数据结构之二叉树 .YYLMI
项目:学生管理系统或者贪吃蛇小游戏 :h(r2?=7
/E%r@Rui3$
0vi)my;!
第三章 C++与MFC/逆向练习 4000元 ~a5-xWEZ
3.1 结构体与类有什么区别 KMU2PoqD
3.2 封装之this指针的本质 &@&0n)VTd
3.3 构造函数和析构函数 IRq@~vdt)
3.4 继承有什么好处 =&9x}4`;%
3.5 多继承与菱形继承 Vm_<eyI2
3.6 纯虚函数和虚函数 -n>JlfCd2
3.7 多态与虚函数有什么联系 jE.yT(+lW
3.8 虚继承以及析构调用虚函数 @+iO0?f
3.9 函数重载的妙用 \R}`S`fIw`
3.10 什么是运算符重载 I4Y;9Gg
3.11 模板是怎么运用的 AbXaxt/[g?
3.12 类模板以及命名空间 1G6 %?Iph
3.13 容器之string <aScA`\B#
3.14容器之vector K0YUN^St
3.15 容器之deque 8dBG ZwyET
3.16 容器之list JsDugn ,B
3.17 迭代器的用法 MhaoD5*9
3.18 输入流和文件流 <0
%X:q<
3.19set map i
wFI
lJ@
3.20 stl之 元素计数以及最小值 E <O:
3.21 函数对象和一元谓词 $t1XoL
3.22stl之 查找 删除 4Iq-4
IG(
3.23 C++异常 zfexaf!
3.24 一个Win32程序的执行过程(消息机制的本质) )^D:VY92
3.25 win32之创建显示窗口 D=!e6E<>@
3.26 win32之消息派发流程 ea\b7a*
3.27 win32之消息循环及消息函数 |1rKGDc
3.28 win32 对话框消息流程 8Ev,9
3.29 MFC与Win32程序的关系 ?J1x'/G
3.30 MFC类层次结构以及消息流程 [WAnII
3.31 操纵控件的几种方法 (*X SrQ
3.32 MFC之对话框 )"]Nf6
3.33 MFC之菜单 u` j9m@`
3.34 MFC之画图 }BR@vY'd
3.35 MFC之文本操作 Z'@a@Y+
3.36MFC之单文档和多文档
<dd(i
3.37 C++版本超市管理系统 qad`muAd
qh]ILE87(
i^O(JC
数据库:(新增) .3Ag6YI0N
1. 数据库的基础 sz?/4tY
2. 关系数据库的基础 l+V#`S*q
3. 表的管理和数据类型 P p]Ygt'u
4. 基础查询 ~A X@o-WU
5. 创建表,添加和删除 Mu~DB:Y9e
6. 数据库设计 PrZs@ Y
7. 创建数据库 .&Q'aOg
8. 存储过程 / }tMb
9. 触发器 QnJ(C]cW
10. 事务 piy_9nk
11. 锁 hj<h]dhp
12. 数据备份和恢复 /1!Wet}f
13. 数据库的安全性 |Nfi y
.=u8`,sO
|V>_l'
/
SOCKET编程:(新增) uPvE;E_
1. 什么是 socket \{Yi7V
Xv
2. Internet 套接字的两种类型 LYV\|a{Y
3. 网络理论 A=+
|&+? t
4. 结构体 GK>. R<[
5. 本机转换 >
]()#z
6. IP 地址和如何处理它们 U>@st="
7. socket()函数 4?vTuZ/
M
8. bind()函数 InCJ4D
9. connect()程序 2b` 3"S
10. listen()函数 /Ayo78Pi
11. accept()函数 <q dM
12. send() and recv()函数 {dk%j~w8
13. sendto() 和 recvfrom()函数 $Qc`4x;N
14. close()和shutdown()函数 c-ud $0)c
15. getpeername()函数 $
M8ZF(W
16. gethostname()函数 8rXQK|A
17. 域名服务(DNS) @h91: hb
18. 客户-服务器背景知识 lZI?k=rWv
19. 简单的服务器 m%[Ul@!V
20. 简单的客户程序 MD62ObK!
21. 数据包 Sockets u6pfc'GG g
22. 阻塞 ]'%Z&1 w
23. select()–多路同步 I/O b-Q%cxJ
/xu#ZZ?8F_
1X7tN2tQ
逆向练习: 7:cmBkXm
1. OD和IDA的基本用法 F6vN{FI
2. C语言全部语法逆向 #*"5F*
3. C++全部语法逆向 z;F6:aBa
4. 按钮以及其他控件的入口方法 ,Zs"r}G^
5. 逆向窗口程序的通杀方法 1lf5x
m.
练习:SOFTICE核心文件逆向 a7_ &;
\]a@ NBv
G5R"5d'
第四章 汇编编码 3000元 <$8`]e?I
学习硬编码的好处:(HOOK函数,系统HOOK, 代码变形,VM还原,TMD还原,解释器,调试器必备基础,这就是杀毒软件可以横行的法宝) ZWVN(U
机器码,简称汇编编码,俗称硬编码 gFx2\QV
4.0 寄存器 (32位汇编;64位汇编) (C=.&',P
4.01 汇编指令 r*gQGvc
4.02 堆栈 ~53uUT|B
4.03 逆向框架 y!,Ly_x$@
4.04 函数内部运行机制 i- v PJg1
4.1 定长编码 (0x40-0x4f 0x50-0x5f 0x70-0x7f 0x0f 0x80 – 0x0f 0x8f) |d@%Vb_
4.2 定长编码(0x04-0x07 0x0c-0x0f 0x14-0x17 0x1c-0x1d 0x24-0x27 0x2c-0x2d 0x34-0x37 0x3c-0x3d.) #"6O3.P
4.3 定长编码 (0x60 0x61 0x90-0x97 0xa8 0xa9 0xb0-0xbf 0xc2 0xc3 0xcc 0xcd 0xd4 0xd5 0xe0-0xe3 0xe8 0xe90 0xf8-0xfd等等) wVw?UN*rm;
4.4 硬编码4 (写程序把定长编码打印出来) F"?OLV1B&
4.5 硬编码5 (写程序把定长编码打印出来) Xc!0'P0T
4.6 变长编码 (0x88 0x89 0x8a 0x8b) Z fQzA}QD
4.7 变长编码 (0x88 0x89 0x8a 0x8b) MzWVsV
4.8 变长编码 (0x00-0x03 0x08-0x0b 0x10-0x13 0x18-0x1b 0x20-0x23 0x2b-0x2b 0x30-0x33 0x38-0x3b ) 7v8V0Gp
4.9 变长编码 (0x84-0x87 0x8c-0x8e 等等) ^@"EI|fsP
4.10 写程序把变长编码打印出来 x?*)
4.11 写程序把变长编码打印出来 YKk*QcAn
4.12 写程序把变长编码打印出来 1_aUU,|.
4.13 前缀 (0x26 0x2e 0x36 0x3e 0x66 0x67 0xf0 0xf2 0xf3) x
bsk
4.14 写程序处理前缀 2A5R3x=\
4.15 写程序处理前缀 ;B,6v P#
4.16 组编码 (0x80-83 0xc6-0xc7 0xd0-0xd3 等等) (H/2{##
4.17 写程序处理硬编码 #KOr-Yg|U
4.18 0F开头两个字节的编码 1F*3K3T {
4.19 编写反汇编引擎 cKb jW
4.20 VMP的核心解释器基本原理 n&4 4Acs[
*T+Bjj;w
项目:反汇编引擎,解释器框架 f7mN,_Lt
+Ui @3Q
V2&O]bR
第五章 Win32 API (只要是项目,都会调用API) 2500元 DF>LN%a~
5.1 文件操作 L T.u<ThR}
5.2 内存管理 LrL
Z
lJf
5.3 进程线程 p;P"mp\'
5.4 线程同步
,'KS:`m!
5.5 进程间通信 AD** 4E
5.6 网络通信 iFypKpHg~
5.7 未公开API的使用 hS?pc<~`#
GO|1O|?
)Td;2
第六章 PE 3500元 ecZT|X4u
学习PE的好处(加密解密,写壳,脱壳,注入,重载操作系统) D
(>,#F
6.1 PE有哪些结构1 #2XX [d%
6.2 PE有哪些结构2 %O=U|tuc$
6.3 为什么要有节表,节表有什么好处
WaaF;|,(
6.4 PE 磁盘拷贝到内存 (写程序) WFYbmfmV
6.5 PE 内存拷贝到拷贝磁盘,存盘(写程序) .d4L@{V
6.6 怎么给PE添加一个节 TH%J=1d
6.7 PE扩大节有什么好处 3.c0PRZ
6.8 PE合并节有什么作用 8~~*/oCoJt
6.9 PE 输入表 (写程序打印输入表) zn=Ifz)#|
6.10 PE 输入表 (写程序打印输入表) l[_y|W5
6.11 PE 输出表 (写程序打印输出表) m#^ua^JV
6.12 PE 输出表 (写程序打印输出表) </
.
9QV
6.13 PE 重定位表 mn>$K"_k
6.14 修改OEP 弹出MessageBox 91Fx0(
6.15 添加节,拷贝一段函数进去 6G^x%s
6.16 病毒的框架 Q|gRBu
6.17 病毒是如何在函数入口植入的 ^~iFG+g5
6.18 病毒是如何写入PE的 L355uaj
6.19 DLL应用及书写方式 TVVr<r
6.20 UPX壳的源码及其运用 0pC}+
+
6.21 加密壳原理和方式 C'_^DPzj
项目: 手写PE分析工具LoadPe #jc+2F,+{
ixf~3Y8
;$\?o
进阶篇 GmONhh(k
先复习 前面的基础篇的知识,然后写一个解释器完整版(20天) y,.X5#rnX*
OIqisQ7ZB
第七章 保护模式(段寄存器)(2个多月) 5000元 eLvbPE_
7.1 段寄存器构成 6ojEEM
7.2 保护模式 GDTR IDTR YM:;mX5B
7.3 GDTR,IDTR均为48bit结构体 N>+s8L.?
7.4 超线程与多核 W`qiPLk
7.5 保护模式 获取段寄存器的值 G~ldU:
?
7.6 保护模式 GDTR.ATTRIBUTES hJ>Kfm
7.7 保护模式之修改段寄存器 w,,QXJe{Z_
7.8 保护模式 调用门 swfcA\7R
7.9 保护模式 中断门 陷阱门 rmzM}T\20
7.10 保护模式 CS:EIP Ub(8ko:8$
7.11 保护模式 RETF,IRETD >E9:3&[F
7.12 保护模式 门Dword Count T[z}^"
7.13 保护模式 任务门 06Irx^n
7.14 保护模式 3环进1环 Zs(I]^w;d
7.15 保护模式 10-10-12 分页 XVlZ:kz
7.16 保护模式 PDT PTE kwcH$w<I
7.17 保护模式 页的特点 z`?{5v -Qs
7.18 保护模式 TLB 1&Fty'p
7.19 保护模式 异常与保护 ek^=Z`
7.20 保护模式 2-9-9-12 5q.d$K |
7.21 保护模式 CR0~CR4 J#```cB
7.22 10-10-12和2-9-9-12分页转换 P?zPb'UVqa
7.23-7.30 编写CE与内存搜索工具(VT引擎) 8@}R_GZc
e13{G@
&?#,rEw<x
第八章 操作系统 (本阶段较枯燥,将通过录播+直播答疑的方式进行) 5000元 wU9H=w^
本章主要讲解及应用于:驱动保护,系统保护,游戏保护,底层开发,系统架构,架构师,引擎开发等… l
J'.1Z&
8.1 操作系统 模拟线程切换 "M GX(SQ
8.2 操作系统 进程线程结构 sW53g$`v
8.3 操作系统 进程线程链表 -$@$
8.4 操作系统 TEB PEB pZYcCc>6&
8.5 操作系统 kpcr 结构 hJkSk;^
8.6 操作系统 TrapFrame 结构体 &EELq"5K
8.7 操作系统 SSDT 表 RW?F{Jy{
8.8 操作系统 驱动详解
;T9u$4<
8.9 操作系统 swapcontext函数 [32]wgw+{1
8.10 操作系统 SwapContext函数 7jj.maK
8.11操作系统 ntReadVirtualMemory aZk/\&=6
8.12操作系统 kiSwapThread R>r@I_
8.13操作系统 kiWaitListHead 5`!Bj0Uf
8.14操作系统 对象句柄及线程等待快 WT-BHB1
8.15操作系统 线程等待机制 fku\O<1
8.16操作系统 等待块及SetEvent 函数 X
J+y5at
8.17操作系统 keWaitSingleObject函数 /uh?F
8.18操作系统 APC机制 9L`5r$/
8.19操作系统 kiDeliveApc "&_$%#HUv
8.20操作系统 Apc函数的调度时机 C9,|G7~*q
8.21操作系统 异常处理 {c7ZA%T~R
8.22操作系统 kiDispatchException函数 O!,WH?r
8.23操作系统 3环异常处理过程 M_:_(y>l
8.24操作系统 回调机制 @y|ZXPC#
8.25操作系统 句柄 $,mljJSQv
8.26操作系统 对象句柄 efc<lSUR
8.27-3.41项目(内核重载) P
-O& X
8.42操作系统 调试机制 #[Z1W8e
8.43操作系统 Debug_Object 结构 k2"DFXsv
8.44操作系统 创建调试对象函数 c]eDTbXd
8.45操作系统 发送调试消息函数 {.D^2mj|
8.46操作系统 DbgKpSendApiMessage 函数 (9"w{pnlLc
8.47操作系统 调试寄存器 q{fgsc8v\
8.48操作系统 挂钩DbgKpSendApiMessage j56#KNAha
8.49操作系统 文档视图 ZQ%4]=w
8.50操作系统 消息机制 z]^u@]@NC
8.51操作系统 消息机制 <wIz8V
8.52操作系统 消息机制 ,n}h_ct
项目(3环调试器) >
q}Ns^ .'
#:~MtV
第九章 64位逆向(新增) 0wh4sKm[X
X64 汇编基础(一个半月) d)
{o#@
64位逆向是根据学员的需求添加的课程,比之32位逆向,有了一点点改动,但是大致语法是不变的 lj U|9|v
首先内存地址变成64位,寄存器的大小和栈的基本单元也变成64位 ja<!_^h=At
然后通用寄存器 (新增了R8~R15寄存器) ?4[IIX-
函数调用约定: 64位统一为一种变形的fastcall,64位的fastcall中最多可以把函数的4个参数存储到寄存器中传递 RCX,RDX,R8,R9等等 oPqWL9]
本章的目的:带领大家熟悉64位下的各种语法结构,熟练的掌握64位逆向,为以后的64位逆向分析打下基础 i;CVgdQ8
h^H~q<R[T
z'W8t|m}Pb
1. 安装环境 K;,_P5J%
2. 64位寄存器(RAX-R15,xmm0-xmm15) 2"'<Yk9
3. rsp和堆栈平衡 ?!uj8&yyf
4. x86和x64的调用约定(RCX,RDX,R8 R9) 4
8}\
5. x64的指令解析(JMP, CALL) H*gX90{!2
6. X64的运算符解析 }o'WR'LX
7. X64的函数分析 zZhAH('fG
8. X64的局部变量和全局变量 rz@FUU:&
9. X64的控制语句 oy;g;dtq
10. X64的分支语句 )jS9p~FS
11. X64 do while和while循环 +1te 8P*
12. x64 for循环 {\SJr:
13. X64的数组 LNA5
!E
14. X64 封装,继承 SY[7<BUZ
15. X64 单冲继承虚表和多重继承虚表 >dr34=(
16. x64位游戏分析 -$x5[6bN
17. X64游戏人物血值以及基地址 prdlV)LTpY
18. X64人物和NPC l{2Y[&%
19. X64怪物数据 bh[`uRC}
20. X64游戏数据结构分析 T3JM8
21. X64游戏内存读写 2b[R^O}
22. X64注入方法 qwERy{]Sp;
23. X64自动打怪分析 ,?3)L
}.L\O]~{
毕业设计 @`IMR$'
1.xuetr 内核工具开发 h@^d
Vg
2.驱动级的任务管理器 Y]9AC
3.逆向调试各类exe软件成汇编代码或伪C源码 kn^?.^dVX
4.病毒分析、木马分析、软件后门检测、病毒修复工具开发 6]Vf`i
5.软件加密与破解 c=^A3[AM
6.游戏安全/游戏的技术攻防分析、多开/防多开、游戏驱动检测、游戏安全 [}GPo0GY
7.软件HOOK技术分析 [!<W{ ($5
8.给成品软件增加菜单/功能等插件