【问题标题】:how to remove some data from pe (exe) file in C如何从C中的pe(exe)文件中删除一些数据
【发布时间】:2010-10-11 15:43:05
【问题描述】:

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

【问题讨论】:

  • 几乎可以肯定有更好的方法来实现您想要做的事情,而无需求助于像这样丑陋的非便携式黑客。或许您可以说出您真正想要达到的目标是什么?
  • 我正在处理文件加密程序,第一个 exe 就像一个定义了“nops”大数组的存根,它很大,因为我没有从第二个 exe 输入的数据大小.所以如果输入的数据比那个数组小得多,我必须削减它以减少 exe 文件的大小。我知道它会改变偏移量,但不知道如何正确更新它们。就是这样!
  • 为什么不将您的加密实现为库并链接到它...

标签: c++ c executable portable-executable


【解决方案1】:

没有精细而简单的方法可以剪切出 PE 文件。

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


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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2012-09-07
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多