【问题标题】:creating / deleting sections using the PeNet library使用 PeNet 库创建/删除部分
【发布时间】:2021-02-09 13:02:35
【问题描述】:

我正在使用PeNet nuget package 处理pe 文件,创建或删除部分时出现问题,我从作者example 中获取代码,但没有任何效果。 (没有出现错误,但没有文件被写入/覆盖。)

使用 C# 控制台应用程序,代码如下:

var bin = File.ReadAllBytes(@"C:\Users\PC\Desktop\test.dll");
var peFile = new PeNet.PeFile(bin);

peFile.AddSection(".newSec", 100, (ScnCharacteristicsType)0x40000040);
peFile.RemoveSection(".rsrc", true);

【问题讨论】:

  • 好心人,谢谢,它有效!

标签: c# portable-executable


【解决方案1】:

来自GitHub issue 的类似话题:

PeNet 通过将整个 PE 文件加载到缓冲区来在内部工作。您所做的所有更改都是在内存中的此缓冲区中完成的。如果要保存更改,只需保存缓冲区即可。

很遗憾,那里提供的代码不正确。 PEFile 没有 Buff 属性。所以使用:

System.IO.File.WriteAllBytes(
    "C:\Users\PC\Desktop\newDLL.dll", 
    peFile.RawFile.ToArray()
);

遗憾的是,作者似乎也从未实现过Save 方法...

进一步阅读文档:

【讨论】:

  • 谢谢,它有帮助。可以联系到你吗?
  • @margelov 你有一个快速的后续问题吗?如果是这样,您可以在这里发表评论,或者如果您认为需要额外讨论,我可以为此创建一个聊天。不过,我不是这个图书馆的专家。根据问题的复杂程度,您可能需要另外提出一个问题。
  • 也许你知道一个更方便的处理 pe 文件的库?
  • @margelov 我不认为有一个(无论如何搜索),但看起来该软件包的最后一次更新是相当新的。如果你想要额外的功能,也许在 GitHub 上打开一个问题是你最好的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2013-11-14
  • 2012-03-24
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多