先搞清楚这门课填的是哪个坑

很多人看汇编,是卡在某个具体问题上去查资料的:反编译出来一段看不懂的跳转、程序崩在某个寄存器上、想改一个软件的判断逻辑却不知道从哪下手、面试被问函数调用时栈里发生了什么。这些问题看起来零散,其实都指向同一块地基——x86_64 的指令、寄存器和调用约定。零散地搜索,你得到的是一堆孤立结论;系统过一次,你建立的是能从任意一行反汇编往上推的能力。这门课针对的就是后者。

需要注意,它假设你已经能用 C 或 C++ 写出能跑的程序。如果你连指针、数组在内存里的排布、结构体对齐都还说不清楚,那先补 C/C++ 部分,否则看汇编只会变成背指令表——记住了 mov 和 lea 长什么样,但不知道编译器为什么这么生成。资料包里单独有 C/C++ 的入门部分,就是为这个前提准备的。

x86_64 汇编:不是背指令,是读懂编译器

这门课讲的是 64 位下的那一套东西:通用寄存器从 32 位的 eax 系列扩展到 rax 系列、新增的 r8~r15、RIP 相对寻址、调用约定从 32 位时代的压栈传参改为寄存器传参(Windows 和 System V 还不一样)。这些不是细节,是决定你看反汇编时能不能对上号的关键。

学的时候建议带着一个问题:这段 C 代码为什么被编译成这几条指令。比如一个简单的结构体成员访问、一次函数调用、一个 switch,编译器在 64 位下会怎么处理参数、怎么保存返回地址、怎么对齐栈帧。能把 C 到汇编的对应关系走通,才算真的会看汇编,而不是认得指令。

从汇编到逆向:中间差的是工具和耐心

会读汇编和做逆向是两件事。逆向多出来的部分是:用调试器跟踪运行时状态、看内存和寄存器随指令怎么变、识别编译器优化后的代码形态、把反汇编结果还原成能理解的逻辑。课程里的逆向部分对应的就是这一段,通常从静态分析和动态调试两条线切入。

这部分最容易被低估的是练习量。逆向是手上的活,看懂一个例子不等于自己能独立分析一个二进制。建议每学完一类结构(循环、分支、函数调用、字符串处理),就自己找个小程序编译出来,对着反汇编逐行解释它的行为,再和源码核对。这个过程枯燥,但它是唯一能把知识变成能力的方式。

看完应该能回答这些问题

  • 一个函数被调用时,从参数传递到返回,寄存器和栈分别发生了什么?
  • 同样的 C 代码,在 32 位和 64 位下编译出来的汇编差在哪里,为什么?
  • 编译器开启优化后,哪些熟悉的代码形态会变得认不出来,怎么识别?
  • 面对一段没有源码的反汇编,你打算从哪一步开始还原它的逻辑?
  • 调试器里看到的某个寄存器值和你预期不一致时,你会怎么排查?

如果这些问题你现在答不上来或者答得不踏实,那这门课就是给你补这块的。如果已经能流畅回答,说明你缺的不是这门课,而是更细分的专题,别在这里浪费时间。

适合谁,不适合谁

适合的是:能写 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架构原理
精通汇编语言编程
学会软件逆向技术

祝您学习愉快!

学有所成,前程似锦!