.netdllhasanentrypointlikedllinc++dll我真的不确定.netdll是否也有像c++那样的入口dll。我如何知道.netdll是否具有入口点。我在某处读到WIN32dll可以有入口点,但dot-net类库也没有。谢谢,这是一个晦涩的话题,我将以极快的速度完成它。每个.NET程序集都有一个非托管入口点,5个字节的机器代码(如果为x64构建则为9个字节),它用作PE32可执行文件头中标记的入口点。除了JMP指令外,EXE跳转到_CorExeMain(),DLL跳转到_CorDllMain()。这些函数位于mscoree.dll中,确保CLR已加载和初始化,以便它可以执行托管代码。这些入口点有助于在不显式启动VM主机的情况下运行托管程序。避免使用mono.exe或java.exe。它们实际上不再用于现代Windows版本,操作系统知道包含.NET清单的可执行文件,加载程序再次将作业传递给加载程序shim,mscoree.dll。这种实现对于实现从包含32位PE32标头的EXE伪造64位进程的相当大的技巧是必要的。Mscoree.dll修补内部加载程序数据结构以完成此壮举。每个.NET程序集还包含一个托管入口点,列在清单标头中。加载程序集后由CLR立即调用。EXE总是有一个,它指向Main()方法,编译器确保您不会忘记编写一个。DLL可能有一个,混合模式程序集总是有一个。指向位于类中的模块初始化器,C++/CLI编译器使用它来确保在任何托管代码可以执行之前初始化CRT(C运行时库)。不,.NETDLL程序集没有像非托管DLL那样的DllMain。但是,在DllMain中实现的所有行为通常都可以使用各种.NET结构来实现。例如:以上是C#学习教程:.netdllhasanentrypointlikedllinc++dll分享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家付费更多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
