如果你已经能写 C 或 C++,却在中级题目、崩溃分析、安全评估或者想看懂一段反汇编时反复卡壳,那多半不是语言能力的问题,而是中间缺了一层:CPU 实际怎么看你的代码。这门课就是补这一层的——以 x86_64 为主线,把汇编和逆向当成同一条链路上的前后两段来讲。
先确认自己缺的是不是这一块
下面这些情况出现两条以上,说明该补 x86_64 汇编了:能读懂 C 代码,但看到寄存器名、栈帧、调用约定就发懵;调试时只会看源码行,不会看反汇编窗口;对“函数参数到底放在哪”“返回值怎么传”“栈什么时候失衡”说不清楚;接手别人的二进制或者没有符号的模块时无从下手;想做安全分析、漏洞验证,却发现每次都要回头查指令手册。
反过来,如果你目前还写不顺指针、结构体、函数封装,这门课会有点吃力。资料包里也带了 C/C++ 入门部分,但那是兜底,不是让你从零开始学编程的理由。判断标准很简单:能不能独立写出带函数调用和数组操作的小程序。能,就可以直接进汇编部分。
汇编和逆向为什么必须一起学
单独背指令表,记完就忘;单独学逆向技巧,遇到不认识的指令又得停下来查。这门课把两者放在一起:先搞清楚指令在做什么,再去看编译器把一段 C 代码翻译成了什么样子,最后反过来从反汇编推回原来的逻辑。这条路径比死记硬背有效得多。
具体会落在这几件事上:寄存器各自的角色和常见用法、寻址方式怎么组合出数组和结构体访问、算术与逻辑指令、条件跳转与循环的还原、栈的进出与局部变量布局。函数调用约定是重点,System V AMD64 下参数怎么排、哪些寄存器由谁保存、栈对齐为什么会导致莫名崩溃——这些在调试真实程序时几乎天天遇到。
逆向部分练的是什么
逆向不是“把汇编翻译成 C”这么简单,更多是建立假设再验证的习惯:看到一个循环,先猜它在遍历什么;看到一个比较加跳转,先猜这是哪类判断;看到间接调用,先追它的来源。课程会围绕这类推理展开,包括识别常见编译器生成的模式、区分用户代码和库代码、读懂函数边界和调用关系、在缺少源码的情况下定位关键逻辑。
练习建议自己配一套环境:一个反汇编工具、一个调试器,再准备几个自己写的小程序,编译时故意关掉优化和打开优化各来一遍,对比输出。同一个函数在 -O0 和 -O2 下的样子差别很大,这种对比比看十遍教程都管用。
学完之后你应该能回答的问题
- 一个带三个参数的函数被调用时,参数分别经过哪些寄存器或内存位置?返回时栈是什么状态?
- 为什么有些崩溃在源码层面完全看不出问题,从栈帧和指针对齐却能解释清楚?
- 面对一段没有符号的反汇编,你从哪几个特征入手判断它是不是在遍历数组?
- 编译器优化之后,原来的局部变量去哪了?为什么调试时看不到它?
- 一段代码里出现间接跳转,可能来自哪些 C 语言写法?
如果这些问题你现在只能模糊作答,学完再回来对一遍,会清楚很多。不建议一口气刷完,按“指令—调用约定—逆向推理”分三段推进,每段结束都拿自己写的程序验证一次。看会不等于会,能在调试器里把猜测确认下来,才算真的补上了这个缺口。
x86_64架构汇编语言逆向
深入理解x86_64架构汇编语言逆向技巧
编辑点评
系统讲解x86_64架构汇编语言,涵盖指令详解、函数调用约定、软件逆向技术,适合有一定编程基础的学习者。
⭐ 编辑推荐
本课程深入解析x86_64架构汇编语言,从基础指令到高级逆向技术,助你掌握软件逆向的核心技能。
课程亮点
课程目录
📁 02.x86_64架构汇编语言
12.ADD指令详解.mp4 [92.0 MB]
05.XCHG指令详解.mp4 [19.4 MB]
03.MOV指令详解.mp4 [40.5 MB]
06.cdecl函数调用约定.mp4 [113.2 MB]
13.SUB指令详解.mp4 [72.4 MB]
09.x86汇编调用C语言库函数.mp4 [24.4 MB]
17.DEC指令详解.mp4 [18.2 MB]
18.AND指令详解mp4.mp4 [21.0 MB]
020.XOR指令详解.mp4 [16.9 MB]
07.stdcall函数调用约定.mp4 [25.9 MB]
08.寻址方式.mp4 [70.8 MB]
19.OR指令详解.mp4 [14.6 MB]
14.MUL指令详解.mp4 [79.5 MB]
01.寄存器基础.mp4 [152.8 MB]
04.LEA指令详解.mp4 [47.6 MB]
02.x86汇编开发框架.mp4 [44.4 MB]
15.DIV指令详解.mp4 [33.0 MB]
16.INC指令详解.mp4 [23.8 MB]
11.x86内联汇编.mp4 [21.5 MB]
10.x86汇编调用WindowsAPI.mp4 [41.0 MB]
📁 03.x86_64软件逆向技术
01.整型变量逆向.mp4 [32.3 MB]
39.fastcall调用约定.mp4 [36.3 MB]
14.基于启动特征定位main函数.mp4 [37.6 MB]
19.赋值运算符逆向.mp4 [21.8 MB]
38.thiscall调用约定.mp4 [38.3 MB]
33.goto语句逆向.mp4 [23.6 MB]
29.6case无线表switch语句逆向.mp4 [43.1 MB]
07.一维数组逆向.mp4 [23.7 MB]
16.位运算符逆向.mp4 [112.0 MB]
25.3case的switch语句逆向.mp4 [54.0 MB]
40.数组作为参数的函数逆向.mp4 [37.8 MB]
37.stdcall调用约定.mp4 [11.8 MB]
10.指向变量的指针逆向.mp4 [22.6 MB]
22.选择结构-ifelse语句逆向.mp4 [56.2 MB]
41.使用数组作为返回值的函数逆向.mp4 [15.7 MB]
24.嵌套if语句逆向.mp4 [43.1 MB]
03.浮点型变量逆向.mp4 [34.6 MB]
17.关系运算符逆向.mp4 [28.9 MB]
02.浮点型变量存储.mp4 [26.3 MB]
13.基于功能定位mian函数.mp4 [24.9 MB]
26.6case的switch语句逆向.mp4 [93.5 MB]
06.常量逆向.mp4 [17.1 MB]
35.函数调用约定基础.mp4 [11.0 MB]
05.布尔型变量逆向.mp4 [18.3 MB]
18.逻辑运算符逆向.mp4 [36.4 MB]
27.6case缺项的switch语句逆向.mp4 [79.7 MB]
30.循环结构-while循环逆向.mp4 [48.2 MB]
23.多选择ifelse语句逆向.mp4 [53.9 MB]
28.6case单项不连续switch语句逆向.mp4 [56.9 MB]
11.指向数组的指针逆向.mp4 [23.6 MB]
31.循环结构-dowhile循环逆向.mp4 [41.8 MB]
09.多维数组逆向.mp4 [29.3 MB]
12.基于字符串定位mian函数.mp4 [25.6 MB]
04.字符与字符串类型变量逆向.mp4 [53.1 MB]
15.算术运算符逆向.mp4 [81.9 MB]
20.三目运算符逆向.mp4 [15.0 MB]
21.选择结构-if语句逆向.mp4 [54.9 MB]
36.cdecl函数调用约定.mp4 [67.9 MB]
34.continue与break语句逆向.mp4 [21.1 MB]
32.循环结构-for循环逆向.mp4 [38.9 MB]
08.二维数组逆向.mp4 [28.1 MB]
📁 01.C&C++零基础入门计划
06.变量生命周期与整型变量的存储.mp4 [24.5 MB]
09.输入与输出.mp4 [17.7 MB]
28.函数基础.mp4 [28.9 MB]
02.进制与位.mp4 [22.4 MB]
01.第一个C语言程序.mp4 [41.1 MB]
22.指向一维数组的指针.mp4 [20.8 MB]
08.字符与字符串类型变量.mp4 [25.0 MB]
26.内存管理(C++版本).mp4 [24.1 MB]
13.三目运算符.mp4 [8.6 MB]
24.指向多维数组的指针.mp4 [17.6 MB]
30.函数指针与回调函数.mp4 [37.4 MB]
20.数组.mp4 [28.4 MB]
29.使用指针作为参数和返回值.mp4 [27.6 MB]
12.关系与逻辑运算符.mp4 [15.8 MB]
23.指向二维数组的指针.mp4 [20.2 MB]
17.dowhile循环.mp4 [6.3 MB]
18.for循环.mp4 [10.1 MB]
11.位运算符.mp4 [17.6 MB]
03.内存的概念.mp4 [9.3 MB]
14.ifelse选择语句.mp4 [11.1 MB]
10.算术运算符.mp4 [10.8 MB]
00.Visual Studio 2022的安装与配置.mp4 [27.3 MB]
27.指针数组与二级指针.mp4 [32.4 MB]
07.浮点型变量的定义与存储.mp4 [31.6 MB]
15.switch选择语句.mp4 [9.8 MB]
05.变量与常量.mp4 [11.9 MB]
25.内存管理(C版本).mp4 [34.9 MB]
04.数据类型概述.mp4 [14.3 MB]
19.goto语句.mp4 [6.0 MB]
16.while循环.mp4 [9.1 MB]
21.指针基础.mp4 [22.5 MB]适合人群
- 计算机安全爱好者
- 逆向工程师
- 软件安全研究者
学习收获
祝您学习愉快!
学有所成,前程似锦!





