WinDBG中条件字符串设断点

以我在notepad.exe中设置CreateFileW特定文件名断点为例。

bp kernel32!CreateFileW "r $t1=poi(esp+4);as /mu $FileName $t1;.block{.if($sicmp(\"${$FileName}\",\"C:\\abc.txt\")!=0){.echo c:\\abc.txt}.else{.echo nonono;gc}}"

bp kernel32!CreateFileW "r $t1=poi(esp+4);as /mu $FileName $t1;.block{.if($spat(\"${$FileName}\",\"*abc.txt\")!=0){.echo c:\\abc.txt}.else{.echo nonono;gc}}"

bp kernel32!CreateFileW "r $t1=poi(esp+4);as /mu $FileName $t1;.block{.if($scmp(\"${$FileName}\",\"*abc.txt\")!=0){.echo c:\\abc.txt}.else{.echo nonono;gc}}"

解释: 1..echo命令显示注释字符串 如:.echo String

2.r $t1=poi(esp+4),poi(esp+4)取地址的值,并赋给伪寄存器$t1 ;

3.as /mu $FileName $t1 ,定义$t1 所指地址一个别名$FileName,用来在下面的$spat中使用。/mu代表Unicode字符串,/ma代表ASCII字符串;

4.scmp/sicmp/spat进行字符串比较,scmp大小写敏感;sicmp不区分大小写;spat模糊匹配,用*代替模糊词组;

5..block:代码块

bp CreateFileW "du /c 50 poi(@esp+4) ;gc"打印出断点函数的第一个参数内容;

时间: 2024-11-05 18:45:50

WinDBG中条件字符串设断点的相关文章

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我

Java中的字符串常量池

最近做到一个题目: 问题:String str = new String("abc"),"abc"在内存中是怎么分配的?    答案是:堆,字符串常量区. 题目考查的为Java中的字符串常量池和JVM运行时数据区的相关概念."abc"为字面量对象,其存储在堆内存中.而字符串常量池则存储的是字符串对象的一个引用. Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid&qu

shell中条件判断if中的-z到-d的意思

shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ -d FILE ] 如果 FILE 存在且是一个目录则为真. [ -e FILE ] 如果 FILE 存在则为真. [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真. [ -g FILE ] 如果 FILE 存在且已经设置了SGID则

Shell中条件判断语法与判断条件

一,简介 Shell各种判断结构和运算符的用法是shell编程的基础,了解shell的判断.运算符和一些退出状态 对后面的学习有很重要的影响.shell有一个内部命令test经常用于对判断语句 进行测试一种或几种状态的条件是否成立 二. 判断条件 (1)Linux的shell中的测试命令,用于测试某种条件或某几种条件是否真实存在 测试命令是判断语句和循环语句中条件测试的工具,对判断和运算符的比较测试有很大的帮助. (2)测试条件为真,返回一个0值:      为假,返回一个非0整数值 测试命令有

【转】BAT批处理中的字符串处理详解(字符串截取)

下面对这些功能一一进行讲解. 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符.举例说明其基本功能: @echo off set ifo=abcdefghijklmnopqrstuvwxyz0123456789 echo 原字符串(第二行为各字符的序号): echo %ifo% echo 123456789012345678901234567890123456 echo 截取前5个字符: echo %ifo:~0,5% ech

(转)Delphi 中的字符串

一.Delphi 2009 之前的字符串(不支持 Unicode): Delphi 2009 之前的字符串分为 3 种:ShortString.AnsiString.WideString. [ShortString] ShortString 是一种比较古老的 Pascal 字符串格式,它最多只能容纳 255 个字节的字符.当我们声明一个 ShortString 类型的变量时,Delphi 会自动申请 256 个字节的内存空间给该变量,其中第一个字节用来存放字符串的长度,后面的 255 个字节用来

objective C中的字符串(三)

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7343561 objective C中的字符串操作 在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的操作字符串,下面举几个例子: 1.创建: 直接利用等号赋值 NSString *

Makefile 中条件表达式 以及函数

Makefile中条件表达式的语法为: <conditional-directive> <text-if-true> endif 或者 <conditional-directive> <text-if-true> else <text-if-false> endif <conditional-directive> 表示条件关键字: 关键字    说明 ifeq ifeq (arg1,arg2)       比较参数arg1和arg2的

Linux命令行批量替换多文件中的字符串【转】

Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串.sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` 例如:我要把mahuinan替换为huinanma, 执行命令:sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www' 这是目