命令如下:
bp kernel32!CreateFileW "as /mu $FileName poi(@esp+0x4);.block{r @$t0=$scmp(@\"$FileName\", @\"C:\\Test\\1.txt\");.if(0!=@$t0){gc;}}"
1. as /mu $FileName poi(@esp+0x4);
取CreateFileW的第一个参数,作为别名 $FileName
2. r @$t0=$scmp(@\"$FileName\", @\"C:\\Test\\1.txt\");
把文件名与字符串 "C:\\Test\\1.txt"对比,结果存放在$t0寄存器
3. .if(0!=@$t0){gc;}
比对结果不为0,gc继续执行;即字符串相同break
使用时须注意以下几点:
1.必须在使用别名前,先用ad命令把别名删除掉(否则断点会失败,ad用法与bd,bc等相同),al命令查看所有别名。
2.必须使用block语句块,否则断点无效。
3.scmp/sicmp/spat进行字符串比较,scmp大小写敏感;sicmp不区分大小写;spat模糊匹配,用*代替模糊词组。
4.poi(address) 取值,此断点仅用于x86环境,x64环境改 poi(@esp+0x4) 为 poi(@rcx) ,代表一个参数pFilePath。