c++ - 开源dll注入(inject)器

标签 c++ windows winapi dll

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

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

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

最佳答案

该方法比较普遍可靠。

尝试添加

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

因此您的注入(inject)应用程序将获得调试权限。

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

相关文章:

c++ - 去除 boost::fusion 序列中的引用

具有 CUDA 功能的 PHP 扩展

c++ - Windows api SIZE_T 在内存和控制台中不显示相同的值

linux - Linux pthread 中 SetThreadIdealProcessor 的替换

c++ - GetLastError() 是一种设计模式吗?是好的机制吗?

c++ - 如何使用 Win32 以编程方式创建快捷方式

c++ - 分配内存的表达式是右值表达式还是左值表达式?

c++ - CodeBlocks c++ - 不能使用线程,因为编译器不支持它

iphone - 使用 Cygwin 为 WindowsXP 构建 iPhone

windows - Virtualbox 上 MacOS 和 Windows 之间的共享文件夹