从 vc++ 调用存储在堆中的代码

2023-11-26

想象一下我正在做这样的事情:

void *p = malloc (1000);
*((char*)p) = some_opcode;
*((char*)p+1) = another_opcode; // for the sake of the example: the opcodes are ok

....
etc...

如何定义一个函数指针来调用 p,就好像它是一个函数一样? (我正在使用 VC++ 2008 Express)。

Thanks


评论空间不够。乔穆克是正确的。您不应该将代码填充到通过以下方式获得的内存中malloc or new。如果更改 Windows 分配的页面的页面属性,将会遇到问题。

这不是问题,因为使用 VirtualAlloc() 和相关的 WIn32 API 非常简单:调用虚拟分配()并设置flProtect to [PAGE_EXECUTE_READWRITE][2]

请注意,您可能应该进行三种分配,一个保护页(代码所需的页面),然后是另一个保护页。这将为您提供一点保护,避免出现不良代码。

还可以对生成的代码进行调用结构化异常处理.

接下来,Windows X86 ABI(调用约定)没有很好的文档记录(我知道,我已经看过)。有一些信息here, here, here了解事情如何工作的最好方法是查看编译器生成的代码。这很容易做到\FA开关(有四个)。

你可以找到64位的调用约定here.

此外,您仍然可以获得 Microsoft 的宏汇编器玛斯姆在这里。我建议在 MASM 中编写机器代码并查看其输出,然后让机器代码生成器执行类似的操作。

Intel's and AMD's处理器手册是很好的参考资料 - 如果您没有,请获取它们。

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

从 vc++ 调用存储在堆中的代码 的相关文章

随机推荐

  • Xcode 7:链接器命令再次失败,退出代码为 1(使用 -v 查看调用)

    我在 Xcode 7 的 iOS 模拟器上测试我的应用程序 但当我尝试在我的 iOS 设备 带有 iOS 9 的 iPhone 5S 中测试时 我今天 09 16 2015 更新了 xcode 7 和 iOS9 在此之前使用 iOS 8 4
  • 如何从主机外部(同一网络)连接到 docker 容器 [OSX 10.11]

    设置 计算机 A 这是 Docker 机器 默认 运行的地方 虚拟盒子 default 正在运行一个名为 Odoo 的容器 默认 是使用创建的Docker的安装过程 奥杜 是 创建使用Odoo的安装过程 计算机 B 这是同一局域网 LAN
  • 修改 CDO.Message 对象中附件的内容类型

    当我尝试使用 VBScript 将 MHTML 文件作为电子邮件附件添加到电子邮件中时 ContentMediaType被错误地设置为 message rfc822 RFC 822 据我了解 根据 Microsoft 的说法这是正确的 但根
  • 如何显示 NSDocument 目录中的所有图像

    首先 我从照片库中选择图像到 ALAsset 库 然后将图像存储在 ALAsset 库路径的文档目录中 我正在使用此代码将图像存储在 ALAsset 库的文档目录中 它工作完美 现在我想在表视图中显示存储在文档目录中的所有图像 我该怎么做
  • Python 从 tar.gz 导入库?

    我正在开发一个没有 root 访问权限的盒子 但是 有一个文件夹 share 可供每个人读取和写入 我想找到一种方法来放置 python 库 以便每个人都可以访问和使用它们 我发现我可以将 Egg 文件放在 share pythonLib
  • Swift 中哪些值类型支持写时复制?

    我读到了关于 Swift 中数组的写时复制实现here 与标准库中的所有可变大小集合一样 数组使用写时复制优化 阵列的多个副本共享同一存储 直到您修改其中一个副本 当发生这种情况时 被修改的阵列将用其自身唯一拥有的副本替换其存储 然后就地修
  • Android 中的 Intent 与 Content Provider

    我是android应用程序开发的新手 在研究基本的android组件时 我对意图和内容提供者感到困惑 因为两者都被用来将数据从一个应用程序 组件发送到另一个应用程序 组件 如果有意图 我们可以使用捆绑或附加功能发送数据 那么为什么我们要使用
  • 10 月 15 日 Windows 更新后 MVC 应用程序中断

    今天早上我醒来发现我的服务器上的 MVC 4 Web 应用程序已损坏 错误信息是 An exception of type System IO FileNotFoundException occurred in mscorlib dll b
  • 错误:mime-types-data 需要 Ruby 版本 >= 2.0

    我最近在 vmware fusion 中安装了干净的 ubuntu 14 04 虚拟机并更新了它 我正在尝试通过安装 mime tyes data sudo gem install mime types data v 3 2015 1120
  • 带 H:MM:SS 的精密计时器

    如何用 H MM SS 显示天文计时器 我读到默认显示 MM SS 和 H MM SS 我只找到了 MM SS 这是我的 MM SS 代码 带有开始和停止按钮 public class MainActivity extends AppCom
  • Docker-compose:应用程序容器无法连接到 Postgres

    使用 docker compose 我尝试从以下位置查看 Flask 应用程序manage py runserver与 postgres 图像连接 但出现以下错误 sqlalchemy exc OperationalError psycop
  • UserHostAddress 给出错误的 IP

    我收集了用户访问我的网站的 IP 地址的统计数据 我注意到只有两个 IP 地址 172 16 16 1 和 172 16 16 248 我用来确定 IP 地址的属性是 Request UserHostAddress IP地址信息丢失可能是什
  • 如何从 Vue.js 数组中删除项目

    我是 vue js 2 的新手 目前正在开发一个简单的事件应用程序 我已成功添加事件 但现在我想通过单击按钮来删除事件 HTML div class list group div class list group item h4 class
  • Python:无法在网页中使用selenium下载

    我的目的是从下载一个 zip 文件这是这个网页中的一个链接https www shareinvestor com prices price download html type price download all stocks bursa
  • QT4拖动窗口没有标题栏

    我正在开发的应用程序有一个自定义 UI 需要我从主窗口中删除标题栏 不幸的是 我不知道如何制作它 以便我可以在屏幕上移动应用程序 我删除标题栏的代码如下 MainWindow MainWindow QWidget parent QMainW
  • 在 Core Data 中存储照片和视频?

    我正在开发一个应用程序 可以让用户录制视频和照片 现在我想知道存储它们的最佳方式是什么 第一个想法当然是将其保存在用户的照片库中 就像他从相机应用程序记录照片一样 并使用对文件的引用 现在存在的问题是用户可以从 照片 应用程序访问和删除文件
  • iOS 6 - UIWebView loadHTMLString 无法正常工作

    如果有人遇到以下问题 请告诉我您是否能够找到解决方案 我花了几天时间试图找到解决方案 但到目前为止还没有成功 我正在使用 XCode 4 5 和 iOS 6 SDK Golden Master 基本上 我的应用程序读取 HTML 文件并将其
  • 如何在 Angular2 中使禁用的反应表单可编辑

    我使用下面的代码创建一个表单并使其只读 我是角度新手 createForm this comapnyIdentificationForm this fb group businessName Validators required adre
  • 如何在 SVG 中获取多个内容的 ScrollBars

    我想要一个包含四个 SVG 内容的容器 SVG 现在 这四个 SVG 内容的内容超出了容器 SVG 中分配给它们的区域的内容 因此我要求滚动条自动出现 以便用户可以通过滚动看到完整的 svg 内容 我尝试通过添加属性宽度和高度来建立新视口
  • 从 vc++ 调用存储在堆中的代码

    想象一下我正在做这样的事情 void p malloc 1000 char p some opcode char p 1 another opcode for the sake of the example the opcodes are