鱼C论坛

 找回密码
 立即注册
查看: 3744|回复: 2

为什么不能注入explorer.exe和winlogon.exe等

[复制链接]
发表于 2015-6-14 22:15:38 | 显示全部楼层 |阅读模式
30鱼币


  1. #include<windows.h>
  2. #include<stdio.h>

  3. BOOL EnableDebugPrivilege()
  4. {
  5.   HANDLE HToken = NULL;
  6.   LUID SaveDebugNameValue;
  7.   TOKEN_PRIVILEGES Token_Privilege;
  8.   
  9.   if(0==OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&HToken))
  10.   {
  11.     return false;
  12.   }
  13.   
  14.   if(0==LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&SaveDebugNameValue))
  15.   {
  16.     CloseHandle(HToken);
  17.    
  18.     return false;
  19.   }
  20.   
  21.   Token_Privilege.PrivilegeCount = 1;
  22.   
  23.   Token_Privilege.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  24.   
  25.   Token_Privilege.Privileges[0].Luid = SaveDebugNameValue;
  26.   
  27.   if(0==AdjustTokenPrivileges(HToken,false,&Token_Privilege,NULL,NULL,NULL))
  28.   {
  29.     CloseHandle(HToken);
  30.    
  31.     return false;
  32.   }
  33.   
  34.   CloseHandle(HToken);
  35.   
  36.   return true;
  37. }

  38. int insert(DWORD pid)
  39. {
  40.   HANDLE hThread=NULL;//远线程的句柄
  41.   HANDLE hProcess=NULL;//将注入的进程句柄
  42.   LPVOID lpDllRemotePath=NULL;//在进程申请得的空间
  43.   HMODULE hmodule=NULL;//模块句柄
  44.   FARPROC lfnAddr=NULL;//函数的地址
  45.   char szDllPathName[]="d:\\我的文档\\桌面\\myhook\\insertDll\\Debug\\insertDll.dll";
  46.   if(!EnableDebugPrivilege())
  47.   {
  48.     printf("提权失败!\n");
  49.     return 0;
  50.   }
  51.   hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,pid);//打开目标进程
  52.   DWORD havewrite,id;
  53.   if(hProcess==NULL)
  54.   {
  55.     printf("OpenProcess error!\n");
  56.     return 0;
  57.   }
  58.   lpDllRemotePath=VirtualAllocEx(hProcess,NULL,strlen(szDllPathName)+1,MEM_COMMIT,PAGE_READWRITE);//向进程中申请空间
  59.   if(lpDllRemotePath==NULL)
  60.   {
  61.     printf("VirtualAllocEx error!\n");
  62.     return 0;
  63.   }
  64.   if(!WriteProcessMemory(hProcess,lpDllRemotePath,(LPVOID)szDllPathName,strlen(szDllPathName)+1,&havewrite))
  65.   {
  66.     printf("writeprocessmemory error!\n");
  67.     return 0;
  68.   }
  69.   hmodule=(HMODULE)GetModuleHandle("kernel32.dll");
  70.   lfnAddr=GetProcAddress(hmodule,"LoadLibraryA");
  71.   hThread=CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)lfnAddr,(LPVOID)lpDllRemotePath,0,&id);
  72.   if(hThread==NULL)
  73.   {
  74.     printf("CreateRemoteThread error!\n");
  75.     return 0;
  76.   }
  77.   return 1;
  78. }

  79. void main()
  80. {
  81.   int id;
  82.   printf("输入进程ID:");
  83.   scanf("%d",&id);
  84.   if(!insert((DWORD)id))
  85.   {
  86.     printf("注入失败!\n");
  87.   }
  88.   else
  89.   {
  90.     printf("注入成功\n");
  91.   }
  92. }
复制代码

最佳答案

查看完整内容

您是没注入成功? 建议以后遇到这种问题时,先调试下,找到是在哪一步出错,就能更快解决 我在这里测试了下,注入这两个进程都没问题。您如果是XP环境,建议看下有没有开启dep保护,并且检查下dll是否存在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-14 22:15:39 | 显示全部楼层
您是没注入成功?
建议以后遇到这种问题时,先调试下,找到是在哪一步出错,就能更快解决

我在这里测试了下,注入这两个进程都没问题。您如果是XP环境,建议看下有没有开启dep保护,并且检查下dll是否存在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-27 21:41:52 | 显示全部楼层
漩涡鸣人 发表于 2015-6-14 22:15
您是没注入成功?
建议以后遇到这种问题时,先调试下,找到是在哪一步出错,就能更快解决

应该是权限问题了。
这个在一般需要以管理员权限运行才可以。
也可以在程序里手动提权。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 12:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表