远程线程注入

news2025/6/3 2:17:51

注入简单来说就是让别人的程序执行 你想要让他执行的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;
	} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2394689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何手搓扫雷(待扩展)

文章目录 一、扫雷游戏分析与设计1.1 扫雷游戏的功能说明1.2 游戏的分析和设计1.2.1 数据结构的分析1.2.2 文件结构设计 二、扫雷游戏的代码实现三、扫雷游戏的扩展总结 一、扫雷游戏分析与设计 扫雷游戏网页版 1.1 扫雷游戏的功能说明 使用控制台&#xff08;黑框框的程序&a…

俄军操作系统 Astra Linux 安装教程

安装 U盘制作 Rufus 写盘工具&#xff1a;https://rufus.ie/ Astra Linux ISO 镜像文件&#xff1a;https://dl.astralinux.ru/astra/stable/2.12_x86-64/iso/ 准备一个8g以上的u盘&#xff0c;打开Rufus写盘工具&#xff0c;选择下载的iso镜像&#xff0c;写入u盘&#xff…

第三方软件评测机构如何助力软件品质提升及企业发展?

第三方软件评测机构与软件开发者及使用者无直接关联&#xff0c;它们提供全方位的检测和公正的评价服务。这样的评测可以展现客观的成效&#xff0c;对提升软件的品质具有显著影响&#xff0c;且在软件产业中发挥着至关重要的角色。 评测的客观性 独立第三方机构与软件开发者…

Python打卡训练营Day40

DAY 40 训练和测试的规范写法 知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#x…

JS逆向案例—喜马拉雅xm-sign详情页爬取

JS逆向案例——喜马拉雅xm-sign详情页爬取 声明网站流程分析总结 声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&am…

STM32CubeMX定时器配置

STM32CubeMX定时器配置 一&#xff0c;Mode界面1&#xff0c;Slave Mode (从模式)2&#xff0c;Trigger Source (触发源) 三&#xff0c;Channelx&#xff08;通道模式&#xff09;1&#xff0c;Input Capture2&#xff0c;Output Compare3&#xff0c;PWM Generation4&#xf…

QNAP MEMOS 域名访问 SSL(Lucky)

注意&#xff1a;下述是通过ssh、docker-compose方式安装docker的&#xff0c;不是直接在container station中安装的哈&#xff01;&#xff01;&#xff01; 一、编辑docker-compose.yml文件 用“#”号标识的&#xff0c;在保存文件的时候建议去掉&#xff0c;不然有时候会出…

如何将多张图组合到一张图里同时保留高的分辨率(用PPT+AdobeAcrobat)

文章目录 一、用PPT排版得到一页排布了很多图片的PPT二、用AdobeAcrobat打开pdf文件三、最后得到的图片 一、用PPT排版得到一页排布了很多图片的PPT 步骤如下 ①将幻灯片大小的长设置为17.2&#xff0c;宽根据图像多少进行调整&#xff0c;我这里是10 幻灯片大小的长设置步骤&…

pycharm找不到高版本conda问题

pycharm找不到高版本conda问题 高版本的condaPycharm不能自动识别&#xff0c;需要手动添加。 首先打开你要添加的conda环境win的话在conda终端输入 where conda查找conda的可执行文件位置 进入Pycharm设置&#xff0c;点击添加解释器&#xff0c;点击加载环境&#xff0c;…

2025年上半年软考系统架构设计师--案例分析试题与答案

必选题一:大模型训练系统 某公司开发一个在线大模型训练平台&#xff0c;支持 Python 代码编写、模型训练和部署,用户通过 python 编写模型代码,将代码交给系统进行模型代码的解析,最终由系统匹配相应的计算机资源进行输出&#xff0c;用户不需要关心底层硬件平台。 a.系统发生…

Eclipse 插件开发 5.2 编辑器 获取当前编辑器

Eclipse 插件开发 5.2 编辑器 获取当前编辑器 1 获取活跃编辑器2 获取全部编辑器 Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Click1 Bundle-SymbolicName: com.xu.click1;singleton:true Bundle-Version: 1.0.0 Bundle-Activator: com.xu.click1.Activato…

Visual Studio 的下载安装

下载 官网&#xff1a;https://visualstudio.microsoft.com/zh-hans/ 点击免费 Visual Studio。 点击 Visual Studio Community 下的免费下载。 保留并下载。 安装 双击下载的 exe 安装文件&#xff0c;点击继续。 等他下载安装完。 选择你要下载的组件(我只勾了一个 .NET 桌…

苍茫命令行:linux模拟实现,书写微型bash

文章目录 &#x1f307;前言2、需求分析3、基本框架4、核心内容4.2、指令分割4.3、程序替换 5、特殊情况处理5.2、内建命令5.3、cd5.4、export5.5、echo5.6、重定向 6、源码 &#x1f307;前言 Linux 系统主要分为内核(kernel)和 外壳(shell)&#xff0c;普通用户是无法接触到…

虚拟DOM和DOM是什么?有什么区别?虚拟DOM的优点是什么?

虚拟DOM与真实DOM的概念 虚拟DOM&#xff08;Virtual DOM&#xff09;是一种对真实DOM的抽象表示&#xff0c;其结构通常为一个JavaScript对象&#xff0c;保存了DOM节点的标签、属性、子节点等信息。真实DOM则是浏览器中的实际文档对象模型&#xff0c;由HTML代码解析生成&am…

累加法求数列通项公式

文章目录 前言如何判断注意事项适用类型方法介绍典例剖析对应练习 前言 累加法&#xff0c;顾名思义&#xff0c;就是多次相加的意思。求通项公式题型中&#xff0c;如果给定条件最终可以转化为 a n 1 − a n f ( n ) a_{n1}-a_nf(n) an1​−an​f(n)的形式&#xff0c;或者…

鸿蒙NEXT应用加固工具哪家更好?国内主流的6款对比

随着鸿蒙NEXT系统的推进&#xff0c;越来越多企业将目光投向鸿蒙生态下的应用部署与数据安全。尤其是在核心业务App逐步上架鸿蒙原生平台的当下&#xff0c;如何实现高效、可靠的鸿蒙NEXT应用安全加固&#xff0c;已成为企业技术选型的关键环节。本文将对市面上6款主流的鸿蒙NE…

[特殊字符]《计算机组成原理》第 8 章 - CPU 的结构和功能

&#x1f535;8.1 CPU 的结构 &#x1f535;8.1.1 CPU 的功能 CPU&#xff08;中央处理器&#xff09;是计算机的核心部件&#xff0c;主要负责以下任务&#xff1a; 指令执行&#xff1a;解析并执行指令集架构&#xff08;ISA&#xff09;定义的指令数据处理&#xff1a;完…

OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序

一、软件介绍 文末提供程序和源码下载 OramaCore 是您的项目、答案引擎、副驾驶和搜索所需的 AI 运行时。 它包括一个成熟的全文搜索引擎、矢量数据库、LLM具有行动计划和推理功能的接口、用于根据数据编写和运行您自己的自定义代理的 JavaScript 运行时&#xff0c;以及更多…

OpenCV CUDA模块图像处理------颜色空间处理之GPU 上交换图像的通道顺序函数swapChannels()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于在 GPU 上交换图像的通道顺序&#xff08;例如将 BGR 图像转为 RGB&#xff09;。 它适用于多通道图像&#xff08;如 3 通道或 4 通道…

回归任务损失函数对比曲线

回归任务损失函数曲线可视化对比 本节将可视化对比均方误差&#xff08;MSE&#xff09;、平均绝对误差&#xff08;MAE&#xff09;、Huber损失函数三种常见回归任务损失函数的曲线&#xff0c;帮助理解它们在不同误差区间的表现差异。 1. 导入所需库 我们需要用到 numpy 进…