逆向?又或者是编程知识——记录一次DLL无法加载的原因

续一下上一篇文章的故事。
今天朋友又来找我,说是极少部分Win7用户注入不了DLL,希望我看一下。

“极少部分win7用户注入不了DLL”,,,难道是因为他们系统ntdll线程特殊一点,不走ntdll!ZwTestAlert ?
不太可能,虽然win7有些版本有补丁,但不太可能影响到r3的ntdll。
抱着疑心我还是远程联系他那个用户,开x64dbg调试了看看。

嗯,ZwTestAlert上断下来了。Shellcode也正常走过去了。
问题来了,LdrLoadDll调用后返回值不是0而是0xc0000005

长话短说,中间怎么测出来的套路就不说了。

LdrLoadDll调用后返回0xc0000005的原因是缺少了环境库
让他把d3dx环境库装一下就可以了。

说到这里我又想到,不论是dll加载返回0xc0000005错误码还是exe执行弹出0xc0000005错误。应该都是缺了环境库。本质上还是dll(exe)的输入表里面用到的DLL找不到。
Windows加载器在加载模块时,会把输入表里面用到的DLL全部加载进来,找到所需的API地址后填写在输入表内。如果在当前目录和系统目录找不到所需DLL就返回这个0xc0000005错误码

发布了8 篇原创文章 · 获赞 1 · 访问量 454

猜你喜欢

转载自blog.csdn.net/qq_15059515/article/details/102692093
今日推荐