易语言 如何读取所有进程内存地址里的数据

易语言 如何读取所有进程内存地址里的数据,第1张

创建一个取进程ID的变量 全局变量(假设变量名是AA)

在启动窗口创建完毕写(需要超级模块或者其他模块):AA=取进程ID(“abcexe”)'假设进程是abcexe

然后代码就是:写内存整数型()这个代码;还有很多种;比较常用的就是这个

不能这样读,你读的内存具有保护属性,产生了非法访问。

如果要读其他进程的内存数据,可以调用WINDOWS API 函数ReadProcessMemory

当然,读取的内存必须具有可读的属性。

我觉得你的方法没什么问题。如果你给的地址获取的是对的的话,你看看乱码是不是因为这个:你的确读取到了8个字节,4个字符;但是显示的时候因为不知道字符串结束位置,导致messagebox显示的是乱码。你可以看看name中的8个字节的数据到底是不是4个字符的unicode码,或者先把name分配的空间给初始化为0之后再进行后续的函数调用,这样就不存在不知道结束位置在哪儿的问题了。

希望有帮助。

ByVal是传值,Byref是传址,可以ByVal 直接数,也可以ByVal 变量,&H是16进制的意思

ByVal &HCFD3D4就是直接把16进制数CFD3D4传递给调用函数,如果不加ByVal,缺省是Byref,也就是传递该数值所在的地址,结果当然就完全不一样了,如果用变量:

Dim m As Long

m = &HCFD3D4

ReadProcessMemory pHandle, ByVal m, life, 4, 0&

使用API函数

ReadProcessMemory

原型:

Private

Declare

Function

ReadProcessMemory

Lib

"kernel32"

(ByVal

hProcess

As

Long,

ByVal

lpBaseAddress

As

Any,

ByVal

lpBuffer

As

Any,

ByVal

nSize

As

Long,

lpNumberOfBytesWritten

As

Long)

As

Long

说明:

ByVal

hProcess

As

Long,

是打开的进程的句柄

ByVal

lpBaseAddress

As

Any,

是进程的地址

ByVal

lpBuffer

As

Any,

是数据的存放地址

ByVal

nSize

As

Long,

是你想要读取的数据的长度

lpNumberOfBytesWritten

As

Long

是实际读取的数据的长度

以上就是关于易语言 如何读取所有进程内存地址里的数据全部的内容,包括:易语言 如何读取所有进程内存地址里的数据、怎样通过程序读内存地址中的值、请教下跨进程内存读取问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9500335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存