system32 文件夹中的 kernelBase.dll 和 Kernel32.dll 有什么区别?
为什么他们都执行WideCharToMultiByte?
system32 文件夹中的 kernelBase.dll 和 Kernel32.dll 有什么区别?
为什么他们都执行WideCharToMultiByte?
我认为这就是为什么在 kernelbase.dll 中也存在一些 WinAPI 的原因。
“作为我们转移到低级二进制文件的功能示例,kernelbase.dll 从 kernel32.dll 和 advapi32.dll 获取功能。这意味着现有的二进制文件现在将调用转发到新的二进制文件,而不是直接处理它们;转发可以是静态的(导出表显示重定向),也可以是运行时(dll 具有调用新二进制文件的存根例程)。这将影响低级应用程序,例如依赖于内部 API 的安全和备份应用程序和抵消。”
参考:https : //docs.microsoft.com/en-us/windows/desktop/Win7AppQual/new-low-level-binaries
请参阅下面的示例。
这是 Kernel32.dll 中 OpenProcess 的反汇编,它将 OpenProcess 重定向到 Kernelbase.dll

调用 Native API NTOpenProcess 的 Kernelbase.dll 中 OpenProcess 的反汇编