DLL 远程注入 (WIN7下32位)
2014-08-27 00:07
399 查看
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的注入为我们打开了一扇想象之门,但之后的事情,搜遍网络,描述得真的很少很少,之后的路估计是探索之路了!
大概的过程:
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的注入为我们打开了一扇想象之门,但之后的事情,搜遍网络,描述得真的很少很少,之后的路估计是探索之路了!
相关文章推荐
- win7 64 DLL的远程注入技术 及注入dll函数调用
- DLL远程注入和卸载
- 32位程序注入64位DLL到64位进程
- 远程注入与卸载DLL
- HOOK -- DLL的远程注入技术详解(1)
- 揭开病毒的奥秘 DLL的远程注入技术详解
- 学习:DLL远程注入
- DLL的远程注入技术详解
- DLL远程注入及卸载实现
- windows平台实现dll远程注入的简单例子
- 利用HOOK技术实现DLL远程进程注入
- VC DLL远程进程注入
- 远程注入DLL(简单描述)
- DLL的远程注入技术
- Win32汇编实现DLL的远程注入及卸载
- 将注入进行到底--------远程线程实现 Dll 注入 汇编实现
- [Delphi] - 远程注入DLL的例子
- 远程注入DLL(简单描述)
- 一个完整的DLL远程注入函数
- 揭开病毒的奥秘 DLL的远程注入技术详解