首页 > 其他分享 >远程线程注入技术

远程线程注入技术

时间:2023-10-19 23:12:06浏览次数:27  
标签:MessageBox OK 线程 注入 ERROR 进程 NULL 远程 hProcess

一.远程线程注入步骤:

  1. 获得目标进程句柄

    • 方法1:先获得窗口句柄,根据窗口句柄获得进程ID,再根据进程ID获得进程句柄。

      hwnd = FindWindow("Notepad", NULL);//找到程序窗口句柄
          if (hwnd == NULL)
          {
              MessageBox(NULL, "获得窗口句柄错误!", "ERROR", MB_OK);
              return false;
          }
          GetWindowThreadProcessId(hwnd, &dwProcessId);
          HANDLE hProcess;
          hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
      
    • 方法2:获得进程快照,根据进程快照遍历进程,直到找到目标进程。

      char ProcessName[25] = "Notepad.exe";
      	DWORD ProcessId = 0;
      	HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
      	if(SnapShot == NULL)
      	{
      		MessageBox(NULL, "创建进程快照失败!", "ERROR", MB_OK);
      	}
      	PROCESSENTRY32 ProcessInfo = {0};
      	ProcessInfo.dwSize = sizeof(PROCESSENTRY32);
      	int record = Process32Next(SnapShot, &ProcessInfo);
      	while(record)
      	{
      		if(!strcmp(ProcessInfo.szExeFile, ProcessName))
      		{
      			ProcessId = ProcessInfo.th32ProcessID;
      			break;
      		}
      		record = Process32Next(SnapShot, &ProcessInfo);
      	}
      	if(record == 0)
      	{
      		MessageBox(NULL, "查找目标进程失败!", "ERROR", MB_OK);
      		return false;
      	}
      	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessId);
      
  2. 开辟空间并且将目标DLL的地址写入进程空间

    PVOID lpPathAddr = VirtualAllocEx(hProcess, 0, strlen(pszDllFileName) + 1, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
        if (lpPathAddr == NULL)
        {
            MessageBox(NULL, "申请内存空间错误!", "ERROR", MB_OK);
            CloseHandle(hProcess);
            return false;
        }
        //3.在目标进程当中写入dll路径
        SIZE_T dwWriteSize = 0;
        if (WriteProcessMemory(hProcess, lpPathAddr, pszDllFileName, strlen(pszDllFileName) + 1, &dwWriteSize) == false)
        {
            MessageBox(NULL, "写入目标进程空间错误!", "ERROR", MB_OK);
            CloseHandle(hProcess);
            return false;
        }
    
  3. 载入DLL文件,并创建远程线程调用DLL

     FARPROC pFunProcAddr = GetProcAddress(GetModuleHandle("Kernel32.dll"), "LoadLibraryA");
        if (pFunProcAddr == NULL)
        {
            MessageBox(NULL, "载入LoadLibraryA函数错误!", "ERROR", MB_OK);
            CloseHandle(hProcess);
            return false;
        }
        //4.创建远程线程实现dll注入
        HANDLE hThread = CreateRemoteThread(hProcess, NULL, NULL, (PTHREAD_START_ROUTINE)pFunProcAddr, lpPathAddr, NULL, NULL);
        if (hThread == NULL)
        {
            MessageBox(NULL, "创建远程进程错误!", "ERROR", MB_OK);
            CloseHandle(hProcess);
            return false;
        }
    

标签:MessageBox,OK,线程,注入,ERROR,进程,NULL,远程,hProcess
From: https://www.cnblogs.com/ONEZJ/p/17775949.html

相关文章

  • 泛微E-Office json_common.php文件存在sql注入漏洞
    漏洞简介泛微e-office为企业办公提供丰富应用,覆盖常见协作场景,开箱即用。满足人事、行政、财务、销售、运营、市场等不同部门协作需求,帮助组织高效人事管理。系统json_common.php文件存在SQL注入漏洞漏洞复现fofa语法:app="泛微-EOffice"登录页面如下:POC:POST/building/......
  • 用友畅捷通 畅捷CRM get_usedspace.php SQL注入漏洞
    漏洞简介畅捷CRMget_userspace.php文件中site_id参数存在SQL注入漏洞漏洞复现fofa语法:icon_hash="-1068428644"登录页面如下:POC:GET/WebSer~1/get_usedspace.php?site_id=-1159%20UNION%20ALL%20SELECT%20CONCAT(0x7178767671,0x5664726e476a637a565a50614d4c435745446a......
  • 用友时空KSOA dept.jsp SQL注入漏洞
    漏洞简介用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业最前沿的I需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话,帮助流通企业保护原有的IT投资,简化IT管理,提升竞争能力,确保企业整体的战略目标以及创新活动的实现。系统dep......
  • 用友GPR-U8 slbmbygr SQL注入漏洞
    漏洞简介用友GRP-U8是面向政府及行政事业单位的财政管理应用。北京用友政务软件有限公司GRP-U8SQL注入漏洞。漏洞复现fofa语法:app="用友-GRP-U8"登录页面如下:POC:/u8qx/slbmbygr.jsp?gsdm=1';WAITFORDELAY'0:0:5'--sqlmap梭哈nuclei批量yaml文件id:yonyou_GRPU8_slb......
  • 用友GRP-RMIS datalist.jsp SQL注入漏洞
    漏洞描述用友GRP-RMIS系统的datalist.jsp存在sql注入漏洞漏洞复现fofa语法:app="用友-GRP-RMIS系统"系统登录页面如下:POC:POST/datalist.jspHTTP/1.1Host:xxxxUser-Agent:python-requests/2.31.0Accept-Encoding:gzip,deflateAccept:*/*Connection:closeConten......
  • ASP.NET Core中对开放泛型(Open Generic)的依赖注入
    publicinterfaceIRepository<T>{voidAdd(Tentity);List<T>Get();}publicclassRepository<T>:IRepository<T>{List<T>_list=newList<T>();publicvoidAdd(Tentity){_list.Add(entit......
  • Linux远程管理协议
    (RFB、RDP、Telnet和SSH)是Linux的远程管理协议。提到远程管理,通常指的是远程管理服务器,而非个人计算机。个人计算机可以随时拿来用,服务器通常放置在机房中,用户无法直接接触到服务器硬件,只能采用远程管理的方式。远程管理,实际上就是计算机(服务器)之间通过网络进行数据传输(信息交换)的过......
  • AMD线程撕裂者7000实拍图赏:1+12和你从未见过的1+8
    盼望着,盼望着,AMDZen4架构的新一代线程撕裂者7000系列终于来了!这一次,AMD提供了两种选择:一是面向顶级工作站的线程撕裂者PRO7000WX系列,满血状态,最多96核心192线程、480MB缓存、8通道DDR5内存、128条PCIe5.0通道。二是面向桌面发烧友的线程撕裂者7000X系列,最多64核心128线程、3......
  • GIL全局解释器锁、互斥锁、线程队列、进程池和线程池的使用、多线程爬取网页、协程理
    进程和线程的比较进程的开销比线程的开销大很多进程之间的数据是隔离的,但是,线程之间的数据不隔离多个进程之间的线程数据不共享----->还是让进程通信(IPC)------->进程下的线程也通信了---->队列GIL全局解释器锁(重要理论)Python在设计之初就考虑到要在主循环中,同时只有一......
  • Spring-IOC构造注入,以及以基于注解的DI
    .Spring核心:IOCAOPIOC:控制反转:就是对对象控制权的转移,从程序代码本身反转到外部的容器中,通过外部容器对象的创建,属性的赋值,依赖的管理。IOC的具体实现:依赖注入(DI):1.创建项目,导入架包2.定义类3.创建Spring的配置文件,编写bean4.在测试类中测试......