gpt4 book ai didi

exe - 将数据附加到 exe

转载 作者:行者123 更新时间:2023-12-03 20:06:08 33 4
gpt4 key购买 nike

这个问题是我之前问题的一个答案的扩展:how to save user registration in the exe... (C#) .

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

我在 Windows Portable Executable 文件中找到了各种文档:

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

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

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

坦率地说,我了解得很少,以至于它们对我没有多大用处。更有用的是,我找到了一个 delphi 教程,该教程描述了向可执行文件添加“有效负载”的想法。它继续说要做到这一点,你需要让 exe 知道并且还能够跟踪你把它放在哪里......或类似的东西。除了我可以从代码本身猜测的内容之外,我对 delphi 一无所知。 http://www.delphidabbler.com/articles?article=7&part=2

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

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

谢谢你。

最佳答案

是的,您将数据附加到定义的 PE 镜像之外/之后。如果不想处理 PE header ,可以进行简单的串联。

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

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

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

作为见过一些奇怪 PE 的可执行压缩器的作者,让我说没有固定的规则,即节表中定义的最后一个节是镜像中的最后一个(它们可能是乱序的)。也就是说,它们可能会出现故障。然而,它们在 99% 的时间里都是有序的,除非由一些奇怪的链接器制作或用一些外部实用程序修改。

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

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

如果您不想,您根本不需要处理 header ,也不关心保留代码签名!

关于exe - 将数据附加到 exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795446/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com