如果你写过 C 或 C++,却说不清一个函数调用在寄存器层面到底发生了什么;如果你用调试器跟过崩溃现场,但看到反汇编窗口里成片的 mov、lea、call 就想关掉;如果你做安全、做外挂对抗、做漏洞分析或驱动开发,却总在「能跑」和「知道为什么能跑」之间卡着——这门课就是冲着这个缺口来的。

它不谈架构史,也不打算把你培养成写汇编的生产力工具人。它的目标很明确:让你具备读懂编译器产物、并在必要时刻改写它的能力。

先确认你缺的是哪一块

这套资料按三段组织,但三段不是「新手到大神」的线性阶梯,而是三个可独立切入的能力面。你可以先对号入座:

  • 写得出代码,但看不懂编译器优化后的结果,尤其是内联、尾调用、寄存器分配之后的形态——补汇编与 ABI 那块。
  • 能看懂单条指令,但一串指令连起来就断片,不知道这段在判断什么、操作哪个结构体字段——补逆向分析那块。
  • 语法层面都懂,但一遇到 C++ 的虚表、异常表、STL 容器内存布局就发懵——补 C/C++ 与汇编的对应关系那块。

零基础那一部分不是给完全没写过代码的人准备的台阶,它更像一份参照系:把 C/C++ 里那些「语言特性」还原成机器实际要做的事,后面看汇编时才有东西可对照。真正的重点是 x86_64 指令语义、调用约定、栈帧、寄存器用途,以及逆向时怎么从一堆指令里还原出控制流和数据结构。

看完应该能回答的问题

检验是否学进去了,不看能不能默写指令表,看能不能回答这几类问题:

  • 一个带参数的函数被调用时,前六个整型参数分别走哪些寄存器;返回值放哪;谁负责恢复栈。
  • 编译器把 switch 编译成跳转表还是条件链,取决于什么;跳转表在反汇编里长什么样。
  • 看到一段循环,怎么判断它是 for、while 还是被优化过的 do-while。
  • 一个 C++ 对象的虚函数调用,在汇编里如何先取虚表指针、再按偏移取槽位;多重继承下偏移为什么会变。
  • 怎么用调试器在关键调用点下断、改寄存器或内存,让程序走进你想要的路径。

这些问题答不上来,说明还停在「认得指令」的阶段,没到「读懂逻辑」。

怎么用这套材料,别按顺序硬啃

比较省时间的用法是带着具体目标推进。手上有一个真实的二进制样本,或者自己写一段 C 代码编译出来对比,效果远好于从头到尾刷目录。建议的节奏是:先在汇编部分建立寄存器和栈的直觉,遇到读不懂的编译器行为就回 C/C++ 部分找对照,等能稳定跟下一段函数的完整执行过程,再进逆向部分练静态分析与动态调试的配合。

C/C++ 基础和汇编部分不要割裂看。同一段源码,用不同优化等级编译,得到的汇编差异本身就是最好的练习题。逆向部分则建议配合调试器实操,光看不动手,遇到真实样本时依然会卡在第一步。

适合谁,不适合谁

适合:正在转底层或安全方向、已经有编程基础但缺少机器层视角的人;做漏洞分析、恶意代码分析、协议逆向,需要从二进制里抠逻辑的人;想搞清楚性能问题到底出在哪一层的人。

不太适合:完全没写过代码、想从零学编程的人;只想记几条指令应付面试、不打算动手调试的人。这门内容的上限取决于你愿意在调试器里花多少时间,光看是补不上缺口的。

x86_64架构汇编语言&逆向资源

深入理解x86_64架构与逆向工程

编辑点评

系统学习x86_64汇编语言,结合C/C++基础,掌握软件逆向技术,适合有志于安全领域或底层开发的学习者。

⭐ 编辑推荐

本课程从x86_64架构入手,深入讲解汇编语言,并辅以C/C++基础,帮助学员掌握软件逆向技术。

课程亮点

• 系统学习x86_64汇编语言
• 结合C/C++基础
• 掌握软件逆向技术

课程目录

📁 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]

适合人群

  • 计算机安全爱好者
  • 底层开发工程师
  • 逆向工程师

学习收获

掌握x86_64架构原理
精通汇编语言编程
学会软件逆向分析

祝您学习愉快!

学有所成,前程似锦!