我用 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/