c++ - 从 native 进程加载 .NET PE 的内存

标签 c++ .net c packer

我用 C++ 编写了一个 PE 加壳器,它会将可执行文件加载到其进程空间中,修复 IAT 和重定位,然后调用入口点。

我的问题是 .NET 不受支持:我确实搜索了 .NET PE 格式,它只是一个 32 位可执行文件,入口点设置为导入函数 (_CorExeMain)。

如果我调用它,Windows 只会弹出一个错误,告诉我还没有安装 .NET。

我还了解到 .NET PE 可执行文件在 DataDirectory 中有一个特殊的 COM header ,但我不知道如何处理它。

我希望有人能帮助我。
提前致谢

最佳答案

显然,您的想法不适用于.Net。

您的“打包”可执行文件只是一个 native 可执行文件,其代码是解包程序,其数据是压缩的真实可执行文件。运行时,Windows 期望并获取 native 代码。

对于 .Net 可执行文件,您显然必须执行相同的操作:编写一个 .Net 可执行文件,其代码是解包程序,其数据是压缩的 .Net 字节码。

关于c++ - 从 native 进程加载 .NET PE 的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702279/

相关文章:

c++ - 使用 std::move() 创建右值引用变量是否有任何用处。 [C++]

c++ - C/C++ 中的 GNU Octave 代码等效项

c++ - 电话价格问题(十月挑战 Codechef)

c# - 从动态创建的类中调用构造函数和方法

.net - 使用 64 位框架构建我的 .NET 应用程序有什么优势吗?

c - 生成指数分布的随机数

c++ - 有没有一种方法可以使用带有 C++ 的 MFC 来更改线程的语言环境

c# - 使用 DllImport 调用 C++ 函数

c - 使用 fputs 写入文件

c - 初始化包含指向数组的指针的结构