Visual C 内联汇编器中的立即调用/jmp

2023-12-19

当我尝试立即调用或跳转 VC++ 2010 内联汇编器时

_asm 
{
    call 00405B90h;
    jmp 00405B90h;
    jmp far 00405B90h;
}

它会产生一个错误

C2415: improper operand type

这可能吗?如何做到这一点?

到目前为止我有一个解决方法:

_asm 
{
    push 00405B90h; // This is a jump work around
    call 00405B90h;        
}

根据您要调用的内容,将 var 设置为地址并执行以下操作:

DWORD var = 0xDEADBEEF;
__asm jmp [var]

或者,我做什么:

__asm
{
    mov eax,ModuleBase
    add eax,RVA
    call eax ;obviously call can be jmp
}

您可以轻松地对其进行宏定义(添加寄存器参数可能是个好主意):

#define JMP_IMM(x) __asm mov eax,x \
                   __asm jmp eax

不幸的是,MASM 不支持对绝对地址的相对调用,并且其他汇编器(如 NASM)也无法对 COFF 目标文件执行此操作。因此,工具链的限制迫使您通过间接调用或 jmp 来使用这种效率较低的机器代码。

  • 如何在 MASM 中为近直接相对调用/jmp 编写绝对目标 https://stackoverflow.com/questions/50058523/how-to-write-an-absolute-target-for-a-near-direct-relative-call-jmp-in-masm

  • 直接调用user32.dll中的函数时出错 https://stackoverflow.com/questions/53461451/error-when-calling-function-in-user32-dll-directly

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

Visual C 内联汇编器中的立即调用/jmp 的相关文章

  • 是否有必要每个机器码只能映射到一个汇编代码?

    假设这两者本质上是相同的 push 1 and 0x1231 这表示每个汇编指令都映射到一个机器代码 但是否每个机器码只能映射到一个汇编代码呢 MIPS汇编语言有几个 伪指令 例如 move 在内部只是一个带有隐式 0 操作数的 add
  • 在汇编中,指令指定数据类型吗?

    我是汇编语言编程 x86 的初学者 以下说法是否正确 在汇编中 BYTE WORD DWORD 等数据类型分别表示 8 位 16 位和 32 位模式 而不仅仅是整数 它们本身没有意义 它们只是位模式 使用它们的指令赋予了它们意义 汇编 代码
  • 如何在 Visual C++ 中读取版本资源

    我在 C 项目的资源中有一个版本资源 其中包含版本号 版权和构建详细信息 有没有一种简单的方法可以在运行时访问它来填充我的帮助 关于对话框 因为我目前正在维护此信息的单独常量值 理想情况下 该解决方案应适用于 Windows CE mobi
  • 从挂钩的 exe 获取详细的故障转储

    我正在尝试查找我的程序与游戏挂钩的问题 这是 VC 基本上我启动该程序 然后使用 SDL 连接到它 当我从 VS2010 运行代码时 一切正常 但是当我尝试从命令提示符运行时 我的程序可以启动游戏 但之后游戏立即崩溃 我正在查看 Windo
  • 在汇编中初始化字符串数组

    我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数
  • x86 asm 的 NASM 语法中的括号是什么意思?

    给出以下代码 L1 db word 0 mov al L1 mov eax L1 括号里是什么意思 L1 代表 这个问题专门针对 NASM Intel 语法汇编的另一个主要风格是 MASM 风格 当不涉及寄存器时 括号的工作方式有所不同 S
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • std::to_string - 多个重载函数的实例与参数列表匹配

    counter is an int void SentryManager add std string name std shared ptr
  • 未对齐的内存访问

    我正在开发不支持未对齐内存访问的嵌入式设备 对于视频解码器 我必须处理 8x8 像素块中的像素 每个像素一个字节 该设备具有一些 SIMD 处理功能 使我能够并行处理 4 个字节 问题是 8x8 像素块不能保证从对齐的地址开始 并且函数需要
  • 如何将 4 位十六进制转换为 7 位 ASCII?

    作业是通过编写一个可以在 4 位十六进制和 7 位 ASCII 之间转换的子程序来学习汇编编程 起初我不知道 但经过一些研究后 我可以做出努力并绘制流程图并制作程序 但它并不完全正确 所以我请求您的指导来帮助我解决这个问题 实际的作业文本是
  • 为什么 gcc 会在显然不需要的时候生成 PLT?

    考虑这段代码 int foo int main foo while 1 int foo 在共享对象中实现 编译此代码gcc o main main c lfoo nostdlib m32 O2 e main no pic L shared给
  • JE/JNE 和 JZ/JNZ 之间的区别

    在 x86 汇编代码中 有JE and JNE完全一样JZ and JNZ JE and JZ只是完全相同的事物的不同名称 条件跳转时ZF 零 标志 等于 1 相似地 JNE and JNZ只是条件跳转的不同名称 什么时候ZF等于 0 Yo
  • 深入了解事物如何打印到屏幕上(cout、printf)以及我在教科书上似乎找不到的真正复杂内容的起源

    我一直想知道这个问题 但至今还没有找到答案 每当我们使用 cout 或 printf 时 它们到底是如何打印在屏幕上的 文本是如何显示出来的 这里可能是一个相当模糊的问题 无论你给我什么 我都会工作 那么基本上这些功能是如何制作的 是汇编吗
  • 汇编器堆栈对齐(或使用 PUSH 更好的未对齐示例)

    首先我了解 或者我认为我了解 堆栈未对齐的问题 但我知道 就像定义一样 将 16 位值推入 32 位宽的堆栈可能会导致堆栈未对齐 但我不明白的是 这是怎么发生的 因为PUSH and POP检查段描述符处的 D 标志 1 递增 递减 32
  • 帮助我改进更多 SSE2 代码

    我正在寻找一些帮助来改进 core2 cpu 上的双线性缩放 sse2 代码 在我的 Atom N270 和 i7 上 此代码比 mmx 代码快大约 2 倍 但在 core2 cpu 下它只等于 mmx 代码 代码如下 void Conve
  • 如何在 gdb 中给定地址处的汇编指令上中断?

    0x0000000000400448
  • 派生的DataGridView绘图问题。显示黑色区域

    后期编辑我将其标记为 C 问题以及 C 问题 因为该问题以两种语言和解决方案呈现if显示的很可能是 C 市场上的大多数 我一直在 net 2 0 具体来说是C 但无关紧要 下开发一个应用程序 该应用程序使用自定义的派生数据网格视图 此 da
  • 修改字符数组,修改部分向后显示

    我刚刚开始学习汇编 我正在尝试修改字符数组 这是我的汇编代码 data data byte Five 0 code Asm proc lea rax data mov dword ptr rax Four ret Asm endp end
  • ESP 和 EBP 寄存器是什么?

    我发现ESP寄存器是当前堆栈指针 EBP是当前堆栈帧的基指针 但是 我不理解这些定义 我刚刚开始学习如何在汇编程序中编码 What I understand is that ESP points towards the stack itse
  • NASM Assembly 16bit“操作码和操作数的组合无效”

    所以我正在尝试编写一个程序来创建一个文件并在其中创建我的名字 但我得到了 操作码和操作数的无效组合 这mov handle ax 我不知道为什么 我看见here https stackoverflow com questions 29569

随机推荐

  • 如何将日期范围选择器与ajax一起使用

    我正在使用日期范围选择器 javascript 库来选择用户的日期范围 date range daterangepicker arrows true dateFormat d M yy rangeSplitter to datepicker
  • Phonegap Windows Phone 7 使用 jQuery 动态 HTML 加载和跨域调用

    好吧 我搜索了很多 发现很多 Android 开发者都使用 Phonegap 有几个问题 如何使用 jQuery 将本地 HTML 文件加载到 Phonegap 中的 div 中 就像是 contentDiv load url functi
  • Openlayers v4.0.1 支持 Google 地图 Javascript API 吗?

    我想知道 Openlayers 的最新版本 v4 0 1 是否支持 Google 地图作为图块图层 我找不到任何关于此的文档 如果 Openlayers 不支持 Google 地图 有人可以告诉我是否有任何方法可以做到这一点 OpenLay
  • 如何在 F# 或任何函数式语言中柯里化第二个(或第三个、第四个……)参数?

    我刚刚开始使用 F 看看如何使用柯里化将第一个参数预加载到函数中 但是如何使用第二个 第三个或任何其他参数来做到这一点呢 命名参数会让这变得更容易吗 是否有任何其他函数式语言具有命名参数或其他方式使柯里化与参数顺序无关 通常你只使用 lam
  • jQuery ajax() URL 是必需的吗?

    the ajax函数的 http api jquery com jQuery ajax jQuery ajax url settings标题是 jQuery ajax url settings 文档说 URL 是必需的 为什么在示例中只提供
  • 如何清除图表 tkinter

    有了这段代码 我想制作动态图 我想让我的图每 60 秒清晰一次 但我不能让它与 cla 和 clf 一起工作 有什么问题吗 除了使用 cla 和 clf 之外 还有其他方法可以清除图形吗 import lib client paho mqt
  • 数组和对象中的尾随逗号是规范的一部分吗?

    尾随逗号是 JavaScript 中的标准吗 还是大多数浏览器 例如 Chrome 和 Firefox 都容忍它们 我以为它们是标准的 但 IE8 遇到一个就吐了 当然 IE 不支持某些东西并不意味着它不标准 这是我的意思的一个例子 在 b
  • 即使 png 文件位于资源文件夹中,NSImage 也会返回 nil

    我正在尝试使用 NSImage imageNamed 方法加载图像 但没有成功 我已将图像复制到项目文件夹 项目 gt 资源中 并使用以下命令添加到项目中 将文件添加到项目 NSImage image NSImage imageNamed
  • jquery定时改变item类

    是否可以根据某种类型的计时器更改项目类别或 ID 每隔 1500 毫秒 它会转到嘿 那里 1 然后 1500 毫秒后 嘿 那里 2 等等 我可以控制它经历多少个间隔 嘿 嘿 那里 1 嘿 那里 2 嘿 那里 3 回到开头 嘿那里 etc T
  • 用弹簧配置流口水。 xsd 错误

    我正在尝试使用 Drools 创建 spring roo 应用程序 但我在 applicationContext xml 中遇到了错误 Error 在这一行找到多个注释 无法找到模式命名空间 http drools org schema 的
  • 相机意图仅在某些设备上返回 null

    我正在使用相机捕获图像并将返回的位图设置为图像视图 但它在 OnePlus 设备上崩溃 我检查了一些 htc 设备 它运行良好 我检查了解决方案 他们说要检查请求代码 但我已经在这样做了 这里可能有什么问题 这是代码 imageView s
  • `modularity()` 的正确使用和解释

    In the igraph modularity部分有示例代码 如下所示 g lt graph full 5 du graph full 5 du graph full 5 g lt add edges g c 1 6 1 11 6 11
  • 使用 Splinter 发送密钥

    我想使用 Splinter 测试自动完成框 我需要将 向下 和 输入 键发送到浏览器 但我在执行此操作时遇到了困难 我目前正在找到一个输入框并成功在该框中输入 tes context browser find by xpath some x
  • 链接自注册的抽象工厂

    我一直在使用和测试一个基于此处描述的自注册抽象工厂 https stackoverflow com a 582456 https stackoverflow com a 582456 在我所有的测试用例中 它就像一个魅力 并提供了我想要的功
  • 如何在我自己的高阶组件 (HOC) 中使用 React Router 的 withRouter HOC?

    我有一个更高阶的组件 它使用location searchReact Router 提供的 prop 用来构造一个queryParams对象并将其作为 prop 传递给其包装的组件 function withQueryParams Wrap
  • 为什么这个简短的 php 脚本不发送电子邮件?

    我似乎无法让我的 php 脚本发送电子邮件 首先 我在php ini文件中设置了邮件功能设置 如下所示 我在 Outlook 上检查了我的电子邮件帐户设置 它不需要身份验证 端口为 25 加密连接类型为 自动 鉴于此 我相应地配置了我的 p
  • Xcode A+ 源代码控制符号

    我刚刚注意到 XCode 显示与源代码管理相关的 A 符号 这是什么意思 A 代表移动文件 重命名被视为移动 所有功劳都归功于用户2129800 他的答案在问题下的评论中
  • 将 WPF 应用程序重写到 Surface

    我正在开发一个 WPF 应用程序 我很好奇如果有一天我们想通过多点触控来控制它 需要什么才能将该应用程序重写为 Surface 应用程序 我们是否可以重用 WPF 应用程序的大部分内容并将其顺利转移到 Surface 或者 Surface
  • 验证 ASP.Net Core 中 IFormFile 的图像类型

    我有一个 ASP NET Core 应用程序 我需要验证上传的文件是图像 而不是具有图像扩展名的非图像文件 我发现的所有有意义的解决方案都使用 System Drawing Image 或 ASP NET Core 中不可用的类似类 您能建
  • Visual C 内联汇编器中的立即调用/jmp

    当我尝试立即调用或跳转 VC 2010 内联汇编器时 asm call 00405B90h jmp 00405B90h jmp far 00405B90h 它会产生一个错误 C2415 improper operand type 这可能吗