findall

在内存页面中查找模式的所有匹配项。

参数

arg1 起始搜索地址。请注意,搜索将在该地址所在内存页面结束时停止。这意味着您无法在不枚举内存页面的情况下搜索整个进程内存。您可以使用 findallmem 在整个内存中搜索模式。

arg2 要搜索的字节模式。此字节模式可以包含通配符 (?),例如:EB0?90??8D。您可以在此处使用字符串格式化

[arg3] 要搜索的数据大小。默认为内存区域的大小。

结果

$result 设置为匹配项的数量。

示例

在 CIP 所在内存页面中搜索模式的所有匹配项:

findall mem.base(cip), "0FA2 E8 ???????? C3"

在栈内存页面中搜索 cax 值的所有匹配项:

findall mem.base(csp), "{bswap@cax}"

备注

可以通过 ref.addr 表达式函数 在脚本中遍历参考视图的内容:

i = 0
loop:
  addr = ref.addr(i)
  log "reference {d:i} = {p:addr}"
  i++
  cmp i, ref.count()
  jne loop