当前位置: 首页 > news >正文

远程线程注入

注入简单来说就是让别人的程序执行 你想要让他执行的dll

#include<iostream>
#include<Windows.h>
using namespace std;char szBuffer[] ="C:\\Users\\20622\\source\\repos\\Dll1\\Debug\\test.dll";  //dll路径void RemoteThreadInject(DWORD Pid,PCHAR szPath)
{HANDLE hProcess = 0;DWORD dSizeofszPath = strlen(szPath) + 1;LPVOID pDllPath;HANDLE hThread = 0;//第一步打开指定进程获取到指定进程的句柄hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, Pid);if (!hProcess){cout << "OpenProcess error" << GetLastError() << endl;return;}//第二步在指定进程分配内存pDllPath = VirtualAllocEx(hProcess, NULL, dSizeofszPath, MEM_COMMIT, PAGE_READWRITE);if (!pDllPath){cout << "VirtualAllocEx error" << GetLastError() << endl;return;}//第三步在分配出来的内存地址 写入loadlibiary的参数if (!WriteProcessMemory(hProcess, pDllPath, szPath, dSizeofszPath, NULL)){cout << "WriteProcessMemory error" << GetLastError() << endl;return;}//第四步创建远程线程hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, pDllPath, 0, NULL);if (!hThread){cout << "CreateRemoteThread error" << GetLastError() << endl;return;} 
}int main()
{RemoteThreadInject(25804, szBuffer);}

第一步 使用OpenProcess获取目标进程的句柄   

hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, Pid);if (!hProcess){cout << "OpenProcess error" << GetLastError() << endl;return;}

第二步 使用VirtualAllocEx在指定的进程分配内存

pDllPath = VirtualAllocEx(hProcess, NULL, dSizeofszPath, MEM_COMMIT, PAGE_READWRITE);if (!pDllPath){cout << "VirtualAllocEx error" << GetLastError() << endl;return;}

第三步 使用WriteProcessMemory函数在指定进程写入LoadLibiary的参数pDllPath

if (!WriteProcessMemory(hProcess, pDllPath, szPath, dSizeofszPath, NULL)){cout << "WriteProcessMemory error" << GetLastError() << endl;return;}

第四步 使用CreateRemoteThread线程创建远程线程运行LoadLibiary函数

他和CreateThread的区别就是三个参数的形式

这里要注意一下为什么在我们的进程可以直接使用LoadLibiary的地址呢  因为这个地址是所有进程共享来的 我们得到的地址和他的地址是一样的

hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, pDllPath, 0, NULL);if (!hThread){cout << "CreateRemoteThread error" << GetLastError() << endl;return;} 

相关文章:

  • Vue ①-实例 || 指令
  • Vue-自定义指令
  • PHP下实现RSA的加密,解密,加签和验签
  • 进程间通信(信号量)
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-面试官和面试记录的分享功能(2)
  • Aviator复习
  • 【快速解决】数据库快速导出成sql文件
  • 【Netty系列】实现HTTP文件服务器
  • 【Kotlin】简介变量类接口
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
  • [9-3] 串口发送串口发送+接收 江协科技学习笔记(26个知识点)
  • Kafka 如何保证不重复消费
  • C++中 newdelete 与 mallocfree 的异同详解
  • Matlab数据类型
  • Redis7底层数据结构解析
  • Redis:功能特性和应用场景
  • c++ typeid运算符
  • [Windows] Dism++_Mod系统清理优化利器v10.1.1002.1B绿色魔改版
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 文件事件处理部分)
  • 大数据运维过程中常见的一些操作
  • 郑州网站推广公司排名/cba目前排行
  • 国内最新新闻消息今天的/360优化大师旧版本
  • 临朐县网站建设/关键词歌词表达的意思
  • 用网盘做网站/app推广平台接单渠道
  • 销售平台网站建设/广东病毒感染最新消息
  • 哪个公司做外贸网站好/网络营销的手段包括