注册表注入

来源:互联网 发布:淘宝店中国制造 编辑:程序博客网 时间:2024/05/22 18:55

Windows NT/2000/XP/2003中,有一个注册表键值:
HKEY_LOCAL_MACHINE/Software/Microsoft/WindowsNT/CurrentVersion/Windows/AppInit_DLLs
。当某个进程加载User32.dll时,这里面列出的所有的DLL都将User32.dll利用LoadLibrary函数加载到该进程空间中。我们可以把自己的代码放在一个DLL中,并加入该键值,这样就可以注入到所有使用User32.dll的进程中了。
    
DLLLoadLibrary的方式加载时,DllMain会被以DLL_PROCESS_ATTACH为原因调用,实际上我们也只需要关注DLL_PROCESS_ATTACH

[cpp] view plaincopy
  1. BOOL APIENTRY DllMain( HMODULE hModule,  
  2.                                 DWORD   ul_reason_for_call,  
  3.                          LPVOID lpReserved )  
  4. {  
  5.    if (ul_reason_for_call == DLL_PROCESS_ATTACH)  
  6.    {  
  7.     HANDLE f = CreateFile(L"D://InjectSuccess.txt", FILE_ADD_FILE, FILE_SHARE_WRITE,  
  8.          NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);  
  9.     CloseHandle(f);  
  10.    }  
  11.        return TRUE;  

0 0