我们不应该使用内核中的函数。use 来自DllMain
来自MS文档:
因为在调用入口点函数时,可以保证将Kernel32.dll加载到进程地址空间中,因此在Kernel32.dll中调用函数不会导致在初始化代码执行之前使用DLL。因此,入口点函数可以调用Kernel32.dll中不加载其他DLL的函数。例如,DllMain可以创建关键部分和互斥对象等同步对象,并使用TLS。不幸的是,除了Kernel32.dll之外,在Kernel32.dll....Calling函数中没有一个完整的安全函数列表,需要DLL。DLLs可能会导致很难诊断的问题。例如,调用User、Shell和COM函数可能导致访问冲突错误,因为某些函数加载其他系统组件。相反,在终止期间调用这些函数可能会导致访问冲突错误,因为相应的组件可能已经卸载或未初始化。
我的问题:
但是文档没有提到ntdll.dll。-我可以调用LoadLibrary for "ntdll",并使用DllMain中的ntdll中的函数:
( 1)在DLL_PROCESS_ATTACH (ntdll的加载和使用功能)中?
2)在DLL_PROCESS_DETACH期间(使用以前加载的ntdll函数)?
另外,请注意,有1500+声誉的人会喜欢创建一个名为"dllmain“的新标签吗?
发布于 2013-06-24 23:48:50
对于“在DllMain中安全吗”这个问题的答案总是默认为"no“。在这种情况下,调用LoadLibrary是不可能的。
一般来说,在ntdll.dll中调用任何东西都是不建议的,即使在安全的地方也是如此。
https://stackoverflow.com/questions/17259729
复制相似问题