汇编系列第三篇-内存布局与函数03

admin 2026-01-23 10:49:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解汇编寻址模式,涵盖寄存器间接寻址及RBP偏移访问,解析局部变量与参数存储。剖析CPU标志位与条件跳转机制,提供调试器寄存器及堆栈窗口的使用指南。重点总结x64调用约定下的参数传递与返回值规则,为后续二进制安全实战项目奠定基础。 综合评分: 86 文章分类: 二进制安全,逆向分析,安全培训


cover_image

汇编系列第三篇-内存布局与函数03

原创

RabbitQ RabbitQ

安全研究站

2026年1月21日 22:24 北京

9.寻址模式速查

指令里的方括号 [] 表示“去这个地址把值取出来/写进去”。寻址模式就是 CPU 找房间里的东西的各种方式。

| 写法 | 解读 | 理解 | 常见用途 | | — | — | — | — | | [寄存器] | 间接寻址 | 指针 :寄存器里放着房间号(例如:[RAX])。 | 访问堆上的数据。 | | [rbp+8] | 以 RBP 为基址,偏移 8 字节 | 相对于你站立位置 :你站在 RBP 的位置,向后退 8 步。 | 访问函数参数。 | | [rbp-20h] | RBP 往下偏移 | 你往前迈 :你站在 RBP 的位置,向前走 32 步。 | 存放局部变量。 | | [rsi+rcx*4] | RSI 指向数组首地址,RCX 是索引 | 导航系统 :从 RSI(起点)出发,走 RCX 步,每步 4 个单元。 | 访问数组元素:array[i]。 |

关键提醒:在函数调用(栈帧)中,RBP 就像一个锚点。高于锚点是函数参数,低于锚点是局部变量。

10.标志位&条件跳转的底层

cmp/test 会更新一组标志位,这就像是 CPU 在做完运算后,会记录自己的心情和状态。条件跳转、setXX 指令都靠它们判断:

| 标志 | 含义 | 语义解释 | CMP RA, RB 后,何时为 1 (真) | | — | — | — | — | | ZF | Zero Flag (零标志) | 运算结果是 0 | RA 和 RB 相等。 | | SF | Sign Flag (符号标志) | 运算结果是 负数 | 结果的最高位是 1。 | | CF | Carry Flag (进位标志) | 无符号数产生了借位/进位 | 无符号比较时,如果 RA < RB(发生了借位)。 | | OF | Overflow Flag (溢出标志) | 有符号数结果超出范围 | 有符号数运算结果出错 |

条件跳转比喻:条件跳转指令(如 JE、JL)就像一个门卫,它们不看数据本身,只查看 CPU 的情绪卡(标志位),然后决定是否放行(跳转)。

  • JE (Jump if Equal):门卫只看 ZF 卡:“ZF 是 1 吗?(相等吗?)”

11.调试器里要看什么?

源码分析离不开调试,无论是用 x64dbg、WinDbg 还是VS 自带调试器

  1. 寄存器窗口
  • 作用:执行每条指令后,立刻用放大镜观察 RAX/RCX/… 等的值有没有变化,理解数据的流动路径
  1. 堆栈窗口
  • 作用:结合 RSP / RBP,查看函数调用与返回的过程:
  1. 内存/数据窗口:
  • 作用:输入一个具体地址或符号名,查看该地址指向的真实内存内容, 验证指针是否正确、数据结构和字符串是否按预期存放。
  1. 反汇编窗口
  • 当前指令及上下文(前后几条),防止只盯一条指令误判逻辑

  • 跳转目标是否命中预期分支(JE/JNE/JL 是否真的跳了)

  • CALL / RET 是否与栈变化对应

  • 作用:查看 RIP 当前指向的指令,这是 CPU 下一步要执行的“事实来源”。

  • 重点看

  • 调试时一切以反汇编窗口为准。

划重点:

现阶段只需记住:

  1. 寄存器是超快的临时存储
  2. MOV是复制,不是移动
  3. JMP是跳转,实现循环
  4. CMP+条件跳转实现if语句
  5. 函数参数:RCX, RDX, R8, R9
  6. 函数返回值:RAX

其他细节以后再慢慢理解!

总结

基本上基础知识大概就这些,后面的文章直接开始项目,就是之前说的一个远程管理软件的Agent的删减版,如果有知识漏了的,等代码写上了想起来我再补充~


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全研究站 RabbitQ RabbitQ《汇编系列第三篇-内存布局与函数03》

评论:0   参与:  0