我开发了一种可以更改某些程序外观的工具。为此,我需要在某些进程中注入dll。

现在,我基本上使用此approach。问题是人们通常无法注入dll,因为他们没有以管理员身份或其他我不理解的方式运行目标进程(即使关闭了UAC,也无法注入vista),所以它相当依赖。

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

最佳答案

该方法是相当普遍且可靠的。

只需尝试添加

 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);


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

关于c++ - 开源DLL注入(inject)器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7467918/

10-10 19:06