在调试时使用反汇编语言在什么情况下有用

2023-11-30

我有以下基本问题:

  • 何时我们应该在调试中涉及反汇编

  • 如何解释反汇编,例如下面每个段代表什么

00637CE3 8B 55 08             mov         edx,dword ptr [arItem]
00637CE6 52                   push        edx
00637CE7 6A 00                push        0
00637CE9 8B 45 EC             mov         eax,dword ptr [result]
00637CEC 50                   push        eax
00637CED E8 3E E3 FF FF       call        getRequiredFields (00636030)
00637CF2 83 C4 0C             add 

语言:C++

平台:Windows


估计编译器发出的代码的效率非常有用。

例如,如果您使用std::vector::operator[]在没有反汇编的循环中,很难猜测每次调用operator[]事实上需要两次内存访问,但使用迭代器则需要一次内存访问。

在你的例子中:

mov         edx,dword ptr [arItem] // value stored at address "arItem" is loaded onto the register
push        edx // that register is pushes into stack
push        0 // zero is pushed into stack
mov         eax,dword ptr [result] // value stored at "result" address us loaded onto the register
push        eax // that register is pushed into stack
call        getRequiredFields (00636030) // getRequiredFields function is called

这是调用函数的典型顺序 - 参数被推入堆栈,然后控制权转移到该函数代码(call操作说明)。

在参与有关“编译后如何工作”的争论时,使用反汇编也非常有用 - 例如caf点在他对这个问题的回答.

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

在调试时使用反汇编语言在什么情况下有用 的相关文章

  • 与 MinGW 的静态和动态/共享链接

    我想从一个简单的链接用法开始来解释我的问题 假设有一个图书馆z它可以编译为共享库 libz dll D libs z shared libz dll 或静态库 libz a D libs z static libz a 让我想要链接它 然后
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 如何检查 Flutter 应用程序是否正在调试中运行?

    我正在寻找一种在应用程序处于调试模式时在 Flutter 中执行代码的方法 在 Flutter 中这可能吗 我似乎无法在文档中的任何地方找到它 像这样的东西 If app inDebugMode print Print only in de
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 注入包含接口的所有已注册实现的 Enumerable

    给出以下接口 public interface IMyProcessor void Process 我希望能够注册多个实现 并让我的 DI 容器将它们的可枚举注入到这样的类中 public class MyProcessorLibrary
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 异步/等待 - 是*并发*吗?

    我一直在考虑 C 5 中新的异步内容 并且出现了一个特殊问题 据我了解 await关键字是一个简洁的编译器技巧 语法糖来实现连续传递 http en wikipedia org wiki Continuation passing style
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que

随机推荐

  • 如何使底部堆叠上下文中的元素保留在另一个较高堆叠上下文的前面? [复制]

    这个问题在这里已经有答案了 如何使堆叠顺序底部的堆叠上下文中包含的元素出现在堆叠顺序较高的不同堆叠上下文中的另一个元素的前面 e g HTML div class Parent 1 div div class Parent 2 div cl
  • DebugDiag 能否像 Visual Studio 2013 一样生成具有“包含大小”的报告

    Visual Studio 2013 可以显示包含大小的列 其中包括子对象的大小 http blogs msdn com b visualstudioalm archive 2013 10 16 net memory analysis en
  • 使用 Robolectric 和 Dagger 进行 Android 测试

    我正在尝试使用 Dagger 编写 Android 应用程序 为了遵循 TDD 方法 我开始为我的第一个活动编写测试 为了编写测试 我使用 Robolectric 并尝试使用 Mockito 让它在不同的场景中工作 短篇故事 我有一个 An
  • 用多个不同的替换来替换多个不同的出现 - Swift 4.2

    试图找到执行此操作的确切格式 我有一个文本字段用户输入 我想获取该输入并查找多个出现的情况 并将每个唯一出现的情况替换为不同的分别具有独特的性格 i e 代替 example with 1328571 这是我目前拥有的代码 目前只是为单个替
  • Git 分叉实际上是 Git 克隆吗?

    我不断听到人们说他们在 Git 中 fork 代码 Git fork 听起来很像 Git clone 加上一些 无意义的 放弃未来合并的心理意愿 Git 里没有 fork 命令吧 GitHub 通过将信件钉在叉子上 使叉子变得更加真实 也就
  • 未获取格式化形式的 Xml 部分?

    我正在尝试创建一个格式完美的 xml 文件 它包括稍后被替换的元素 输出的格式不完美 xEvent包含一个完整的 xml 模板表单 如字符串 这是最相关的代码 string c2 gt string c
  • 无法在 powershell 中转义管道字符 (|)

    我试图找到文件每一行中管道 字符的数量 我正在使用以下命令来执行此操作 gc test txt select string all matches measure select count 它不包括管道符号 我也尝试过 谁能告诉我如何在 p
  • Facebook 如何解析 blogspot.com 开放图属性

    blogspot com 的某些页面不包含开放图标签 但 Facebook 对象调试器仍然可以正确解析开放图属性 它如何获取开放图信息 例如 我在中没有看到任何开放图元标记http sushiwens blogspot com 源代码 但
  • 导航栏后退按钮重叠

    I am stuck in navigationcontroller Here are screenshots 1 from this page i am initializing paypal sdk I am presenting pa
  • Play框架:包javax.inject不存在

    在我的 Play 2 0 Framework Java 项目中 以下行在 Eclipse 中和 sbt 编译步骤期间都会产生错误 import javax inject 我已经添加了javax inject对我的 build sbt 文件的
  • iOS 8 当键盘出现时将 UIView 向上移动 |问题

    我有一个UIView with a UITextField放置在屏幕底部 当键盘出现时它将向上移动 在 iOS 8 之前我一直遵循以下方法 似乎效果很好 When Keyboard appears void keyboardWillShow
  • 从 64 位代码访问 32 位 DLL

    我需要迁移 32 位 dll 以便在 64 位 C 以及 C 应用程序中使用它 该dll是用非托管delphi代码编写的 我无法重新编译 dll 唯一的方法是使用进程间通信 IPC 我搜索了很长时间 但没有找到太多相关信息 我找到的最好的指
  • OCaml“else”语法错误

    我是第一次学习 OCaml 我遇到了一个非常模糊的 语法错误 的麻烦 定义函数时generateboxes像这样 let rec generateboxes a b if a add1 b then force newline print
  • 两条弧线之间的交点? (弧 = 一对角之间的距离)

    我正在尝试找到一种方法来计算两条弧之间的交点 我需要用它来确定圆弧在视觉上有多少在右半边 有多少在左半边 我考虑创建右半部分的弧 并将其与实际弧相交 但我花了很多时间来解决这个问题 所以我想在这里问 以前肯定有人做过 编辑 很抱歉 当我在处
  • 如何在 C++ 中从二进制文件中删除部分

    我想使用 C 从二进制文件中删除部分 二进制文件大约有 5 10 MB 左右 我想做的事 搜索 ANSI 字符串 something 一旦找到这个字符串 我想删除接下来的n个字节 例如下面的1MB数据 我想删除这些字符 而不是用 NULL
  • Linq to XML(Base64 编码)

    我必须将 PDF 转换为 Base64 编码并将其写入 XML 文件中的元素 我已经得到了 Base64 编码的字符串 很长 很大 但我工作的规范如下 选择此选项是为了确保 XML 文件可以在没有任何潜在风险的情况下显示和验证 由于处理原始
  • 在 Gnome 或 KDE 中以编程方式在桌面上移动应用程序窗口

    我想使用 C 程序在桌面上重新定位应用程序窗口 我应该如何去做 我需要针对这两种情况的解决方案 当我拥有想要移动的应用程序的源时 通过编写外部程序来移动其他应用程序的窗口 外部 Bash 脚本 xdotool search onlyvisi
  • 如何使用c#使用Youtube api登录程序?

    有this文档 可用的 所以我用了 YouTubeRequestSettings settings new YouTubeRequestSettings Appname devkey textBox1 Text textBox2 Text
  • 使用 mkmap 加载地图时显示标题

    我可以在 iphone 应用程序项目中显示地图 并将图钉放置在我想要的位置 但我希望在视图加载时显示标题和副标题 这是我正在使用的代码 我以为放入 mapView selectAnnotation 注释动画 是 会起作用 但事实并非如此 有
  • 在调试时使用反汇编语言在什么情况下有用

    我有以下基本问题 何时我们应该在调试中涉及反汇编 如何解释反汇编 例如下面每个段代表什么 00637CE3 8B 55 08 mov edx dword ptr arItem 00637CE6 52 push edx 00637CE7 6A