当前打开有记事本;使用winhex来看一下内存搜索;能不能搜到记事本中的文本;
如下图,选择 Tools - Open Memory... 菜单;
列出进程;
提示只有64位版本才能显示模块或进程名;当前是按进程ID显示;
使用power shell查看一下记事本进程的ID;当前打开2个记事本,ID如下图;2488,7700;
powershell由进程名查看进程ID的方法:
利用管道 赋值给$id
$id = Get-Process -name explorer* | Select-Object id | ForEach-Object -Process{$_.id}
$id
第一个记事本是2488,展开菜单,有三个内存查看选项;
双击 Primary memory;提示:只有注册版才能编辑内存,当前只能查看;
进入到2488号进程的主内存;Offset列是地址,然后是内存内容,然后是内存各种属性,如分配的尺寸、基址等;
第一个记事本包含一些文本,其中有"电话沟通了一下";
在查找对话框输入此段文本,然后搜索;
找不到;
再点击菜单 Find Hex Value,弹出如下对话框;
输入文本,点击 OK 搜索;弹出如下提示;
搜索十六进制值必须输入十六进制,要先转换为十六进制输入才行;
再搜索文本,把下拉选项改为Unicode,前面是ASCII;
再搜;还是搜不到;
根据相关资料有:
缓冲区是UNICODE的。
Winhex提供了搜索十六进制数值和文本字符的功能,在搜索文件字符时需要注意的是,要设置搜索的目标是ASCII字符还是Unicode字符;另外需要注意的是,Winhex对中文字符支持尚有不足,使用Winhex搜索汉字时很多时候无法找到并定位。
然后在第一个记事本输入一串英文:testbybo;
然后搜索这段文本;
这就找到了;如下图;地址 00398380 这一行;
查一下 电话沟通 这几个汉字的Unicode编码;如下:
\u7535\u8bdd\u6c9f\u901a
输入这些Unicode编码,再搜;还是搜不到;