能力值:
( LV3,RANK:20 )
2 楼
ad * 清一下别名
能力值:
( LV4,RANK:50 )
3 楼
清了之后,启动calc.exe都断不下来了啊,但输出$spat()比较的结果又没问题啊~(如图所示)
bp命令如下:
bp kernel32!CreateProcessW "r @$t1=@rcx;
as /mu ${/v:pszKC} @$t1;
.if($spat(\"${pszKC}\", \"*calc.exe\")){du @rcx; kv; ad ${/v:pszKC}}
.else{? $spat(\"${pszKC}\", \"*calc.exe\"); du rcx; ad ${/v:pszKC};gc}"
上传的附件:
能力值:
( LV4,RANK:50 )
4 楼
设置两个断点,第一个处理别名,第二个真断,测试可以直接断下来,没有出现断在下一个的问题!
bp kernel32!CreateProcessW "r @$t1=poi(esp+4); as /mu ${/v:pszCP} @$t1; gc"
bp kernel32!CreateProcessW+2 ".if($spat(\"${pszCP}\", \"*epad.exe\")){kv; du @$t1} .else{gc}"
能力值:
( LV3,RANK:20 )
5 楼
bu kernel32!CreateProcessW "r @$t1=poi(esp+8);
as /mu pszKC @$t1;
.block
{
.if( $spat(${pszKC}, \"*calc.exe\"))
{
.echo; .printf \"Stop Process:%mu \r\n\",@$t1;
ad *;
}
.else
{
.echo; .printf \"Pass Process:%mu \r\n\",@$t1;
ad *;
gc;
}
}"
能力值:
( LV3,RANK:20 )
6 楼
保存到1.txt
然后 $$><c:\1.txt
能力值:
( LV4,RANK:50 )
7 楼
非常感谢,确实得放在.block{}中,还有一个疑惑,就是为什么每次需要ad*清一下别名,不是如果别名已经定义,再定义就会重新定义吗“If Name is already the name of an existing alias, that alias is redefined.“
能力值:
( LV3,RANK:20 )
8 楼
为了别名干净。
as /mu pszKC @$t1;
个人经验,有时候@t1内字符串回赋值不到pszKC中。
能力值:
( LV4,RANK:50 )
9 楼
我试了好多次,确实得清别名,不清的话,每次都断在下一次~
还有我今天又遇到了一个问题:
就是比如我按照上面设置createfile的条件断点如下:
bp kernel32!CreateFileW "
as /mu ${/v:filename} poi(esp+4);
.block{
.if ($sicmp(\"${filename}\", \"c:\\1.txt\") == 0){
.echo \"open 1.txt\";
r
}
}
ad ${/v:filename};
gc;
"
但当我打开C盘时,又出了问题
,此时的filename为C:\,此时$sicmp(\"${filename}\", \"c:\\1.txt\")
就相当于$sicmp("C:\", "C:\1.txt"),此时C:\"中的\"会转义成",因此会出现$sicmp语句
会出现语法错误,请问有什么办法解决没,尝试在"${filename}"加@禁止转义,但仍有
问题。
加@的方法可以解决下面的问题,如:
$sicmp(@"C:\", @"c:\1.txt")此时是正确的,但由于在设置条件断点时,后面的语句本身在
""里面,所以@的方式似乎不行。
不知道有没有解决的好方法。
能力值:
( LV2,RANK:10 )
10 楼
373K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3j5i4g2@1L8$3S2S2j5$3E0W2M7W2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3y4o6V1H3y4K6j5@1y4U0p5`.