函数简介:
搜索指定的二进制数据. <收费功能,具体详情点击查看>.
函数原型:
string FindDataEx(hwnd, addr_range, data,step,multi_thread,mode)
参数定义:
hwnd 整形数: 指定搜索的窗口句柄或者进程ID. 默认是窗口句柄. 如果要指定为进程ID,需要调用SetMemoryHwndAsProcessId.
addr_range 字符串: 指定搜索的地址集合,字符串类型,这个地方可以是上次FindXXX的返回地址集合,可以进行二次搜索.(类似CE的再次扫描)
如果要进行地址范围搜索,那么这个值为的形如如下(类似于CE的新搜索)
"00400000-7FFFFFFF"
"80000000-BFFFFFFF" "00000000-FFFFFFFF" 等.
data 字符串: 要搜索的二进制数据 以字符串的形式描述
比如"00 01 23 45 67 86 ab ce f1"等
这里也可以支持模糊查找,用??来代替单个字节. 比如"00 01 ?? ?? 67 86
?? ce f1"等.
step 整形数: 搜索步长.
multi_thread整形数:表示是否开启多线程查找. 0不开启,1开启.
开启多线程查找速度较快,但会耗费较多CPU资源.
不开启速度较慢,但节省CPU.
mode 整形数: 1 表示开启快速扫描(略过只读内存) 0表示所有内存类型全部扫描.
返回值:
字符串:
返回搜索到的地址集合,地址格式如下:
"addr1|addr2|addr3…|addrn"
比如"400050|423435|453430"
示例:
// 全局搜索
result = dm.FindDataEx(hwnd,"00000000-FFFFFFFF","00
01 23 45 67 86 ab ce
f1",4,1,0)
if len(result) = 0 then
MessageBox "找不到"
EndScript
end if
result = split(result,"|")
count = ubound(result)+1
MessageBox "找到"&count&"个地址"
注: 如果目标窗口的绑定属性中有dx.public.memory,并且是用本对象来绑定的,那么操作方式是直接进入目标进程读写.
dx.public.memory可突破部分窗口读写保护. 如果正常方式无法读写,可以尝试此属性。