-
-
[原创]dll注入死锁问题的探究
-
发表于:
2020-5-22 11:32
7838
-
Dll注入死锁问题的探究
Dll注入的方法很多,可以参考https://bbs.pediy.com/thread-253918.htm、https://bbs.pediy.com/thread-75887.htm。这里不再说明。
笔者是在进程里创建一条线程,线程里调用LdrLoadDll函数加载的dll。代码在附件里,采用的是内核注入,适应windows7、win10所有版本,应用层注入原理也一样。
注入成功后会弹出对话框:
但注入时有时候会卡死,被注入进程和”我是注入的dll”界面显示不出来。
上调试器,我是往计算器(calc.exe)里注入一个名为Test.dll的dll。!Process 0 0遍历所有进程后,记录下calc.exe的Eprocess。
使用.process /i 命令切换到计算器进程
使用!process fffffa80039aeb30 7观察计算器进程详细信息。
发现计算器有两个线程,两个线程最后一个栈帧符号没有显示出来。于是加载应用层符号:
再敲入命令 !process fffffa80039aeb30 7
于是应用层符号显示出来了。
观察两条线程,都调用了ntdll!RtlEnterCriticalSection进入nt!KeWaitForSingleObject进行等待。
分别观察两个线程调用RtlpWaitOnCriticalSection的第四个参数,是个锁对象:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-5-22 11:42
被yirucandy编辑
,原因: