易语言读写内存操作详解

1、函数原型:

BOOL ReadProcessMemory(

  HANDLE hProcess,

  PVOID pvAddressRemote,

  PVOID pvBufferLocal,

  DWORD dwSize,

  PDWORD pdwNumBytesRead

  );

2、参数说明:

  hProcess [in]                   远程进程句柄。被读取者

  pvAddressRemote [in]  远程进程中内存地址。 从具体何处读取

  pvBufferLocal [out]         本地进程中内存地址.函数将读取的内容写入此处

  dwSize [in]                       要传送字节数。要写入多少

  pdwNumBytesRead [out]实际传送字节数. 函数返回时报告实际写入多少

3、以语言中参数说明:

      在以语言中,HANDLE、DWORD、LONG、INT.... 都可以用 整数型 替代,易语言不存在VOID数据类型,懂点C++的都知道,VOID指空型,可以用来替代任何数据类型,但是在这里,VOID主要指用来存储一个不确定的数据类型,可以是任何一个。如:在写DLL函数时,将VOID对应的位置写为整数型也是不会出错的,当然对于参数LPVOID lpBuffer,我们不可能一直用来存储整数型数据,所以,当我们想读取(写入)什么数据类型的数据时,就行此位置写入对应的数据类型,无论从理论还是实际来说,这都是没有错误的,可以大胆使用

      但是,这种方法无疑增加了程序的复杂性和不通用性。在易语言中,字节集数据可以向其他任何数据类型转换,考虑到这一点,我们也可以先用字节集数据类型填充,然后再将字节集数据转换为其他想要的数据类型。这种方法具有通用性。基本方式如下:

 

        在易语言中通过这种方式给予调用,需要注意的是:字节集数据必须通过取空白字节集(N)命令事先得到一段空白内存,然后在操作,否则或出现很多不可预知的问题!

 

最后,给出一个简单的读整数型的例子:

 

 

这是不是很简单啊!呵呵,当然写内存也是同样的办法!直接看例子:

 

 

 

好了,简简单单地就可以方便读写内存啦!

PS:能力有限,许多地方只是个人探索,错误之处望不吝赐教!!O(∩_∩)O~

 

 

 


相关推荐
语言速度最快的内存搜索算法.版本 2 .支持库 spec .子程序 _临时子程序 .局部变量 bin, 字节集 .局部变量 ptr, 整数型 .局部变量 find, 字节型 ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。 bin = { 1, 2, 3, 4, 5, 2, 6 } find = 2 ptr = Pbin (bin) 调试输出 (ptr) 调试输出 (Mem_ByteIndexOf (ptr, Bin_Len (bin), find)) 调试输出 (Mem_ByteLastIndexOf (ptr, Bin_Len (bin), find)) .子程序 Mem_ByteIndexOf, 整数型, 公开, 寻找字节,成功返回非 0 指针 .参数 pMem, 整数型, , (pMem ≠ 0) .参数 length, 整数型, , (length > 0) .参数 byte, 字节型 .如果 (pMem ≠ 0)     返回 (Mem_Private_ByteIndexOf (pMem, length, byte)) .否则     返回 (0) .如果结束 .子程序 Mem_ByteLastIndexOf, 整数型, 公开, 倒找字节,成功返回非 0 指针 .参数 pMem, 整数型, , (pMem ≠ 0) .参数 length, 整数型, , (length > 0) .参数 byte, 字节型 .如果 (pMem ≠ 0)     返回 (Mem_Private_ByteLastIndexOf (pMem, length, byte)) .否则     返回 (0) .如果结束 .子程序 Mem_Private_ByteIndexOf, 整数型 .参数 pMem, 整数型, , 不可为 0 .参数 length, 整数型, , 有大于 0 判断 .参数 byte, 字节型 置入代码 ({ 83, 86, 139, 69, 8, 139, 117, 12, 15, 182, 77, 16, 131, 254, 4, 124, 79, 131, 230, 3, 43, 117, 12, 43, 198, 139, 217, 193, 225, 8, 11, 203, 139, 217, 193, 225, 16, 11, 217, 139, 12, 48, 51, 203, 186, 255, 254, 254, 126, 3, 209, 247, 209, 51, 202, 247, 193, 0, 1, 1, 129, 116, 22, 139, 12, 48, 58, 203, 116, 47, 56, 253, 116, 51, 193, 233, 16, 58, 203, 116, 55, 56, 253, 116, 62, 131, 198, 4, 117, 205, 139, 117, 12, 131, 230, 3, 131, 254, 0, 126, 8, 58, 24, 116, 6, 64, 78, 235, 243, 51, 192, 94, 91, 201, 194, 12, 0, 3, 198, 94, 91, 201, 194, 12, 0, 3, 198, 131, 192, 1, 94, 91, 201, 194, 12, 0, 3, 198, 131, 192, 2, 94, 91, 201, 194, 12, 0, 3, 198, 131, 192, 3, 94, 91, 201, 194, 12, 0 }) 返回 (0) .子程序 Mem_Private_ByteLastIndexOf, 整数型 .参数 pMem, 整数型, , 不可为 0 .参数 length, 整数型, , 有大于 0 判断 .参数 byte, 字节型 置入代码 ({ 139, 85, 12, 131, 250, 0, 126, 16, 139, 69, 8, 72, 15, 182, 77, 16, 58, 12, 16, 116, 9, 74, 117, 248, 51, 192, 201, 194, 12, 0, 3, 194, 201, 194, 12, 0 }) 返回 (0) .子程序 Pbin, 整数型, 公开, 取字节集变量指针 .参数 bin, 字节集, 参考 置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 3, 131, 192, 8, 201, 194, 4, 0 }) 返回 (0) .子程序 Bin_Len, 整数型, 公开, 取字节集长度 .参数 bytes, 字节集 置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 3, 139, 64, 4, 201, 194, 4, 0 }) 返回 (0)
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页