将CPU寄存器保存到GCC中的变量中

2023-12-15

我想获取 EAX/EBX/ESP/EIP 等中的值并将它们保存在 C 变量中。例如:

int cEax;
asm("mov cEax,%eax"); ...

你可以用这个

register int eax asm("eax");
register int eax asm("ebx");
register int eax asm("esp");
//...
int cEax = eax;
int cEbx = ebx;
int cEsp = esp;
//...

您还可以像使用任何其他变量一样在表达式中使用这些寄存器,或者直接使用该寄存器的值而不分配给另一个变量。

在没有内联汇编的情况下获取 eip 会更棘手,但在 gcc 中你可以使用__builtin_return_address or the label as values扩大。

void* getEIP()
{
    return __builtin_return_address(0);
}

void *currentInstruction = getEIP();
currentAddr: void *nextInstruction = &&currentAddr;

如果你想要内联汇编,你可以使用以下方式这一页

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

将CPU寄存器保存到GCC中的变量中 的相关文章

  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • std::map find 在 C++ 中不起作用[重复]

    这个问题在这里已经有答案了 我使用以下几行创建了一个哈希映射和一个迭代器 std map
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 如何获取枚举数作为常量?

    From 枚举中定义的项目总数 https stackoverflow com questions 856154 total number of items defined in an enum 我发现我可以使用以下方法获取枚举数 Enum
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 有关shared_ptr的竞态条件示例

    为什么没有竞争条件代码片段 https godbolt org z nEYPYqdqK below include
  • 如何将 dll 中包含的组件嵌入到 exe 中,以便它可以从内存运行?

    我正在尝试制作一个必须从内存运行的程序 通过Assembly Load bin 如上所述here http www codeproject com Articles 13897 Load an EXE File and Run It fro
  • 为什么 xcode IDE 认为 `friend` 是保留字

    我一直在开发一个个人项目 并在我创建的新类中包含以下代码 property readonly getter isFriend BOOL friend 它似乎没有任何问题 当我构建它时 它可以编译得很好 但是当我们在xcode IDE看起来像
  • 在 C++ 中,为什么 const 也可以工作时编译器选择非常量函数? [复制]

    这个问题在这里已经有答案了 例如 假设我有一堂课 class Foo public std string Name m maybe modified true return m name const std string Name cons
  • 如何在 C++11 中返回类成员向量

    我读了几篇关于如何从方法返回向量的文章 其中包括 c11 右值和移动语义混淆返回语句 https stackoverflow com questions 4986673 c11 rvalues and move semantics conf
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • 以编程方式阻止 Vista 桌面搜索 (WORDS) 对映射网络驱动器上的 pst 文件建立索引

    经过几天的多次尝试 我没有找到任何 100 的解决方案来解决这个问题 我的搜寻和调查范围 直接访问注册表 HKLM SOFTWARE Microsoft Windows Search CrawlScopeManager Windows Sy
  • 在 C 中运行 setuid 程序的正确方法

    我有一个权限为4750的进程 我的Linux系统中存在两个用户 root 用户和 appz 用户 该进程继承以 appz 用户身份运行的进程管理器的权限 我有两个基本惯例 void do root void int status statu
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • 获取线段上最接近另一个点的点[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想找到线段AB上最接近另一个点P的点 我的想法是 Get a1 and b1由直线公式y1 a1x b1 使用 A 点

随机推荐

  • Knockout.js 与 jquery ui datepicker 可以在除 IE 之外的任何地方工作

    我使用 knockout js 模板脚本创建了一个可以复制和删除的表单 小提琴可以找到here 我在 SE 的帮助下编辑了脚本 添加了 jquery ui 日期选择器 小提琴的简短版本可以在 此处 2 找到 到目前为止一切顺利 但在测试时我
  • 使用 GSON 将嵌套对象展平为目标对象

    最亲爱的Stackoverflowers 我想知道是否有人知道如何最好地解决这个问题 我正在与一个返回 json 对象的 api 进行通信 如下所示 field1 value1 field2 value2 details nested1 1
  • 如何在 Linux 上为 Aptana 设置内部浏览器

    我下载了 Aptana Studio Setup Linux zip 包 解压并运行 AptanaStudio 一开始很好 但报告了一个问题 无法创建此编辑器的嵌入式浏览器小部件 它不适用于您的操作系统 或者需要配置系统才能支持嵌入式浏览器
  • 是否可以从不同的布局初始化视图?

    我有一个Activity并与之相关layout 另外我还有另一个layout和一些Views 我想初始化一个变量 TextView 从我的Activity用一个View从那个独立的layout 我总是得到null public void o
  • 如何在 C# 应用程序中使用 Shell32?

    为了使 Shell32 正常工作 我应该在 C 应用程序中包含什么 Edit 我的应用程序无法识别 shell32 我应该包含哪些参考文献或库 我想做的是 Shell32 Shell shell new Shell32 Shell 我收到的
  • 全日历 slotMinutes 不起作用

    我想在我的日历中显示 15 分钟的 slotMinutes 但这不起作用 在这个小提琴上效果很好 document ready function var calendar calendar fullCalendar defaultView
  • Android - 无法获取某些联系人的电话号码

    我在提取联系人列表中某些人的电话号码时遇到问题 首先 我在列表视图中显示所有联系人 String projection new String ContactsContract Contacts ID ContactsContract Com
  • 如何在弹出通知时播放声音?

    我正在开发一个应用程序 用户可以使用两个开关按钮打开 关闭通知和通知声音 我创建了在状态栏上弹出的通知 我想在它们出现时播放默认声音 我编写了以下代码 但它似乎不起作用 关于如何让通知声音播放有什么想法吗 import android an
  • 连接两个 JInternalFrame 实例的 CubicCurve2D

    我一直在尝试找到一种方法 在 Swing 中 连接两个JInternalFrame与一个CubicCurve2D 也称为三次贝塞尔曲线 我想要实现的总体效果是一个类似于雅虎 管道 曲线应从一个内部框架的底部延伸到另一个内部框架的顶部 这里有
  • 如何在任何打开的窗口中获取鼠标下的文本

    我正在做一个C 语言的项目 我想制作一个类似于 Narcis 或 Easylingo 的词典 用户可以使用鼠标 只需在任何应用程序中将光标移动到单词上 然后程序就会检测到该单词并找到该特定单词的含义 我的问题是如何在 Microsoft O
  • 为什么 SetWindowsHookEx 必须与 Windows 消息队列一起使用

    我一直在尝试使用钩子进行一些操作 但我不明白为什么钩子必须与消息队列一起使用 hook SetWindowsHookEx WH KEYBOARD LL KeyboardProc NULL 0 MSG msg while GetMessage
  • 为什么c++标准库不起作用?

    我一直在尝试让我从学校服务器下载的程序在我的 Mac 上离线运行 我尝试按照教程更新 GCC 但由于某种原因 即使我使用了给定的命令 教程也不起作用 现在 当我编译时 我收到一条错误 指出未找到 我不明白 我已经更新了 Xcode 遵循了大
  • Android:画布层上的 UI 元素

    如何在画布上 顶部 设置一些 UI 元素 我有一个简单的触摸游戏 其图形放置在带有画布的自定义视图上 然而 由于我的全屏面板位于 setContentView 中 我无法添加任何 UI 项目 例如进度条或徽标 我希望整个画布层可见 一些对象
  • 让 Hibernate 忽略未映射的实例变量[重复]

    这个问题在这里已经有答案了 我认为 hibernate 仅考虑带有注释的实例变量 Column 但奇怪的是 今天当我添加一个变量 未映射到任何列 只是类中需要的变量 时 它试图将该变量作为列名包含在 select 语句中并引发错误 字段列表
  • 我如何告诉 jaxb / Maven 生成多个模式包?

    Example
  • 在没有目的地的情况下获取 Google 地图上 x 公里后的纬度经度?

    我正在创建一个Android应用程序需要在 X 公里后找到同一条路线上的坐标 我有两个坐标x1 y1 x2 y2在一条路上 现在 我的要求是找到坐标x3 y3大约 3 公里后 即坐标x2 y2不在之间x1 y1 x2 y2 在同一条路上 如
  • 从 one2many 字段创建记录时设置默认值 - odoo

    我想在从 one2many 字段创建记录时为多个字段设置默认值 因为该默认值将从父模型中获取 Odoo 模型结构 class purchase order models Model inherit purchase order cash f
  • Cloudera 5.4.2:使用 Flume 和 Twitter 流时 Avro 块大小无效或太大

    当我尝试 Cloudera 5 4 2 时出现了一个小问题 基于这篇文章 Apache Flume 获取 Twitter 数据http www tutorialspoint com apache flume fetching twitter
  • jQuery 未与 HTML 文件链接

    我正在学习编程 并遇到了一些本来应该非常简单的事情 但却让我沮丧了三天 我似乎无法让 jQuery 文件与我的 html 链接 这是我的 HTML div class heads div div div
  • 将CPU寄存器保存到GCC中的变量中

    我想获取 EAX EBX ESP EIP 等中的值并将它们保存在 C 变量中 例如 int cEax asm mov cEax eax 你可以用这个 register int eax asm eax register int eax asm