如何从windbg中的函数获取返回值?

2023-12-21

我正在尝试调试一些 win32API,例如返回句柄的 Createthread。 如何获取windbg的返回值?

我做了一些研究,发现返回值通常存储在 EAx 寄存器中。

如果我在 CreateThread 上放置断点,那么我可以单步执行 Createthread 的组装,最终我将点击 ret 语句,这意味着 Createthread 正在返回。

此时我应该检查 EAX 寄存器的值来获取 HANDLE 值还是其他方法?


没有其他方法与测试 eax 基本相同。

如果你想变得迂腐:

eax 在 32 位上运行良好。

rax 是 64 位应用程序所需要的

ret0 是 itanium 使用的

$retreg 是一个伪寄存器,您可以使用它在所有情况下都能正常运行。

e.g.



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

如何从windbg中的函数获取返回值? 的相关文章

  • 一条指令可以同时处于两种寻址模式吗?

    我在书中读到了以下内容从头开始编程 处理器有多种不同的访问数据的方式 称为 寻址模式 最简单的模式是立即模式 其中 要访问的数据嵌入在指令本身中 例如 如果我们想将寄存器初始化为 0 而不是给出 计算机要从中读取 0 的地址 我们将指定立即
  • C++ 中的 CPUID 实现

    我想知道这里是否有人有一些可以从任何托管 net 语言引用的 C CPUID 实现的好示例 另外 如果情况并非如此 我是否应该注意 X86 和 X64 之间的某些实现差异 我想使用 CPUID 来获取运行我的软件的机器上的信息 崩溃报告等
  • 这段汇编语言代码是什么意思?

    我是一名学生 刚刚开始学习汇编语言 为了更好地理解它 我只是用 C 写了一个简短的代码并将其转换为汇编语言 奇怪的是我有点听不懂 代码是 include
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 取消的分支与常规分支有何不同?

    特别是对于 SPARC Assembly 取消的分支与常规分支有何不同 我一直认为 当我需要填充分支指令的 nop 延迟槽时 需要取消分支指令 但是 我认为我在这一部分上是不正确的 因为您可以在不取消分支的情况下填充 nop 如果不采用分支
  • 尝试使用 x86 程序集 GNU GAS 在数组索引处赋值时出现错误

    我在用x86GNU 与 GCC 的程序集 并尝试实现相当于以下内容的程序集c c int x 10 x 0 5 但是 当我尝试运行 使用命令 a out 我的汇编代码如下 第一次编译后gcc filename s 错误Segmentatio
  • 近调用/跳转表并不总是在引导加载程序中工作

    一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
  • 68HC11计算sin(x)的汇编代码

    68HC11 使用泰勒级数或查找表计算正弦值的汇编代码是什么 显示值只能是整数 查找表如何工作 在这种情况下 如何使用它来实现泰勒级数 http en wikipedia org wiki Taylor series 如果您正在寻找浮点解决
  • 如何知道寄存器是否是“通用寄存器”?

    我试图了解寄存器必须具备什么标准才能被称为 通用寄存器 我相信通用寄存器是一个可以用于任何用途的寄存器 用于计算 将数据移入 移出等 并且是一个没有特殊用途的寄存器 现在我读到了ESP寄存器是通用寄存器 我猜是ESP寄存器可以用于任何事情
  • 从 NASM 调用 C 函数 _printf 会导致分段错误

    我一直在尝试使用 NASM 在 Mac OS 和 Windows 上学习 64 位汇编 我的代码是 extern printf section data msg db Hello World 10 0 section text global
  • ARMv8 A64 汇编中立即值的范围

    我的理解是 ARMv8 A64 汇编中的立即参数可以是 12 位长 如果是这样的话 为什么这行汇编代码是 AND X12 X10 0xFEF 产生此错误 使用 gcc 编译时 Error immediate out of range at
  • 如何在 Debian 上编译 DOS 程序?

    在我的汇编语言课程中 我们使用 DPMI 编写 DOS 程序 不幸的是 我无法一直使用 32 位 Windows 机器 我在我使用的几乎每台计算机上都安装了 Debian 虚拟机 我已经安装了 DOSBox 和 DOSEMU 有什么办法可以
  • 如何使用批处理脚本调用的curl 获取http post 请求的响应代码?

    我正在努力为从我们的工具之一发送 http post 请求提供支持 该工具基本上通过 http 请求执行作业 实现此目的的方法是该工具使用多个参数调用 RunScript bat 该脚本解析这些参数并在验证后发出curl post 请求 P
  • MikeOS 引导加载程序中的堆栈段

    我不明白这段代码 mov ax 07C0h Set up 4K of stack space above buffer add ax 544 8k buffer 512 paragraphs 32 paragraphs loader cli
  • AVX-512 指令编码 - {er} 含义

    在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 什么可以解释托管堆上超过 5,000,000 个 System.WeakReference 实例?

    我一直在针对生产 ASP NET Web 应用程序运行负载测试 并且看到在堆上创建了大量 System WeakReference 在大约 15 分钟内 负载管理堆内存已飙升至大约 3GB 并且我有大约 5 000 000 个对 Syste
  • 为什么在展开的 ADD 循环内重新初始化寄存器会使其运行速度更快,即使循环内有更多指令?

    我有以下代码 include
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 为什么我的 ASP.NET 项目不在启动项目中,却在开发服务器上运行?

    我有一个 Visual Studio 2008 解决方案 其中包括一个 c 中的 asp net 托管远程项目 该解决方案还包含其他 C 项目和 C 项目 在调试我的c 客户端和asp net服务器之间的交互时 调试效果很棒 我实际上可以进
  • 如何使用 JSDoc 在 javascript 中转换 TypeScript 类型

    当使用 TypeScript 检查 JavaScript 代码时 如何转换为与推断不同的类型 打字稿有
  • Java中的listFiles()无法获取所有文件

    我写了这个函数 看起来不错 但是如果当前目录中有多个文件夹并且没有文件 它就会失败 它仅进入第一个文件夹并在那里工作并忽略其他文件夹 我该如何修复这个错误 public static void getAllFiles File folder
  • 归纳命题在 Coq 中如何运作?

    我正在阅读软件基础中的 IndProp 和 Adam Chlipala 的第 4 章书 但我在理解归纳命题时遇到了困难 为了运行示例 让我们使用 Inductive ev nat gt Prop ev 0 ev 0 ev SS forall
  • 在 iPhone 上保存数据的最佳方法

    我正在编写一个 iPhone 应用程序 需要保存应用程序的状态 5K 左右 我主要担心的是数据在升级过程中持续存在 我使用的一些应用程序显然犯了这个错误 但我宁愿不这样做 要保存状态 NSUserDefaults 是最佳选择 我相信大多数
  • android:如何制作三角形布局

    我想为谷歌地图制作自定义信息窗口 我可以做到 但我无法制作三角形波纹管布局 我可以在那里添加图像 但布局在外线上有阴影 有人建议我该怎么做 如何制作红色区域内的部分 正如你所看到的 外部布局有阴影 您可以使用材质组件库来创建自定义shape
  • 具有 Pod 依赖项的 XCFramework

    我们的目标是创建一个隐藏我们内部代码的框架并向我们的客户提供SDK 我们想到创建满足我们要求的XCFramework 互联网上也有人建议采用伞形框架 但大多数建议避免这种方法 我们的框架依赖于我们通过 Pod 使用的一些第三方库 问题 XC
  • 应用程序应如何使用 ForegroundLockTimeout 注册表值?

    如果一个应用程序调用并激活另一个应用程序 则可能会出现被调用的应用程序未进入前台的问题 One 解决方法 http social msdn microsoft com Forums en US 20ef51e5 528f 4f0a 9bdb
  • 错误:“ModalBottomSheetRoute”是从两者导入的

    错误 ModalBottomSheetRoute 是从 package flutter src material bottom sheet dart 和 package modal bottom sheet src bottom sheet
  • 如何在 jQuery 中转义单引号? [复制]

    这个问题在这里已经有答案了 我正在尝试使用转义函数来转义单引号 var tagDesc Workers Compensation tagDesc escape tagDesc tagDesc tag css display none 转义函
  • PHP DataMapper 模式:我的类需要 PDO 实例,我想将其包装在 Db 类中

    这就是我所拥有的 class Entry public id public name public seoName public timeCreated public function someFunction class EntryMap
  • 如何从现有数据帧中创建数据帧中的上一列和下一列?

    所以 假设我有一个这样的数据框 df pd DataFrame person A A B B A datetime 2018 02 26 10 49 32 2018 02 26 10 58 03 2018 02 26 10 51 10 20
  • 如何粘贴到终端?

    我复制了一个网址 例如git gitorious org openhatch oh mainline git 我想使用键盘快捷键将其粘贴到终端中 Please不要说 右键单击并粘贴 Gnome terminal defaults to Co
  • .NET 不在 PATH 中搜索我的 C# DLL

    我有一个 C dll 例如 dll1 它被另一个 C dll 例如 dll2 引用 dll1 的路径在环境变量 PATH 中指定 当我尝试编译 dll2 时 dll2 报告错误 无法找到程序集 dll1 我不知道如何才能实现这一点 我认为
  • 如何让 WCF 与此 Web 服务对话?

    这是后续的这个问题 https stackoverflow com questions 1953132 whats the problem with this web service method 按照建议作者 Benjamin 在这里 h
  • Cygwin 和 PHPUnit:无法打开输入文件:/cygdrive/c/xampp/php/phpunit

    有没有办法从 Cygwin 运行 PHPUnit 每次我运行 PHPUnit 时都会收到此错误 Could not open input file cygdrive c xampp php phpunit 我正在尝试在我的 Zend Fra
  • Silverlight 4 获取当前用户

    我已经看到这个关于 Silverlight 2 的问题 但我还没有看到任何关于 Silverlight 4 的问题 有没有办法让当前用户在 Silverlight 4 0 中运行应用程序 我想我记得看到过这是 4 0 的功能之一 但我找不到
  • Scala 相当于 java.util.Scanner

    我非常熟悉使用java util Scanner with next hasNext nextInt nextLine 等来解析输入 我还应该在 Scala 中使用其他东西吗 这些数据不是按照语法构建的 而是按照语法构建的 它比那更临时 例
  • AsciiDoc 在列表块内添加粗体文本

    有一些 AsciiDoc 有一个类似的块 this is a test with some formatted tabbed text in it blah 我希望文本显示为 this is a test with some formatt
  • 如何从windbg中的函数获取返回值?

    我正在尝试调试一些 win32API 例如返回句柄的 Createthread 如何获取windbg的返回值 我做了一些研究 发现返回值通常存储在 EAx 寄存器中 如果我在 CreateThread 上放置断点 那么我可以单步执行 Cre