如果你写过多年代码,却说不清一个函数调用在寄存器层面到底发生了什么,或者面对一个没有符号的二进制文件不知道从哪里下手,那这套资源解决的就是这个缺口。它不承诺让你变成安全专家,它的目标是补上「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架构汇编语言,并结合逆向工程实践,助你掌握高级技术。

课程亮点

• 系统学习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]

适合人群

  • 计算机底层原理爱好者
  • 逆向工程师
  • 软件开发者

学习收获

掌握x86_64架构原理
精通逆向工程技术
提升编程能力

祝您学习愉快!

学有所成,前程似锦!