【问题标题】:Is it possible to execute a embedded resource? [duplicate]是否可以执行嵌入式资源? [复制]
【发布时间】:2013-12-24 13:43:28
【问题描述】:

我将一个可执行文件放入我的项目资源中,并将其构建操作设置为“嵌入式资源”。当我请求这个资源时,我得到一个字节数组。如何像执行文件一样执行此资源?如果可能的话,我更喜欢一个解决方案,而不必将字节数组写入可执行文件并执行此文件。

【问题讨论】:

  • 原则上可行(至少对于通常包含重定位信息的 dll),但在实践中很烦人。最大的困难之一是,如果您不在其基地址加载可执行文件并且该可执行文件不包含与位置无关的代码,则需要重新定位它。有自己做重定位的代码示例,但它不是微不足道的。

标签: c# executable embedded-resource


【解决方案1】:

对于托管程序集,这很容易做到。所以我假设您指的是非托管可执行文件。没有官方支持的方法可以从内存中保存的文件创建非托管进程。唯一受支持的方法是将其写入文件并使用CreateProcess 或类似名称。

话虽如此,如果您准备打破规则,周围有很多库和代码示例会诱使 Windows 从内存中保存的可执行映像创建进程。一旦反恶意软件程序开始对您的程序感兴趣,请做好准备。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多