DLL的远程注入在WIN7 64位系统环境下,编写的注入程序(32位)向远程目标进程(32位)注入DLL(32位)同 XP环境是么有什么区别的!
大概的过程:
1、提升注入程序的权限
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &uID);
AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL,NULL);
tp为一个TOKEN_PRIVILEGES结构,根据给结构成员的赋值给予当前进程的权限。
2、读写方式+创建线程方式打开远程目标进程获取远程进程ID
hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD|PROCESS_VM_WRITE, NULL, _wtoi(RemoteProcPid));
RemoteProcPID是远程进程的PID,可以在系统的任务管理器中查找得到。
3、向远程目标进程申请空间(注入的DLL位置属于注入程序的变量,以后远程目标进程调用时并不晓得这个DLL在哪里,所以要在远程目标进程中申请空间)
LPVOID lpDllPathNameSpace = VirtualAllocEx(hRemoteProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE);
4、在申请的空间中写入,需要插入的DLL的全路径文件名
WriteProcessMemory(hRemoteProcess, lpDllPathNameSpace, (LPVOID)lpDllPathName,cb, &writeLength);
5、获取kernel.dll中LoadLibraryW的函数地址,用以装载DLL
PTHREAD_START_ROUTINE pThreadFunAddr =(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(L"Kernel32.dll"),"LoadLibraryW");
6、创建远程线程即远程注入DLL
hRemoteThread = CreateRemoteThread(hRemoteProcess, NULL, 0, (LPTHREAD_START_ROUTINE) pThreadFunAddr,(LPVOID)lpDllPathNameSpace , 0,NULL);
DLL的注入完全是成功的,呵呵 DLL 怎么写?特别是我需要的那种,网上都说你的DLL 成为了远程进程的一个线程了,就可以为所欲为的控制目标远程进程,我试了下,其实也不容易。
DLL的注入为我们打开了一扇想象之门,但之后的事情,搜遍网络,描述得真的很少很少,之后的路估计是探索之路了!