<img width="1326" alt="image" src="https://user-images.githubusercontent.com/36962741/202383477-ae13cb16-6784-466a-8c49-24a2f82e71d6.png"> <img width="1253" alt="image" src="https://user-images.githubusercontent.com/36962741/202383526-348f46fa-beb0-44bc-b06b-3f706a656650.png"> <img width="1146" alt="image" src="https://user-images.githubusercontent.com/36962741/202383585-15742430-cbff-4659-8808-9b7091329baa.png"> OS:Win11 22H2 64为 编译环境:VS2022
Activity
bb107 commentedon Nov 17, 2022
LdrLoadDllMemoryExW的返回值是什么?看样子kernel32.dll是系统已经加载过的dll,重复加载会失败的。
reloc2 commentedon Nov 17, 2022
#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000EL)

bb107 commentedon Nov 17, 2022
你加载的dll是什么?system32目录下的还是syswow64目录下的?
reloc2 commentedon Nov 17, 2022
加载的是kernel32.dll,32位的不是直接加载的syswow64目录下的吗?具体应该怎么看加载的是哪个目录下的dll呀?
reloc2 commentedon Nov 17, 2022
我尝试调试了下,这个项目刚开始看,里面的一些代码没有看懂。
bb107 commentedon Nov 17, 2022
如果使用绝对路径(如图),Windows会自动为32位程序重定向到syswow64。你的开发环境比较新,不排除是系统兼容性的问题,在我的系统上加载没问题。

reloc2 commentedon Nov 17, 2022
不好意思刚才的问题我理解错了,一开始加载的DLL文件是项目中的a.dll。

bb107 commentedon Nov 17, 2022
正常情况下32位程序不能加载64位dll。请尝试加载32位的a.dll。
reloc2 commentedon Nov 17, 2022
好的感谢。
reloc2 commentedon Nov 17, 2022
我在测试32位程序时发现RtlRbInsertNodeEx函数和RtlRbRemoveNode函数(BaseAddressIndex.cpp)需要加__stdcall才可以,给您反馈下。

bb107 commentedon Nov 17, 2022
感谢反馈。我在最近一次提交里已经添加了NTAPI。