如果你已经能写 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架构汇编语言,从基础指令到高级逆向技术,助你掌握软件逆向的核心技能。

课程亮点

• 系统讲解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]

适合人群

  • 计算机安全爱好者
  • 逆向工程师
  • 软件安全研究者

学习收获

掌握x86_64架构汇编语言基础
理解函数调用约定和逆向技术
提升软件安全分析能力

祝您学习愉快!

学有所成,前程似锦!