createprocess error=2_CreateProcess

createprocess error=2_CreateProcessOpenProcess函数声明如下,失败则返回NULL(0,也就是false)#include<Windows.h>HANDLEOpenProcess(DWORDdesiredAccess,//读取权限BOOLblnheritHandle,//是否继承DWORDprocessId//想要读取的PID)代码示例,注意下面的代码可能运行失败,请按照如下设置VS右键项目名(例如ConsoleApplication123)->属性->配置属性(注意左上角是活动D

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

OpenProcess函数声明如下,失败则返回NULL(0,也就是false)

#include <Windows.h>
HANDLE OpenProcess
(
DWORD desiredAccess,//读取权限
BOOL blnheritHandle,//是否继承
DWORD processId//想要读取的PID
)

代码示例,注意下面的代码可能运行失败,请按照如下设置VS
右键项目名(例如ConsoleApplication123)->属性->配置属性(注意左上角是活动Debug/Debug/Release/所有配置,比如选了Release则在Debug下无效)->链接器->清单文件->UAC执行级别->requireAdministrator
然后关闭visual studio,以管理员身份运行visual studio

#include <iostream>
#include <Windows.h>

int main() { 
   
	int pid;
	std::cout << "输入PID" << std::endl;//46044
	std::cin >> pid;
	HANDLE handler=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
	if (handler) { 
   
		std::cout << "获取句柄成功" << std::endl;
	}
	else { 
   
		std::cout << "获取句柄失败" << std::endl;
	}
}

ReadProcessMemory函数声明如下,成功true失败返回false

BOOL ReadProcessMemory
(
HANDLE process,//要读取的句柄
LPCVOID baseAddress,//要读取的地址(我个人觉得就是相对于HANDLE的偏移地址)
LPVOID buffer,//要把读到的数据放到buffer,这是个指针
SIZE_T size,//要读取的数据字节大小
SIZE_T *readSize//接受到的数据大小,可为NULL
)

示例代码,配合OpenProcess使用

#include <iostream>
#include <Windows.h>

int main() { 
   
	int pid;
	std::cout << "输入PID" << std::endl;//46044
	std::cin >> pid;
	HANDLE handler=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
	if (handler) { 
   
		std::cout << "获取句柄成功" << std::endl;
		int a = 0;
		BOOL result = ReadProcessMemory(handler,(LPCVOID)0x4cef18,&a,4,NULL);
		if (result) { 
   
			std::cout << "读取数据成功:"<<a << std::endl;
		}
		else { 
   
			std::cout << "读取数据失败" << std::endl;
		}
	}
	else { 
   
		std::cout << "获取句柄失败" << std::endl;
	}
}

WriteProcessMemory函数声明如下,成功true失败返回false

BOOL ReadProcessMemory
(
HANDLE process,//要写入的句柄
LPVOID baseAddress,//要写入的地址,注意不是LPCVOID(多个C)
LPCVOID buffer,//要写入的数据指针
SIZE_T size,//要写入的数据字节大小
SIZE_T *readSize//实际写入的数据大小,可为NULL
)

示例代码,配合OpenProcess使用

#include <iostream>
#include <Windows.h>

int main() { 
   
	int pid;
	std::cout << "输入PID" << std::endl;//46044
	std::cin >> pid;
	HANDLE handler=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
	if (handler) { 
   
		std::cout << "获取句柄成功" << std::endl;
		int a = 666;
		while (1) { 
   
			BOOL result = WriteProcessMemory(handler, (LPVOID)0x4cef18, &a, 4, NULL);
			if (result) { 
   
				std::cout << "写入数据666" << std::endl;
			}
			Sleep(1000);//延迟1000毫秒
		}
		
	}
	else { 
   
		std::cout << "获取句柄失败" << std::endl;
	}
}

VirtualAllocEx函数
在指定的线程中开辟内存,下面的示例表示开辟1000个字节的内存(实际上是1000/页大小)

LPVOID lpvoid=VirtualAllocEx(handler, 0, 1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
std::cout << lpvoid << (char)10;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194599.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中&0xFF是什么意思?计算机的原码、补码和反码

    Java中&0xFF是什么意思?计算机的原码、补码和反码公司项目中有向MCU发数据的代码,新来的同事对其中的&0xFF很不理解,我解释了很多遍他还是蒙圈状态,可能我的表达能力太差,想想还是用一篇博客来详细说明吧,代码如下:更新:07月10日,有个小伙伴对这种操作各种不习惯,怎么解释他都想不明白,所以增加了代码注释为什么要加上“&0xFF”?拆分理解下0xFF是16进制的表达方式,F是15;十进制为:255,二进制为:11111111

    2022年6月19日
    845
  • Conda命令 + 安装tensorflow

    Conda命令 + 安装tensorflow什么是conda?conda是开源包(packages)和虚拟环境(environment)的管理系统。**packages管理:**可以使用conda来安装、更新、卸载工具包,并且它更关注于数据科学相关的工具包。在安装anaconda时就预先集成了像Numpy、Scipy、pandas、Scikit-learn这些在数据分析中常用的包。另外值得一提的是,cond…

    2022年4月19日
    152
  • cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)「建议收藏」

    cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)「建议收藏」我的需求功能:在手机端实现上传头像,带裁剪框。cropper.js通过canvas实现图片裁剪,最后在通过canvas获取裁剪区域的图片base64串。cropper文档:官方文档是全英文的,好吧我看不懂。只能一个个试试效果,就有了下面的总结。官方文档&lt;-点这1.container容器2.canvas图片3.crop裁剪框option相…

    2022年5月27日
    31
  • 写代码有这16个好习惯,可以减少80%非业务的bug[通俗易懂]

    写代码有这16个好习惯,可以减少80%非业务的bug

    2022年2月17日
    43
  • Informatica ETL开发入门实例

    Informatica ETL开发入门实例Informatica客户端工具:5个Designer——定义源及目标结构设计转换规则,生成ETL映射RepositoryManager——元数据资料库,依赖性分析,安全性管理等RepositoryServerAdministratorConsole——Repository的建立与维护WorkflowManager——合理的实现复杂的ETL工作流基于时间或事件的作业高度WorkflowMonitor——监控workflow和session,生成工作日志及报告…

    2022年6月11日
    33
  • ggplot2是什么_r语言ggplot2

    ggplot2是什么_r语言ggplot2ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念。当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理。本文主要对ggplot2的可视化理念及开发套路做

    2022年8月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号