标签:
目前对于APC注入方式依然还没有了解内幕, QueueUserAPC((PAPCFUNC)LoadLibraryA, hThread, (ULONG_PTR)param);
但看其调用方式可以猜出一二。,基本也是插入到线程再装载DLL。
以前在黑客防线里看到过主线程注入方式装载DLL,研究了一下,发现很像是手工实现了QueueUserApc的功能。。。不过这种比直接调用API更自由灵活。
另不知怎么回事,WIN7下与黑客防线所载文章实例中的细节有些出入。
首先黑客防线里的找主线程的方式有些绕,他比较了线程时间,我也没细看,观察了一阵,发现一般第一个线程就是主线程,姑且就这么着吧
分析一下:【主要用于备忘,别人能不能看懂我就不知道了】
一,读取线程的等待状态下的数据,线程一般分等待与激活状态,如果没有任务就会处于等待状态,当有操作就会处于激活状态。
二,写注入代码到注入进程
1,保存并改写线程RET时的ESP值,里面放的是调用该函数处存放的下一条指令地址。。。指向注入代码
2,在注入的代码中,实现装载DLL,再将保存的ESP值取出,跳转到ESP指向的地址
三,激活线程。
__declspec(naked) void RemoteSub()
{
_asm
{
push ebx
push eax
pushfd
mov ecx, 00000000
push ecx
add ecx, 8
push ecx
sub ecx, 4
call[ecx]
pop ecx
popfd
pop eax
pop ebx
jmp dword ptr[ecx]
}
}
标签:
原文地址:http://www.cnblogs.com/DJ0322/p/4566940.html