函数简介:
读取指定地址的二进制数据,只不过返回的是内存地址,而不是字符串.适合高级用户.
函数原型:
long ReadDataToBin(hwnd,addr,len)
参数定义:
hwnd 整形数: 窗口句柄或者进程ID. 默认是窗口句柄. 如果要指定为进程ID,需要调用SetMemoryHwndAsProcessId.
addr 字符串: 用字符串来描述地址,类似于CE的地址描述,数值必须是16进制,里面可以用[ ] + -这些符号来描述一个地址。+表示地址加,-表示地址减
模块名必须用<>符号来圈起来
例如:
1. "4DA678" 最简单的方式,用绝对数值来表示地址
2. "<360SE.exe>+DA678" 相对简单的方式,只是这里用模块名来决定模块基址,后面的是偏移
3.
"[4DA678]+
4.
"[<360SE.exe>+DA678]+
5.
"[[[<360SE.exe>+DA678]+
总之熟悉CE的人 应该对这个地址描述都很熟悉,我就不多举例了
len 整形数: 二进制数据的长度
返回值:
整形数:
读取到的数据指针. 返回0表示读取失败.
如果要想知道函数是否执行成功,请查看GetLastError函数.
示例:
value =
dm.ReadDataToBin(hwnd,"4DA678",10)
MessageBox value
注: DmGuard中的memory护盾也可以突破部分窗口内存保护,可以尝试使用。
需要注意的是,调用此接口获取的数据指针保存在当前对象中,到下次调用此接口时,内部就会释放.
哪怕是转成字节集,这个地址也还是在此字节集中使用. 如果您要此地址一直有效,那么您需要自己拷贝字节集到自己的字节集中.