[转载]Dll注入技术之注册表注入
2015-02-02 21:02
288 查看
转自:黑客反病毒论坛
DLL注入技术之REG注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等。
REG注入原理是利用在Windows 系统中,当REG以下键值中存在有DLL文件路径时,会跟随EXE文件的启动加载这个DLL文件路径中的DLL文件。当如果遇到有多个DLL文件时,需要用逗号或者空格隔开多个DLL文件的路径。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
REG注入就好比在食堂(Windows 系统)发放给学生(EXE文件)饭菜(DLL文件)的过程中,食堂在将原有饭菜的基础上多发给一份紫菜鸡蛋汤(AppInit_DLL中的DLL文件),这个紫菜鸡蛋汤可以是英伟达的UI加速的DLL文件,也可以是是病毒文件的DLL,这就要看使用者是怎么利用这个特性了。
我们可以利用这个特性来进行DLL的注入,接下来需要解决的就是关于注册表操作的Windows API了,如下列表格所示:
主要代码如下:
View Code
REG注入操作简单易懂,甚至不用写程序都可以完成注入操作,但是正是由于他的简单性,每个EXE都被注入,效率低,程序的扩展性差。
DLL注入技术之REG注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等。
REG注入原理是利用在Windows 系统中,当REG以下键值中存在有DLL文件路径时,会跟随EXE文件的启动加载这个DLL文件路径中的DLL文件。当如果遇到有多个DLL文件时,需要用逗号或者空格隔开多个DLL文件的路径。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
REG注入就好比在食堂(Windows 系统)发放给学生(EXE文件)饭菜(DLL文件)的过程中,食堂在将原有饭菜的基础上多发给一份紫菜鸡蛋汤(AppInit_DLL中的DLL文件),这个紫菜鸡蛋汤可以是英伟达的UI加速的DLL文件,也可以是是病毒文件的DLL,这就要看使用者是怎么利用这个特性了。
我们可以利用这个特性来进行DLL的注入,接下来需要解决的就是关于注册表操作的Windows API了,如下列表格所示:
RegOpenKeyEx | 打开注册表键值 |
RegQueryValueEx | 查询键值 |
RegSetValueEx | 设置键值 |
RegCloseKey | 关闭键值 |
BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam) 02.{ 03. TCHAR str[MAXBYTE] = {0}; 04. //得到窗口名称 05. GetWindowText(hwnd,str,sizeof(str)); 06. //是否名称是计算器 07. if(0 == _tcscmp(str,_T("计算器"))) 08. { 09. //由于存在可能多个计算器,需要过滤线程ID 10. //得到本身线程的ID 11. DWORD dwCurrentProcessId = GetCurrentProcessId(); 12. DWORD dwFindCurrentProcessId = 0; 13. //得到窗口线程ID 14. GetWindowThreadProcessId(hwnd,&dwFindCurrentProcessId); 15. //比较 16. if (dwCurrentProcessId == dwFindCurrentProcessId) 17. { 18. *(PDWORD)lParam = 1; 19. return FALSE; 20. } 21. } 22. return TRUE; 23.} 24. 25. 26.DWORD ThreadProc(LPVOID lParam) 27.{ 28. //等待1秒时间以便于让windows创建窗口 29. Sleep(1000); 30. DWORD dwFind = 0; 31. //遍历窗口,过滤窗口名称 32. EnumWindows(lpEnumFunc,(LPARAM)&dwFind); 33. 34. if (!dwFind) return 0; 35. 36. // 运行代码 37. 38. return 0; 39.} 40. 41.BOOL InitInstance() 42.{ 43. DWORD dwThreadId; 44. m_hThread = ::CreateThread(NULL, NULL, 45. (LPTHREAD_START_ROUTINE)ThreadProc, 46. this, NULL,&dwThreadId); 47. 48. return TRUE; 49.}
View Code
REG注入操作简单易懂,甚至不用写程序都可以完成注入操作,但是正是由于他的简单性,每个EXE都被注入,效率低,程序的扩展性差。
相关文章推荐
- [转载]Dll注入技术之依赖可信进程注入
- [转载]Dll注入技术之劫持进程创建注入
- Dll注入技术之注册表注入
- [转载]Dll注入技术之APC注入
- [转载]Dll注入技术之输入法注入
- Dll注入技术之注册表注入
- Dll注入技术之注册表注入
- Dll注入技术之注册表注入
- [转载]Dll注入技术之ComRes注入
- [转载]Dll注入技术之消息钩子
- DLL注入技术之远线程注入
- 进程注入技术:CreateRemoteThread 和 LoadLibrary技术的步骤 (非dll注入)
- Dll注入技术之输入法注入
- Dll注入技术之输入法注入
- 远程注入代码,一些过时的ring3技术(ASM、VC++、Delphi) (非Dll注入)
- Dll注入技术之ComRes注入
- Dll注入技术之ComRes注入
- DLL注入技术之劫持进程创建注入
- DLL注入技术之消息钩子注入
- DLL注入技术之ComRes注入