读取其他进程的内存-让程序提升Debug权限
最近一直忙着写毕业论文,但对于我这种没语言天赋的人,写写实际做的工作还可以,但要写课题背景、意义什么的,头都要大了,憋了两天才憋出两页的绪论,我容易吗我。。。
所以这半个月也没时间更新博客,现在论文初稿终于写完了,所以来写点东西吧。
这还是要从我写的魔兽改键显血助手WarKey说起。之前的版本因为判断是否是聊天状态的功能不完善,于是我就按网上的说法,用CE(Cheat Engine,专门用于修改游戏内存的工具)搜索了一下魔兽进程的内存内容,找到存储是否处于聊天状态的内存地址。于是,在WarKey中,只需要取到该内存地址的内容,根据其内容来判断是否处于聊天状态,然后决定是否需要改键即可。但实际上,在调用API函数ReadProcessMemory()时,并不能取出其内容,也就是说无论魔兽是否处于聊天状态,ReadProcessMemory()总是调用失败。经查MSDN,发现该函数操作的句柄需要PROCESS_VM_READ访问权限,而这个是由OpenProcess()函数来处理的。OpenProcess()这个函数指定的访问权限的安全描述符比较复杂,但有一句话很给力:If the caller has enabled the SeDebugPrivilege privilege, the requested access is granted regardless of the contents of the security descriptor.也就是说如果调用者具有SeDebugPrivilege权限,那么就不用管什么安全描述符了。于是只需要给程序提升权限,使其具有SeDebugPrivilege权限即可。
关于提升权限的方法,在MSDN里面查了半天,居然找到了一个很给力的例子:
这个例子应该是比较经典的,经过分析之后,于是写出开关Debug权限的函数:
利用这个函数给自己的WarKey开启Debug权限,再访问魔兽进程的内存时,就可以读出其中的数据了。
读取其他进程的内存-让程序提升Debug权限相关推荐
- 进程线程007 进程挂靠与跨进程读写内存
文章目录 进程挂靠 进程与线程的关系 线程与进程如何关联 为什么需要ApcState.Process CR3的值可以随便改吗 分析NtReadVirtualMemory函数 总结 跨进程读写内存 跨进 ...
- 用内存断点找OEP 问题 脱壳时提示无法读取被调试进程的内存 bad dos signature
1. 本文要解决的问题是: 1.什么是内存断点? 2.如何在寻找OEP时使用内存断点. 3.内存断点的局限性. 2.内存断点寻找OEP的原理 i.首先,在OD中内存断点, ...
- Linux程序内存跟踪,分享一款Linux进程和内存活动监视神器
原标题:分享一款Linux进程和内存活动监视神器 像"top "之类的命令行工具使得监视CPU使用率和内存使用率有些困难.这就是我们今天向您介绍vtop的原因, vtop是一个用N ...
- (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。) (Microsoft SQL Server,错误: 233)...
------------------------------ 无法连接到 IFCA-LIUWEI/SQL2005. ------------------------------ 其他信息: 已成功与服 ...
- 【C语言进阶深度学习记录】三十六 程序与进程的区别(程序的内存布局)
上一篇文章学了堆,栈以及静态存储区.它们实际上都是针对进程来说的.那么程序与进程有什么区别呢? 本文不细讲程序与进程. 1 程序与进程 1.1 什么是程序 写完的.c文件是源文件.也叫源代码. 将源代 ...
- 通过WriteProcessMemory改写进程的内存
http://www.cnblogs.com/feiyucq/archive/2009/10/21/1587628.html 以PROCESS_ALL_ACCESS权限打开进程以后既能够使用ReadP ...
- 线程的挂起是错误的概念实际是线程的阻塞,挂起只针对进程,将进程挂起会将进程从内存空间交换到磁盘空间的过程
线程的挂起是错误的概念实际是线程的阻塞 线程的主要状态有运行态,就绪态和阻塞态.挂起态对线程没有什么意义,这是由于此类状态是一个进程级的概念.特别地,如果一个进程被换出,由于它的所有线程都该进程的地址 ...
- 文件读取 linux_Linux 进程、线程、文件描述符的底层原理
说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别. Linux 中的进程其实就是一个数据结构,顺带可以理解文件描述符.重定向.管 ...
- win32进程共享内存
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换. 进程间 ...
最新文章
- 细细品味大数据--初识hadoop
- DELPHI replace into 语句的语法错误 解决方法
- DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略
- ZOJ - 1450 Minimal Circle HDU - 3007 Buried memory 最小圆覆盖模板 【随机函数】【增量法】
- java二维数组的常见初始化
- 20140704笔试面试总结(java)
- 网站地图生成器_10个相见恨晚的PPT网站 让你看一眼就心动
- PPT图片快速编辑技巧
- SpringApplication#run⽅法第5步,打印banner(四)
- 泛函分析复习笔记(二)线性算子与线性泛函
- 关于SiamRPN代码的一些要点
- Java中一个数的N次方
- python中x%y是什么意思_python是什么
- Arduino - PC817C光耦
- js promise的用法
- 对于共享电脑的到来,您有什么想说的
- 成为顶级博主的秘诀是什么?《乘风者周刊》专访“处女座程序猿”牛亚运
- 几种蔬菜帮你降糖 血糖过高的人别错过
- 忘记windows10密码重置密码
- android apk安装工具,APK安装器下载-APK安装器手机版下载v2.9-1 安卓版-西西软件下载...