您的位置:首页 > 其它

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的注入为我们打开了一扇想象之门,但之后的事情,搜遍网络,描述得真的很少很少,之后的路估计是探索之路了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: