💰 FindStringEx 搜索字符串Ex
🎯功能
搜索指定的字符串
📜语法
结果 = dm.FindStringEx(句柄, 地址集合, 文本, 类型, 步长, 多线程, 模式)
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
句柄 | 整型数 | 指定搜索的窗口句柄或者进程ID. 默认是窗口句柄. 如果要指定为进程ID,需要调用SetMemoryHwndAsProcessId |
地址集合 | 字符串 | 指定搜索的地址集合,这个地方可以是上次FindXXX 的返回地址集合,可以进行二次搜索(类似CE的再次扫描); 如果要进行地址范围搜索,那么这个值为的形如如下(类似于CE的新搜索)"00400000-7FFFFFFF" "80000000-BFFFFFFF" "00000000-FFFFFFFF" 等 |
文本 | 字符串 | 搜索的字符串内容 |
类型 | 整型数 | 搜索的字符串类型; 0 :Ascii字符串, 1 :Unicode字符串, 2 :UTF8字符串; 其中2 是💰付费功能 |
步长 | 整型数 | 每次搜索的步长 |
多线程 | 整型数 | 表示是否开启多线程查找; 0 :关闭, 1 :开启; 开启多线程查找速度较快,但会耗费较多CPU资源. 不开启速度较慢,但节省CPU |
模式 | 整型数 | 0 :扫描全部内存类型, 1 :快速扫描(略过只读内存) |
📤返回
字符串
, 返回搜索到的地址集合,地址格式如下:"addr1|addr2|addr3…|addrn"
; 比如"400050|423435|453430"
, 如果要想知道函数是否执行成功,请查看GetLastError
函数.
💡示例
// 全局搜索
result = dm.FindStringEx(hwnd,"00000000-FFFFFFFF","哈哈哈哈",0,2,1,1)
if len(result) = 0 then
MessageBox "找不到"
EndScript
end if
result = split(result,"|")
count = ubound(result)+1
MessageBox "找到"&count&"个地址"
📘备注
如果目标窗口的绑定属性中有dx.public.memory
,并且是用本对象来绑定的,那么操作方式是直接进入目标进程读写.
dx.public.memory
可突破部分窗口读写保护. 如果正常方式无法读写,可以尝试此属性。另外DmGuard
中的memory
护盾也可以突破部分窗口内存保护,可以尝试使用。