如何从C中的pe(exe)文件中删除一些数据

时间:2010-10-11 15:43:06

标签: c++ c executable portable-executable

在第一个exe中我定义了一些char特殊字节作为标签的数组,我将它从另一个exe映射到内存,找到所需的标签并输入新的数据,但这个数据可能比定义的数组短,所以我想把这个数组削减到所需的大小!我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

没有简单的方法可以删除PE文件。

明显的解决方案是在原始(在您的术语第一个)exe中另外定义length字段,并用另一个标签标记它。然后第二个exe的额外工作是写入该字段的实际数据长度。


编辑:如果切割是您的主要目标,您还必须记住:

  • PE的控制总和将发生变化。虽然PE头中的控制和字段的位置不难找到。
  • PE文件已对齐。所有部分都是对齐的。对齐也可以在标题中找到。
  • 如果你剪掉一个部分会导致很好的后果。看一下PE文件头结构。

header

参考: http://msdn.microsoft.com/en-us/library/ms809762.aspx