VisualStudio反汇编功能使用

VisualStudio反汇编功能使用

使用方法

到达断点时:Ctrl+K(松开)+G(后按)唤出反汇编界面,就可以看到当前代码对应的汇编语言了

注意:进入反汇编窗口后可以F10单次调试一条汇编指令
在这里插入图片描述

其他:

  • 打开调试-窗口-寄存器 可以查看寄存器数值
    在这里插入图片描述
  • 打开调试-窗口-内存 可以查看内存数值,支持搜索,将反汇编中的地址拷贝进搜索框可以定位你想要查看的内存地址的值
    在这里插入图片描述

搭配食用为佳

常用寄存器

详见*X86-64寄存器介绍
在这里插入图片描述

windows X86寄存器命名规则

r前缀:64位寄存器

e前缀:32位寄存器

后缀L:集群从的低八位

后缀H:寄存器的9~16位

既然这样,那就只讨论中间的名字,不考虑前后缀,看有哪些寄存器

寄存器分类(大小为16位)

通用寄存器

ax:accumulator register 累加寄存器

bx:base register 基址寄存器 存访问地址

cx:count register 计数寄存器

dx:data register 数据寄存器

索引寄存器

bp:base pointer 基址指针 用来定位栈底

sp:stack pointer 栈指针,栈寄存器的偏移量,用来定位栈顶

si:source index 变址寄存器 拷贝源字符串

di:destination index 目标变址寄存器 复制目标字符串

控制寄存器

ip:instruction pointer 只读的指令寄存器指针 不可拆分 记录下一条指令位置

flag:储存当前状态,详见寄存器详解

普通寄存器

r8~r15 可根据无\D\W\B后缀来分割为更小的寄存器,最大64位(8B)

ymm0~ymm15 存储双精度和单精度浮点数,最大256位(32B),能放4个双精度,8个单精度,一个ymm寄存器可以拆分成两个xmm

寄存器分类(大小为8位)

遵循前面提到的前后缀规则,16位寄存器可以分为两个8位寄存器:

ah、al

bh,bl

ch,cl

dh,dl

寄存器分类(大小为32位)

eax,ebx,ecx,edx

寄存器分类(大小为64位)

rax, rbx, rcx, rdx

常用指令

mov:move data 移动数据 movz,movs是0扩展和符号扩展指令,将较小的数从寄存器或内存转移到寄存器中

lea destination, source:load effective address 加载有效地址 是mov指令的变形

详见:

X86汇编指南

其他资料

寻址方式
反汇编分析
反汇编分析类和对象

指令翻译(仅供参考)

尝试把下面的指令翻译出来
在这里插入图片描述

lea rcx, [rbp+104h]     将内存中[rbp+104h](栈底地址+104h,h说明是16进制)的数据放入rcx寄存器
call                    通过构造函数Cat的函数指针07FF66A1F11B3h进行调用
mov eax,dword ptr [rax] 将rax寄存器的一个double word指针指向的内容移动到eax
mov dword ptr [c], eax  将eax的值移到内存单元c中一个double word指针的位置lea rcx,[c]             将内存单元c的数据取出并放入rcx中
call                    通过isAnimal的函数指针调用该函数mov ecx 4               将立即数4移入ecx寄存器
call                    调用new运算符
mov qword ptr [rbp+148h],rax 将rax的值移入[rbp+148h]的内存位置
cmp qword ptr [rbp+148h],0   检查[rbp+148h]的内存位置数是否为0
je                           相等则跳转到该地址:stack初始化地址+78h
mov rcx,qword ptr [rbp+148h] 把内存[rbp+148h]的数据移动到rcx中
call                         通过构造函数Cat的函数指针07FF66A1F11B3h进行调用
mov qword ptr [rbp+158h],rax 将rax的值移入[rbp+158h]的内存位置
jmp                          无条件跳转到stack初始化地址+83h

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/258843.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础数据结构----二叉树

二叉树的概念 1.二叉树的性质: 二叉树的每个节点最多有两个子节点,分别称为左孩子、右孩子,以他们为根的子树称为左子树、右子树。 二叉树的每层节点数以 2 的倍数递增,所以二叉树的第 i 层最多有 个节点。如果每层的节点数都…

一个不错的文章伪原创系统程序源码

一款文章伪原创系统程序源码免费分享,程序是站长原创的。 一共花了站长几天时间写的这个文章伪原创平台,程序无需数据库。 程序前端采用BootStrap框架搭建,后端采用PHP原生书写。 前端伪原创采用Ajax无刷新提交,Ajax转换到词库…

【CVE 复现】CVE-2022-0185 fsconfig之整数溢出

影响版本:Linux-v5.1~v5.16.2 测试版本:Linux-5.11.22,由于懒得搞环境,所以直接用的 bsauce 大佬提供的 测试环境 看看 patch: diff --git a/fs/fs_context.c b/fs/fs_context.c index b7e43a780a625b..24ce12f0db32…

打造专属小程序,乔拓云模板平台助力商家抢占先机

打造专属小程序,乔拓云模板平台助力商家抢占先机!该平台涵盖全行业小程序模板,一键复制即可上线。 想要快速创建高效实用的小程序,乔拓云小程序模板开发平台为您提供了解决方案!我们为您提供一系列精心设计的小程序模板…

零基础如何入门HarmonyOS开发?

HarmonyOS鸿蒙应用开发是当前非常热门的一个领域,许多人都想入门学习这个技术。但是,对于零基础的人来说,如何入门确实是一个问题。下面,我将从以下几个方面来介绍如何零基础入门HarmonyOS鸿蒙应用开发学习。 一、了解HarmonyOS鸿…

【ArcGIS Pro微课1000例】0053:基于SQL Server创建与启用地理数据库

之前的文章有讲述基于SQL Server创建企业级地理数据库,本文讲述在SQL Server中创建常规的关心数据库,然后在ArcGIS Pro中将其启用,转换为企业级地理数据库。 1. 在SQL Server中创建数据库** 打开SQL Server 2019,连接到数据库服务器。 展开数据库连接,在数据库上右键→新…

Windows 上安装nvm node版本管理工具 windows安装nvm 管理工具

Windows 上安装nvm node版本管理工具 windows安装nvm 管理工具 1、nvm2、安装2.1、下载 NVM 安装程序进行安装2.2、打开nvm的安装路径,运行终端测试是否安装成功2.3、配置环境变量,让nvm能在电脑全局使用2.3.1、nvm配置淘宝镜像2.3.2、nvm环境变量设置 1…

LeetCode124.二叉树中最大路径和

第一次只花了20分钟左右就完全靠自己把一道hard题做出来了。我这个方法还是非常简单非常容易理解的,虽然时间复杂度达到了O(n2)。以下是我的代码: class Solution {int max;public int maxPathSum(TreeNode root) {max Integer.MIN_VALUE;return dfs2(…

Bash脚本调用百度翻译API进行中文到英文的翻译

写一个bash脚本调用百度翻译API进行中文到英文的翻译,首先需要进行相关的申请。看百度给出的文档链接: 百度翻译API文档 需要先注册一个百度账号,然后申请APPID。脚本中会用到appid和key这两个值。按照文档给出的提示可以获得。如下是脚本: #…

人工智能原理复习--搜索策略(一)

文章目录 上一篇搜索概述一般图搜索盲目搜索下一篇 上一篇 人工智能原理复习–确定性推理 搜索概述 问题求解分为两大类:知识贫乏系统(依靠搜索技术解决)、知识丰富系统(依靠推理技术) 两大类搜索技术: …

2023.12.7 关于 MySQL 事务详解

目录 事务的四大特性 原子性 一致性 持久性 隔离性 事务并发执行 脏读 不可重复读 幻读 四个隔离级别 read uncommitted read committed repeatable read serializable 事务的四大特性 原子性 一个事务中的所有操作,要么全部完成,要么全部…

MIT线性代数笔记-第26讲-复习二

目录 26.对称矩阵及正定性打赏 26.对称矩阵及正定性 实对称矩阵的特征值均为实数,并且一定存在一组两两正交的特征向量 这对于单位矩阵显然成立 证明特征值均为实数: ​    设一个对称矩阵 A A A,对于 A x ⃗ λ x ⃗ A \vec{x} \lambda…