如果你写过多年代码,却说不清一个函数调用在寄存器层面到底发生了什么,或者面对一个没有符号的二进制文件不知道从哪里下手,那这套资源解决的就是这个缺口。它不承诺让你变成安全专家,它的目标是补上「C/C++ 到机器指令」之间那段经常被跳过的路。
它填的是哪一段空白
多数人的知识结构里有一段断层:上面是 C、C++ 这类高级语言,下面是操作系统和硬件,中间那层汇编与调用约定,往往只在考试前背过几条指令就还回去了。后果是具体的——调试 release 版本时看不懂反汇编窗口,读崩溃转储时只能猜,拿到一个只有二进制没有源码的程序时束手无策。
这套资源按「C/C++ 基础 → x86_64 汇编 → 软件逆向」的顺序排列,逻辑是清楚的:先用高级语言把程序结构建立起来,再把同样的结构翻译成汇编去对照,最后在逆向场景里反过来从汇编还原程序逻辑。真正有价值的是后两步,因为看懂自己写的代码对应的汇编并不难,难的是面对别人编译出来的、被优化过的、可能还加了壳的代码。
看完应该能回答的问题
- 一个带参数的函数调用,参数究竟是走寄存器还是走栈?哪些寄存器由调用方保存,哪些由被调用方保存?
- 为什么同一段 C 代码在
-O0和-O2下反汇编出来完全不像同一个程序?编译器都做了哪些事? - 栈帧、栈对齐、返回地址,这些概念在崩溃现场具体长什么样?怎么从寄存器状态倒推程序卡在哪一步?
- 一个没有符号表的可执行文件,怎么先定位到关键逻辑,再判断某个分支是不是权限校验?
- 结构体、数组、指针在汇编层面分别如何寻址?虚函数调用为什么是一次间接跳转?
能回答这些问题,说明你已经能在机器指令这一层阅读程序了,而不是靠猜。这也是判断自己是否真的学懂的分界线:不是记住了多少条指令,而是能不能把一段陌生的汇编读成一段有语义的逻辑。
练习环节怎么用
汇编和逆向都属于「看会了不等于会」的类型,光看讲解视频很快就会产生虚假的熟悉感。合理的用法是:每学完一段指令或一个调用约定,立刻自己写一段小程序、用编译器生成汇编、再逐行对照解释;逆向部分则应该自己找几个小型程序(命令行工具、简单的小游戏、自己写的程序去掉符号)反复练手,先做静态分析画出调用关系,再上动态调试去验证猜测。
再具体一点:学栈帧时,手动在调试器里断在函数入口和出口,把 rsp、rbp 的变化一步步记下来;学分支识别时,专门找几个包含if-else和switch的函数,比较编译器生成跳转表还是条件跳转。这种小规模、可重复的练习,比看十个小时的讲解更有用。遇到读不通的地方,往往不是指令不认识,而是对编译器优化或数据结构布局的理解有洞,那就该回头补那一块。
适合谁,不适合谁
适合三类人:正在准备底层相关岗位笔试面试、需要把汇编捡回来的求职者;从应用层转向安全、逆向、漏洞分析方向的开发者;以及日常工作需要读反汇编、分析崩溃、排查别人留下的二进制问题的工程师。
不适合的是想跳过 C/C++ 直接学汇编的人。资源本身从 C/C++ 讲起,如果你连指针、结构体、内存布局都还没理清,硬啃汇编只会变成背指令表,学完仍然用不上。另外,如果你的目标只是写业务代码、完全不碰底层,这套内容的投入产出比并不高。
建议的学习节奏是先跑通「C 代码 ↔ 汇编」的对照,把调用约定和栈帧彻底弄明白,再进入逆向部分。后者对前者高度依赖,跳过基础直接看逆向技巧,多半只是记住几个工具的操作步骤。
x86_64架构汇编语言与逆向工程资源
深入理解x86_64架构与逆向工程
编辑点评
系统学习x86_64汇编语言,掌握逆向工程核心技巧,适合有志于深入理解计算机底层原理的开发者。
⭐ 编辑推荐
本课程从基础C/C++语法出发,逐步深入x86_64架构汇编语言,并结合逆向工程实践,助你掌握高级技术。
课程亮点
课程目录
📁 01.C&C++零基础入门计划
01.C&C++零基础入门计划说明.png [493.5 KB]
00.Visual Studio 2022的安装与配置.mp4 [27.3 MB]
04.数据类型概述.mp4 [14.3 MB]
26.内存管理(C++版本).mp4 [24.1 MB]
17.dowhile循环.mp4 [6.3 MB]
21.指针基础.mp4 [22.5 MB]
10.算术运算符.mp4 [10.8 MB]
16.while循环.mp4 [9.1 MB]
30.函数指针与回调函数.mp4 [37.4 MB]
01.第一个C语言程序.mp4 [41.1 MB]
14.ifelse选择语句.mp4 [11.1 MB]
15.switch选择语句.mp4 [9.8 MB]
09.输入与输出.mp4 [17.7 MB]
20.数组.mp4 [28.4 MB]
29.使用指针作为参数和返回值.mp4 [27.6 MB]
19.goto语句.mp4 [6.0 MB]
22.指向一维数组的指针.mp4 [20.8 MB]
13.三目运算符.mp4 [8.6 MB]
06.变量生命周期与整型变量的存储.mp4 [24.5 MB]
12.关系与逻辑运算符.mp4 [15.8 MB]
03.内存的概念.mp4 [9.3 MB]
24.指向多维数组的指针.mp4 [17.6 MB]
18.for循环.mp4 [10.1 MB]
07.浮点型变量的定义与存储.mp4 [31.6 MB]
28.函数基础.mp4 [28.9 MB]
25.内存管理(C版本).mp4 [34.9 MB]
23.指向二维数组的指针.mp4 [20.2 MB]
05.变量与常量.mp4 [11.9 MB]
27.指针数组与二级指针.mp4 [32.4 MB]
11.位运算符.mp4 [17.6 MB]
08.字符与字符串类型变量.mp4 [25.0 MB]
02.进制与位.mp4 [22.4 MB]
📁 03.x86_64软件逆向技术
03.x86_64软件逆向技术资料.png [493.5 KB]
04.字符与字符串类型变量逆向.mp4 [53.1 MB]
20.三目运算符逆向.mp4 [15.0 MB]
08.二维数组逆向.mp4 [28.1 MB]
26.6case的switch语句逆向.mp4 [93.5 MB]
06.常量逆向.mp4 [17.1 MB]
19.赋值运算符逆向.mp4 [21.8 MB]
36.cdecl函数调用约定.mp4 [67.9 MB]
31.循环结构-dowhile循环逆向.mp4 [41.8 MB]
34.continue与break语句逆向.mp4 [21.1 MB]
27.6case缺项的switch语句逆向.mp4 [79.7 MB]
14.基于启动特征定位main函数.mp4 [37.6 MB]
33.goto语句逆向.mp4 [23.6 MB]
38.thiscall调用约定.mp4 [38.3 MB]
05.布尔型变量逆向.mp4 [18.3 MB]
37.stdcall调用约定.mp4 [11.8 MB]
23.多选择ifelse语句逆向.mp4 [53.9 MB]
10.指向变量的指针逆向.mp4 [22.6 MB]
35.函数调用约定基础.mp4 [11.0 MB]
03.浮点型变量逆向.mp4 [34.6 MB]
24.嵌套if语句逆向.mp4 [43.1 MB]
40.数组作为参数的函数逆向.mp4 [37.8 MB]
13.基于功能定位mian函数.mp4 [24.9 MB]
12.基于字符串定位mian函数.mp4 [25.6 MB]
41.使用数组作为返回值的函数逆向.mp4 [15.7 MB]
28.6case单项不连续switch语句逆向.mp4 [56.9 MB]
30.循环结构-while循环逆向.mp4 [48.2 MB]
39.fastcall调用约定.mp4 [36.3 MB]
25.3case的switch语句逆向.mp4 [54.0 MB]
09.多维数组逆向.mp4 [29.3 MB]
01.整型变量逆向.mp4 [32.3 MB]
02.浮点型变量存储.mp4 [26.3 MB]
11.指向数组的指针逆向.mp4 [23.6 MB]
15.算术运算符逆向.mp4 [81.9 MB]
18.逻辑运算符逆向.mp4 [36.4 MB]
29.6case无线表switch语句逆向.mp4 [43.1 MB]
32.循环结构-for循环逆向.mp4 [38.9 MB]
16.位运算符逆向.mp4 [112.0 MB]
07.一维数组逆向.mp4 [23.7 MB]
17.关系运算符逆向.mp4 [28.9 MB]
22.选择结构-ifelse语句逆向.mp4 [56.2 MB]
21.选择结构-if语句逆向.mp4 [54.9 MB]
📁 02.x86_64架构汇编语言
02.x86_64架构汇编语言文档.png [493.5 KB]
03.MOV指令详解.mp4 [40.5 MB]
10.x86汇编调用WindowsAPI.mp4 [41.0 MB]
04.LEA指令详解.mp4 [47.6 MB]
01.寄存器基础.mp4 [152.8 MB]
14.MUL指令详解.mp4 [79.5 MB]
12.ADD指令详解.mp4 [92.0 MB]
02.x86汇编开发框架.mp4 [44.4 MB]
13.SUB指令详解.mp4 [72.4 MB]
18.AND指令详解mp4.mp4 [21.0 MB]
16.INC指令详解.mp4 [23.8 MB]
11.x86内联汇编.mp4 [21.5 MB]
17.DEC指令详解.mp4 [18.2 MB]
15.DIV指令详解.mp4 [33.0 MB]
06.cdecl函数调用约定.mp4 [113.2 MB]
020.XOR指令详解.mp4 [16.9 MB]
09.x86汇编调用C语言库函数.mp4 [24.4 MB]
08.寻址方式.mp4 [70.8 MB]
07.stdcall函数调用约定.mp4 [25.9 MB]
19.OR指令详解.mp4 [14.6 MB]
05.XCHG指令详解.mp4 [19.4 MB]适合人群
- 计算机底层原理爱好者
- 逆向工程师
- 软件开发者
学习收获
祝您学习愉快!
学有所成,前程似锦!





