探讨STOS指令

2023-11-10

转载在http://hi.baidu.com/darks00n/blog/item/4c019ec42ad0cdcad00060b1.html

下面是一段win32 console程序(Debug版)的反汇编代码,很程式化的东西。本文不讨论这段码的具体作用,而是来学习下stos指令。

stos((store into String),意思是把eax的内容拷贝到目的地址。

用法:stos dst,dst是一个目的地址,例如:stos dword ptr es:[edi]。dword ptr前缀告诉stos,一次拷贝双字(32个字节)的数据到目的地址。为什么一次非要拷贝双字呢?这和eax寄存器有关,到底神马关系,慢慢道来。。

执行stos之前必须往eax(32为寄存器)放入要拷贝的数据。上图中,eax的内容是cccccccc,不用说都明白int3中断。

这段代码是初始化堆栈和分配局部变量用的,往分配好的局部变量空间放入int3中断的原因是:防止该空间里的东东被意外执行。用OD看下堆栈,是否如此?


很直接滴看到,从ebp-40往下40个的空间全部被cc覆盖。

有个疑点,循环拷贝的时候是从起始地址(ebp-40)往栈底方向拷贝的,难不成stos知道我们分配的局部变量空间在ebp-40之下?非也,机器还没这么聪明。到底往上(低址)还是往下(高址)由标志寄存器的D位决定,注意dst只是一个起始地址。本例中是往下拷贝,我们来瞧瞧D位的值。

是不是意味着把D位置为1就往上(低址)拷贝呢?光说不练空把式,来试验下!

如果D位不为0,使用CLD指令清除方向标志(置0),下次见到别说不认识哦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

探讨STOS指令 的相关文章

  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 在 String.Format 中插入格式化字符?

    我用谷歌搜索了这个 但 VB Net 2008 似乎不允许在 String Format 中插入格式化字符 例如 t r n BAD MessageBox Show String Format 0 tab 1 Foo Bar BAD Mes
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • HTML学习(二)HTML基础

    以这个为例 h1 我的第一个标题 h1 p 我的第一个段落 p DOCTYPE 前用来申明这是一个html 这里的html不区分大小写 HTML标题 HTML 标题 Heading 是通过 h1 h6 标签来定义的 h1 1级标题 h1 H
  • R语言优雅地修改列名称

    R语言优雅地修改列名称 在R语言中 修改数据框 DataFrame 或矩阵 Matrix 的列名称是一项常见的任务 通过优雅地修改列名称 可以提高代码的可读性和可维护性 在本文中 我将介绍几种优雅的方法来修改列名称 并提供相应的源代码示例
  • GPU计算

    文章目录 GPU计算 1 GPU和CPU的区别 2 GPU的主要参数解读 3 如何在pytorch中使用GPU 4 市面上主流GPU的选择 GPU计算 1 GPU和CPU的区别 设计目标不同 CPU基于低延时 GPU基于高吞吐 CPU 处理
  • 95-34-025-Context-AbstractChannelHandlerContext

    文章目录 1 概述 2 继承体系 3 类签名 4 关键字段 5 构造方法 6 ChannelRead事件 6 1 findContextInbound 7 invokeHandler 1 概述 2 继承体系
  • tensorrt转换模型进行了哪些操作

    对于网络layer graph进行的操作 消除输出未使用的层 消除相当于无操作的操作 卷积 偏置和ReLU运算的融合 具有足够相似参数和相同源张量的运算聚合 例如 GoogleNet v5的初始模块中的1x1卷积 inception结构中同
  • DW9718AF.c

    Copyright C 2015 MediaTek Inc This program is free software you can redistribute it and or modify it under the terms of
  • ERP系统总体解决方案 附下载地址

    企业资源计划即 ERP Enterprise Resource Planning 由美国 Gartner Group 公司于1990年提出 企业资源计划是 MRP II 企业制造资源计划 下一代的制造业系统和资源计划软件 除了MRP II
  • 大数据学习框架及指南

    Hadoop生态圈 一 采集 数据从哪里来 主要包括flume等 一 存储 海量的数据怎样有效的存储 主要包括hdfs Kafka 二 计算 海量的数据怎样快速计算 主要包括MapReduce Spark storm等 三 查询 海量数据怎
  • 数据结构与算法笔记2(线性表)

    1 线性表 1 1线性表是一种逻辑关系 见绪论 1 2定义 是具有相同类型的n个元素的有限序列 其中n为表长 n 0时为空表 关键词 相同类型 一般处理的数据元素都是相同类型 比如一个人那么都是人 而不会把人与车放在一起 关键词 有限序列
  • Java泛型知识点整理

    Java泛型知识点整理 Java泛型 泛型提供了编译时类型安全检测机制 该机制允许程序员在编译时检测到非法的类型 泛型的本质是参数化类型 也就是说所操作的数据类型被指定为一个参数 比如我们要写一个排序方法 能够对整型数组 字符串数组甚至其他
  • ConcurrentHashMap为什么是线程安全的?

    1 ConcurrentHashMap的原理和结构 我们都知道Hash表的结构是数组加链表 就是一个数组中 每一个元素都是一个链表 有时候也把会形象的把数组中的每个元素称为一个 桶 在插入元素的时候 首先通过对传入的键 key 进行一个哈希
  • MapReduce的Job提交流程

    编写一个简单的WordCount程序 Mapper import org apache hadoop io LongWritable import org apache hadoop io Text import org apache ha
  • Tip of the Week #49: Argument-Dependent Lookup

    Tip of the Week 49 Argument Dependent Lookup Originally posted as totw 49 on 2013 07 14 whatever disappearing trail of i
  • 深度学习技术在自动驾驶中的应用与挑战

    导读 深度学习技术经过近几年井喷式的发展 在很多领域都得到了广泛的应用 在自动驾驶系统中 深度学习技术也起到了至关重要的作用 同时也面临着非常多的挑战 我们一直在探索 在一个安全 稳定的自动驾驶产品中 深度学习技术应该有着怎样的作用边界 又
  • Unable to load configuration的解决方法

    最近在学Struts2 5 5 因为喜欢用最新的 并且之前没有学习过的经验 就按照一个网上的博客跟着做一个小实例 里面说直接用 Struts2 5 5中自带例子的struts xml文件 结果我就用了 然后写了一个小程序就一直报 Unabl
  • Java中的对象是什么?

    Java是一种面向对象的编程语言 它将世界视为具有属性和行为的对象的集合 Java的面向对象版本非常简单 它是该语言几乎所有内容的基础 因为它对Java非常重要 所以我将对幕后内容进行一些解释 以帮助任何不熟悉Java的人 遗产 通常 所有
  • 奇安信笔试编程题完整解析附代码

    昨天晚上奇安信笔试 两道编程题做的都不好 有紧张的元素 也有自己实力不够硬的问题 总之把两道编程题又做了一遍 思路屡清楚 下次继续努力 其实两道题非常非常简单 如果放在高中数学 基本就是送分题了 但是最近疫情期间 在家都躺退化了 算了 开搞
  • Android性能优化大法——内存优化

    作者 layz4android 内存 是Android应用的生命线 一旦在内存上出现问题 轻者内存泄漏 重者直接crash 因此一个应用保持健壮 内存这块的工作是持久战 而且从写代码这块就需要注意合理性 所以想要了解内存优化如何去做 要先从
  • jqury ajax 提交from conflict,JQuery中使用ajax提交表单遇到的问题

    今天在做维护时 遇到一段JQuery旧代码 看得很纠结 大致结构如下 html代码 javascript代码 mySubmit click function doSubmit 提交 function doSubmit myForm subm
  • 探讨STOS指令

    转载在http hi baidu com darks00n blog item 4c019ec42ad0cdcad00060b1 html 下面是一段win32 console程序 Debug版 的反汇编代码 很程式化的东西 本文不讨论这段