Opensource dll注入器

时间:2011-09-19 07:58:51

标签: c++ windows winapi dll

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

现在我基本上使用这个approach。问题往往是人们无法注入dll,因为他们没有像管理员那样运行目标进程或其他我不理解的东西(有人无法注入vista,即使UAC关闭)所以它是相当的os依赖

我是否可以在我的应用程序中使用可靠的开源解决方案,以便进行故障排除,例如识别用户问题?

2 个答案:

答案 0 :(得分: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);

因此,您的注射应用程序将获得调试权限。

答案 1 :(得分:1)

学习Detours的来源可能很有用:http://research.microsoft.com/en-us/projects/detours/