2011-09-19 91 views
0

我开发了一个工具,可以改变某些程序的外观。要做到这一点,我需要在一些进程中注入一个dll。开源DLL注入器

现在我基本上用这个approach。问题往往是人们无法注入dll,因为他们没有将目标进程作为管理员或其他我不明白的东西运行(即使在UAC关闭的情况下,人们根本无法在Vista上注入),所以它很漂亮依赖。

是否有一个可靠的开源解决方案,我可以在我的应用程序中使用,它允许像识别用户问题一样的疑难解答?

回答

3

该方法相当普遍且可靠。

刚刚尝试加入

HANDLE hToken; 
LUID sedebugnameValue; 
TOKEN_PRIVILEGES tkp; 
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) puts("Failed to Enable Debug Options!"); 
    if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) 
    { 
    CloseHandle(hToken); 
    puts("Failed to Enable Debug Options!"); 
    gets(temp); 
    return 0; 
    } 
tkp.PrivilegeCount = 1; 
tkp.Privileges[0].Luid = sedebugnameValue; 
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof tkp, NULL, NULL)) CloseHandle(hToken); 

所以你注射的应用将得到调试权限。