【软件技巧】第35课,软件逆向安全工程师之汇编指令mov、ptr、xchg交换指令,每天5分钟学习逆向吧!

ops/2024/9/24 8:22:43/

在x86汇编语言中,mov 指令用于将一个值从一个位置移动到另一个位置。这个值可以是立即数、寄存器中的值、内存中的值或者是一个指针。mov 指令是汇编语言中最常用的指令之一,因为它在数据传输和初始化操作中起着核心作用。

mov 指令的基本格式:

mov 目标操作数, 源操作数

  • 目标操作数:接收数据的操作数,通常是寄存器、内存地址或者是一个指针。
  • 源操作数:提供数据的操作数,可以是立即数、寄存器中的值、内存中的值或者是一个指针。

mov 指令的扩展格式:

mov 目标操作数, 源操作数

  • 目标操作数:接收数据的操作数,通常是寄存器、内存地址或者是一个指针。
  • 源操作数:提供数据的操作数,可以是立即数、寄存器中的值、内存中的值或者是一个指针。

byte, dword, 2 bytes, double 关键字:

  • byte:表示一个字节(8位)的数据。
  • dword:表示一个双字(32位)的数据。
  • 2 bytes:表示两个字节(16位)的数据。
  • double:在某些汇编语言中,可能表示一个双字(32位)的数据,但在x86汇编中,double 通常表示一个双精度浮点数(64位)。

ptr(pointer):

  • ptrpointer 的缩写,它通常用于指针类型。指针是一个存储内存地址的变量,它指向内存中的数据。

xchg 交换指令:

  • xchg 指令用于交换两个操作数的值。它通常用于交换两个寄存器中的值,但也可以用于交换内存地址中的值。
  • xchg 指令的基本格式是:xchg 寄存器1, 寄存器2xchg 内存地址1, 内存地址2`。

示例:

`
mov eax, 0x12345678 ; 将立即数 0x12345678 移入 eax 寄存器
mov byte [ebx], 0xFF ; 将立即数 0xFF 移入 ebx 寄存器指向的内存地址
mov dword [esi], eax ; 将 eax 寄存器的值移入 esi 寄存器指向的内存地址
mov ecx, [ebp + 4] ; 将内存地址 ebp+4 处的双字移入 ecx 寄存器
mov ptr [edi], ecx ; 将 ecx 寄存器的值移入 edi 寄存器指向的内存地址
xchg eax, ecx ; 交换 eax 和 ecx 寄存器中的值
xchg byte [ebp], [esi] ; 交换内存地址 ebp 和 esi 指向的内存地址中的字节

通过 mov 指令和 xchg 指令,可以实现数据在不同位置之间的传输和交换。这些指令在汇编语言编程和逆向工程中非常常见。


http://www.ppmy.cn/ops/107000.html

相关文章

QT QxOrm CRUD增删改查mysql数据库操作

QT QxOrm CRUD增删改查mysql数据库操作 QxOrm 是一个 C 库,旨在为 C 用户提供对象关系映射 (ORM) 功能。 基于每个类的简单 C 设置函数(如 Java 中的 Hibernate XML 映射文件),QxOrm 库提供以下功能: 持久性&#xff1…

吐血整理nacos 作为springcloud的配置中心和注册中心

吐血整理nacos 作为配置中心和注册中心 环境版本nacos 版本 nacos启动单机模式启动配置数据库 Spring cloud 连接注册Nacos配置中心导入依赖 注册中心 环境版本 SpringBoot版本SpringCloud版本cloud Alibaba版本2.6.132021.0.52021.0.5.0 参照依据 spring-cloud-alibab 对应…

SQL治理经验谈:索引覆盖

背景 explain - format id: query sql 的标识idSELECT_TYPE: 查询的类型(SIMPLE/PRIMARY/SUBQUERY/DERIVED/UNION/UNION RESULT/DEPENDENT SUBQUERY/DEPENDENT UNION)table: 表名Partitions: 表连接的分区数type: 查询中使用的访问类型(syste…

光电振荡器行业研究:未来几年年复合增长率CAGR为16.0%

光电振荡器(OEO)是一种微波光子系统,它使用高品质因数的光能量存储元件产生具有超低相位噪声的微波信号。光电振荡器基于将来自泵浦激光器的连续光能转换为射频(RF)、微波或毫米波信号。OEO 的特点是具有非常高的品质因数(Q) 和稳定性,以及电子振荡器不容…

Linux开发工具的使用

文章目录 vim的使用基本模式介绍光标当前行操作光标快速定位:插入模式的三种方式:vim基本操作底行模式的操作 Linux编译器 - gcc/g的使用Linux自动化构造工具 - make/makefile的使用用法:make/makefile使用注意事项(基本原理&…

使用 Nginx 部署前端 Vue.js 项目

引言 Vue.js 是一个流行的前端框架,用于构建用户界面。当涉及到生产环境的部署时,选择一个合适的 web 服务器是非常重要的。Nginx 是一个高性能的 HTTP 和反向代理服务器,非常适合用来部署前端应用程序。本文将指导你如何使用 Nginx 部署一个…

Copilot+ PC 借助新的 AMD 和 Intel 芯片扩大可用性

首批Copilot 电脑于五月上市,但它们只配备了高通最新的 Snapdragon X Elite 和 X Plus CPU。如果你想要一台能够支持所有 Windows 11 新 AI 功能的 AMD 或 Intel 芯片的新笔记本,你可能会有些失望。 不过这种情况很快就会改变,因为今天微软宣…

SQL 数据查询

文章目录 3.4.1 单表查询定义特点单表无条件查询单表带条件查询对查询结果进行排序限制查询结果数量 3.4.2 分组查询定义特点:聚集函数GROUP BY短语HAVING子句分组查询小结 3.4.3 连接查询定义特点:等值连接与非等值连接查询自然连接(内连接&…