将数据附加到 exe

2024-02-28

这个问题是我之前问题的答案之一的延伸:如何在exe中保存用户注册... (C#) https://stackoverflow.com/questions/5792793/how-to-save-user-registration-in-the-exe-c/5792913#5792913.

这个想法本身对我来说仍然很新,但似乎很有道理。我第一次尝试简单地将字符串附加到不同应用程序内部的 exe 中,但没有成功。然后变得聪明一点并尝试附加字节。还是没有运气。

我找到了有关 Windows 可移植可执行文件的各种文档:

http://en.wikipedia.org/wiki/Portable_Executable http://en.wikipedia.org/wiki/Portable_Executable

http://msdn.microsoft.com/en-us/magazine/bb985997.aspx http://msdn.microsoft.com/en-us/magazine/bb985997.aspx

http://msdn.microsoft.com/en-us/windows/hardware/gg463125 http://msdn.microsoft.com/en-us/windows/hardware/gg463125

坦白说,我了解的太少,它们对我来说没有多大用处。更有用的是,我找到了一个delphi教程,它描述了向可执行文件添加“有效负载”的想法。它接着说,要做到这一点,你需要让 exe 知道,并且能够跟踪你把它放在哪里......或者类似的东西。除了我可以从代码本身猜测之外,我对delphi一无所知。

最有用的只是如何在可执行文件中添加和检索一小段信息的示例或链接。我想要在作为 php 脚本运行的 Linux 服务器上的 C# 表单应用程序上执行此操作。我认为接受信息作为参数的独立 C++ 应用程序应该能够实现这一目的。

我也对其他想法持开放态度。

谢谢。


是的,您将数据附加到定义的 PE 映像的末尾/末尾。如果您不想处理 PE 标头,您可以进行简单的串联。

例如,“echo abcd >> myprogram.exe”将起作用,导致“abcd”附加到“myprogram.exe”的末尾。 Myprogram.exe 可以正常运行。然后,您只需要编写一种方法来查找附加数据(例如,遍历标头以通过查找最后一部分的末尾来查找定义图像的末尾,或者在 EXE 中的某个位置存储静态偏移量,以便稍后读取)。例如,您可以将保存数据的偏移量存储在文件的最后 4 个字节中。那么你总是知道静态偏移位于 EOF-4。

或者,如果您希望在进程加载时将附加数据加载到虚拟内存中,您实际上可以扩展 PE 映像的最后一部分并将数据放在那里。

注意最后一部分的文件对齐,您需要扩展到下一个文件对齐(通常为 0x200 或 0x1000),然后添加您的内容。

作为见过一些奇怪的 PE 的可执行压缩器的作者,我要说的是,没有固定的规则表明节表中定义的最后一个节是映像中的最后一个节(它们可能是无序的)。也就是说,它们可能会出现故障。然而,它们在 99% 的情况下都是有序的,除非由某些奇怪的链接器创建或使用某些外部实用程序进行修改。

我的打包机(PE紧凑型 https://bitsum.com/pecompact/)对“覆盖/额外数据模拟”BTW 提供测试版支持 - 这意味着它实际上可以与 EXE 一起压缩末尾的数据,然后在对 EXE 文件执行 I/O 时在内存中模拟其未压缩的形式。或者,它可以将额外数据/覆盖保留在文件外部并压缩其余部分,但调整读取和写入,以便物理偏移量不会改变。这是必要的,因为很多安装程序和 SFX 存档实际上通过静态偏移引用附加数据,而不是通过遍历 PE 标头在运行时正确计算其位置。

David Hall 的链接的作用比您需要做的多一点,除非您想保留签名。该方法确实允许保存/使用数字签名,将数据插入文件末尾的扩展证书区域。

如果您不想,则根本不需要处理标头,并且不关心保留代码签名!

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

将数据附加到 exe 的相关文章

  • c++ 如何运行内容存储在字符数组中的.exe文件?

    我正在制作一个特定的程序 我只是想知道我是否可以这样做 运行一个文件 其内容存储在 WINDOWS 上的字符数组中 这是读取可执行文件并将其存储在字符数组中的代码 filetoopen open C blahlbah exe ios bin
  • 将命令行参数传递给 WiX 自定义操作

    我们通过 Windows 安装程序 msi 安装了一个桌面应用程序 并且希望添加一个自定义操作 以便在通过后重新启动 exeLAUNCH APP 1 to the cmd 所以我有一个 vbs 脚本来启动一个bat文件来启动安装msi 主要
  • 无法通过c#.net下载exe文件

    我设计了一个网站 当我单击按钮时 应该从我的计算机的特定路径下载 EXE 文件 但它不是下载 exe 文件 而是下载网站的 aspx 页面 我使用以下代码 WebClient myWebClient new WebClient Concat
  • Pyinstaller-python exe 停止工作:“无法打开自身”

    我一直在使用 Pyinstaller 将 python 脚本转换为可执行文件 过去它对我来说效果很好 但是现在 当我尝试运行可执行文件 旧的和新的 时 出现错误 无法打开自身 或存档 其中第一个空白是可执行文件的路径 第二个空白是存档的路径
  • 提取内部 EXE 信息

    Windows EXE 文件有一些元数据 例如CompanyName FileVersion InternalName ProductName OriginalFileName ProductVersion etc 如何使用 PHP 提取此
  • 如何从 python 3.5 脚本创建独立的可执行文件?

    大多数可用程序仅支持 python 版本 3 4 您可以使用py安装程序 http www pyinstaller org支持Python 3 5 要使用 pip 安装它 请在终端中执行 pip install pyinstaller 要制
  • 将 .msi 转换为 .exe 的最佳工具包是什么?

    我想将 msi 封装到 exe 中以便添加 硬编码文件夹位置 例如 C Program Files x86 TEST 添加安装版本文件 使用静默安装 使用命令行开关 安装 卸载 日志生成 添加 Windows 注册表足迹 微星定制 用于安装
  • 从 Win7 启动位于 NW 驱动器上的 C# exe 时出现“错误 26 - 定位服务器错误”; SQL数据库

    我有几个 C 程序使用LINQ to SQL 类 如果我将 exe 文件放在网络驱动器并从那里处决他们 我得到 error 26 但只有当我在Win7上这样做时 一步步 创建一个新的C 项目 我在XP机器上使用VS 2010 Premium
  • 如何为 64 位函数动态添加 (SEH) 异常处理程序?

    假设我有一个函数被注入到另一个 64 位进程中 例如 使用创建远程线程 https msdn microsoft com en us library windows desktop ms682437 v vs 85 aspx 并且我想实施结
  • PE格式,IAT目录有什么用

    在 PE 格式中 我们有导入表目录 通过IMAGE DIRECTORY ENTRY IMPORT 和 IAT 目录 通过以下方式访问 IMAGE DIRECTORY ENTRY IAT 两者都是可选标头数据目录的一部分 使用导入表 加载器动
  • 如何在没有DLL的情况下编译SDL程序并运行它

    是否可以将SDL库程序编译为exec并在没有 sdl dll 的情况下运行它 例如 假设我编写了 sdl 程序 它可以工作 但问题是要在 Windows 上运行该程序 我需要在同一文件夹或系统文件夹中包含 sdl dll 是否可以编译它 以
  • 如何在 SSISDB 中将可执行错误公开为消息

    我们当前正在从作为每晚批处理作业的一部分运行的 SSIS 执行进程任务调用使用 python 构建的可执行文件 这一切都工作正常 但是当可执行文件失败时 只会引发非常基本的通用错误消息 而不会引用真正的底层错误 当通过命令行运行可执行文件时
  • Installshield安装成功后,不启动exe

    我正在使用单个 MSI 项目 成功安装后 我选择复选框来启动我的软件 然后单击完成 即使我检查并单击 完成 它也不会启动我的软件 到目前为止 我发现确保启动目录有效的唯一方法是 启动产品 复选框的属性选项卡 其属性设置为 LAUNCHPRO
  • 使用pyinstaller时找不到脚本

    我正在尝试将 python 脚本转换为 exe 文件 我已将 python 脚本与 pyinstaller 一起添加到文件夹中 并在 CMD 中使用正确的 PATH C Users ola nordmann AppData Local Pa
  • 将数据附加到 exe

    这个问题是我之前问题的答案之一的延伸 如何在exe中保存用户注册 C https stackoverflow com questions 5792793 how to save user registration in the exe c
  • EXE 或 DLL 映像基地址

    C Windows 中有没有办法获取 exe DLL 映像基地址 谢谢 如果您将二进制文件加载到您自己的进程中 您可以使用获取模块句柄 http msdn microsoft com en us library ms683199 VS 85
  • /TSAWARE 链接器标志对 PE 可执行文件有什么作用?

    将 TSAWARE 链接器标志添加到我的一个项目 Visual Studio 6 后 我惊讶地发现 PE 文件 idata 中出现了一个新部分 如果我不设置该标志 导入将合并到 rdata 中 为了说明 问题 我们从一个简单的控制台程序开始
  • 在调用 Main() 之前 Windows 会做什么?

    Windows 必须做一些事情来解析 PE 标头 将可执行文件加载到内存中 并将命令行参数传递给main Using OllyDbg I have set the debugger to break on main so I could v
  • 在PE的导入表中添加一个条目

    我正在寻找一个命令行程序来向 PE 文件的导入表添加条目 我的目标是将一个新的导入函数从外部 DLL 添加到我的 EXE 然后使用 ollydbg 使用代码洞穴插入新代码 新代码将使用新导入的函数 实际上我已经实现了我的目标 但是要向我使用
  • 如何确定 Windows 10 上可执行二进制文件的体系结构

    给定一些Random exe在 Windows 上 我如何确定 它的CPU架构 例如Intel ARM 以及 它的位数 例如 32 或 64 我可以使用文件资源管理器 其他工具或编程方法中的属性吗 Cygwin https www cygw

随机推荐

  • scipy PchipInterpolator 实现问题

    我正在尝试基于链接实现 PchipInterpolator http docs scipy org doc scipy 0 14 0 reference generated scipy interpolate PchipInterpolat
  • pdf.js 与本地 pdf 文件

    我正在尝试 pdf js 库 只想在我的服务器上显示本地 pdf 文件 而不是示例提供的 pdf 文件
  • 带有构建优化器的 AOT 和 JIT

    我正在关注解决方案here https github com Alekcei AotAndJit使用的JitCompilerFactory加载运行时编译器和自定义装饰器以保留组件和模块元数据 但是有了 Angular cli build o
  • golang中如何通过引用传递结构体类型的接口?

    我需要通过引用传递结构类型的接口 如下所示 由于我不能使用接口指针来构造类型变量 我应该如何更改以下代码来修改te价值10 package main import fmt func another te interface te check
  • 获取使用 Chart.js 渲染的折线图 y 轴的最大值

    我使用 Chart js 渲染分散折线图 效果非常好 对于渲染算法 我需要找出 y 轴上显示的最高值 因此假设数据集中的 最大 点为 y 248 因此 y 轴显示 250 作为最大值 我需要知道它是250 我尝试在运行时检查图表对象 如下所
  • Material UI 主题覆盖:如何全局覆盖子样式?

    我正在构建一个应用程序材质UI库 https material ui com 对于 ReactJS 使用主题覆盖 API https material ui com customization overrides global theme
  • MongoDB C# 2.0 超时异常

    我们最近将 Web 应用程序升级到 MongoDB C Driver 2 0 并部署到生产环境 在一定负载以下 应用程序运行良好 一旦生产服务器上的负载超过一定限制 应用程序的CPU立即降至0 大约30秒后 该异常会被记录多次 System
  • 轮播图像未填充 bootstrap 3 中的宽度

    我对这种响应式的东西太陌生了 我正在尝试使用新 bootstrap 3 中的轮播 但由于某种原因 图像没有填充轮播的宽度 所有图像的尺寸完全相同 1000x395 无论我做什么 它都不会完全填满 非常感谢任何和所有的帮助 这是我正在使用的代
  • 获取当前的 jQuery 选择器字符串?

    调用自定义插件时 如何获取当前选择器字符串 my selector p my plugin 想要输出my selector p在我的脚本中 我怎样才能访问这个字符串 您可以使用selector https api jquery com se
  • Kubernetes客户子域动态绑定

    我有以下用例 我们的客户经常在其 K8s 集群上发布新服务 这些新服务可以通过负载平衡和 Ingress 从外部访问 以便在部署服务后动态配置此负载平衡 这对于我们客户的开发团队来说非常容易 因为他们不必等到有人手动配置负载平衡 他们只需在
  • 点之间的角度?

    我有一个三角形 A B C 我试图找到每对三个点之间的角度 问题是我可以在网上找到的算法是用于确定向量之间的角度 使用向量 我可以计算从 0 0 到我所拥有的点的向量之间的角度 但这并不能给出三角形内的角度 好的 这是在维基百科页面上的方法
  • 使用 Python 在文件行中搜索列表条目

    我有一个包含数万行 ASCII 文本的文本文件 我有一个包含数百个要搜索的关键字的列表 单独考虑每一行 最初 如果有任何匹配项 我想返回 打印到屏幕或文件 该行 但最终我想根据匹配数对返回的行进行排名或排序 所以 我的清单是这样的 keyw
  • 无法使用接口确定 i => i.Id 的序列化信息

    首先 我知道这个错误消息已经存在问题 但我还没有找到任何与使用此类查询的接口相关的问题 我目前正在尝试使用 C 驱动程序 2 0 更新 MongoDB 实体 但是 当我尝试构建查询时出现错误 我假设它是Builders
  • .replace() 之后恢复光标位置

    我最大的问题是 替换后 光标默认位于文本区域的末尾 如果我正在打字 那没有问题 但如果我要返回并编辑 那就真的很烦人了 这是我尝试过的 文本区域的 id 是 区域 var el e area position el selectionSta
  • 实体框架默认连接工厂

    我最近使用实体框架 4 3 创建了一个新的 Web 项目 我正在使用数据库优先设计 实体框架将此部分添加到我的 web config 中 它提供了一些信息性错误消息 我在某处读到此代码与代码优先设计相关 我是否需要它 我是否只需删除它
  • 在 pandas dataframe python 中使用 pii 对特定列进行匿名化

    我已经加载了一个带有 json 文件的 s3 存储桶 并将其解析 压平到 pandas 数据帧中 现在我有一个包含 175 列的数据框 其中 4 列包含个人身份信息 我正在寻找一种快速解决方案 对这些列 名称和地址 进行匿名化 我需要保留多
  • Python pickle 协议选择?

    我使用 python 2 7 并尝试腌制一个对象 我想知道 pickle 协议之间的真正区别是什么 import numpy as np import pickle class Data object def init self self
  • 更改node.js安装目录

    我下载了node js v5 6 0 64位的windows msi 当我执行它时 它弹出警告 无效的E 驱动器 并关闭 无法更改安装驱动器 我没有 E 驱动器 而是想安装到外部驱动器 F 当我的外部驱动器设置为 E 时 我认为以前在 E
  • 将 CSV 导入添加到 ROR 应用程序

    我正在在线订购应用程序中添加批量订单的 CSV 导入 基本上我想做的是用 CSV 数据创建一个购物车 我创建了一个导入控制器 require csv class ImportsController lt ApplicationControl
  • 将数据附加到 exe

    这个问题是我之前问题的答案之一的延伸 如何在exe中保存用户注册 C https stackoverflow com questions 5792793 how to save user registration in the exe c