`
bcyy
  • 浏览: 1942609 次
文章分类
社区版块
存档分类
最新评论

windbg字符串比较条件断点

 
阅读更多

windbg字符串比较条件断点

目的:

当寄存器指向字符串为与某个字符串相同时,断下程序。

问题关键:

需要把寄存器指向的字符串取出来比较,而别名可以做到这一点。

测试源码:

void main()
{
	char buf[] = "shengfu";
	char* p = buf;

	__asm mov eax, p
}

断点:

1e0040141f[e:\hello\test2\test2.cpp@30]0001(0001)0:****test2!main+0x3f"$><e:/script.txt"

脚本e:/script.txt内容如下:

as /ma TMS_LI	eax

.block
{
	.if ( $scmp("TMS_LI", "shengfu") == 0 )
	{	
	}
	.else
	{
		gc
	}
}

说明:

1.as/maTMS_LI eax表示为eax取了一个别名TMS_LI,/ma表示TMS_LI是以eax为首地址的ascz字符串

2.加个.block的原因是,别名要在block才生效,这个比较变态,文档中貌似没有,国外一高手说的http://analyze-v.com/?p=765

3.下断点加入"$><e:/script.txt"时,$><后不能有空格,路径上也不能用反斜杠。



分享到:
评论

相关推荐

    Windbg使用详解 Windbg使用详解 Windbg使用详解

    3. **注册表和内存区域查看**:`r`查看寄存器状态,`dd`(双字节)或`du`(Unicode字符串)查看内存区域。 四、调试技巧与高级功能 1. **跟踪模块**:`lm`列出加载的模块信息,`!dlls`查看动态链接库的状态。 2. **...

    WinDbg用法详解,包括WinDbg用法入门及命令用法讲解。

    WinDbg还提供了强大的内存检查功能,如`dd`命令可以查看内存区域的十六进制值,`du`命令则会以字符串形式显示内存内容。`!heap`系列命令用于分析堆内存,`!vad`命令可以帮助理解虚拟地址空间分布。 在分析系统崩溃...

    WinDBG用法详解【强烈推荐】

    3. **查看内存**:使用`dv`或`dt`命令查看变量和结构体,`du`显示内存中的字符串。 4. **调用堆栈**:`kb`或`k`命令显示调用堆栈,帮助理解程序执行流程。 ## 四、WinDBG高级特性 1. **注册表查看**:`r`命令可...

    Windbg命令用法详解

    - `du &lt;address&gt;`: 显示ASCII字符串形式的内存内容。 - `dd &lt;address&gt;`: 显示指定地址的内存字节(4字节为一行)。 - `dc &lt;address&gt;`: 显示单字节的内存内容。 4. **断点设置** - `bp &lt;address&gt;`: 在指定地址...

    windbg软件

    7. **du** 或 **dd**:显示内存中的数据,前者用于显示字符串,后者用于显示字节。 8. **!heap -s**:查看堆的总体信息,包括总大小、空闲块等。 9. **bp** 或 **ba**:设置断点,前者基于地址,后者基于事件。 三...

    windbg使用指南

    - **数据查找**:`du`显示Unicode字符串,`dv`显示变量,`dt`显示类型。 - **调用堆栈**:`kb`显示调用堆栈,`kc`显示带有偏移量的堆栈,`kv`显示完整堆栈。 - **线程管理**:`!threads`列出所有线程,`~`选择...

    windbg 驱动调试器

    使用“dd”命令可以显示内存区域的内容,而“du”则用于显示Unicode字符串。 5. **崩溃转储分析**:当系统崩溃产生内存转储文件时,Windbg能分析这些文件,重现问题发生时的状态。这在远程调试或者无法复现的问题...

    WinDbg source

    这些命令的背后是精心设计的解析器和执行器,它们解析用户输入的命令字符串,然后调用相应的函数执行操作。通过阅读这部分代码,我们可以学习到如何构建一个高效且灵活的命令处理系统。 此外,WinDbg的源码还可能...

    WinDBG命令行大全

    - `da`: 读取并显示内存的ASCII字符串。 3. **寄存器操作** - `r`: 查看和修改处理器寄存器的值。 - `dr`: 查看和修改调试注册表项。 4. **堆栈跟踪** - `k` 或 `kb`: 显示当前线程的堆栈回溯信息。 - `kv`: ...

    windows调试工具集(windbg)

    4. **数据查看**:通过"dt"命令可以查看结构体或类的详细信息,"du"和"dc"分别用于显示Unicode字符串和字节串。此外,使用"!heap -s"可查看堆概览,"!analyze -v"用于分析崩溃信息。 5. **内存分析**:Windbg提供了...

    WinDbg详细讲解

    3. **查看内存**:使用`dv`、`dd`和`du`命令查看变量值、内存区域和字符串。 4. **堆栈回溯**:`kb`命令显示堆栈信息,帮助理解程序执行流程。 三、高级功能 1. **注册表和内存分析**:通过`r`命令查看和修改...

    WinDbgPreview.7z

    8wekyb3d8bbwe是微软用来标识其应用的特定字符串,而版本号1.2108.26002.0则代表该版本发布于2021年8月,并有特定的构建编号。 总的来说,WinDbg Preview是一个强大的调试工具,对于开发者、系统管理员和故障排除...

    WinDbg使用详解

    3. **内存检查**:使用`dd`命令查看内存区域,或`du`命令查看字符串,有助于找出内存相关问题。 4. **调用堆栈分析**:`kb`或`k`命令可显示当前线程的调用堆栈,便于追溯错误来源。 5. **线程与进程管理**:`~`...

    WinDbg使用指南(中英文)版

    - `du`或`dv`显示内存中的字符串或变量。 - `dt`查看类型结构。 四、内核调试技巧 1. 内核模式调试:通过KDNet或硬件调试器接口进行远程内核调试。 2. 崩溃分析:使用`!analyze -v`扩展命令分析蓝屏错误(BSOD)的...

    Windbg使用手册.zip

    - 查找字符串:`!findstr`命令。 - 跟踪API调用:`!apihooks`显示API钩子。 - 使用脚本:通过`.cmdfile`加载自定义命令脚本,进行自动化分析。 这个压缩包中的"常用"可能指的是包含了一些常用的Windbg使用技巧和...

    Windbg 调试命令(内核+用户态程序)

    - `du`: 以Unicode字符串形式显示内存内容,有助于读取程序中的字符串。 3. **注册表操作** - `r`: 显示所有寄存器的当前值,包括CPU通用寄存器、控制寄存器等。 - `rd`: 查看或修改特定的寄存器值。 4. **符号...

    Windbg使用紹介

    首先,我们看一个简单的C语言程序,其功能是将字符串 "6969,3p3p" 中的数字3替换为4。但这段代码存在一个导致崩溃的bug。当程序运行到崩溃点时,Windbg 会捕获到这个异常,并显示相应的错误界面。 在开始调试之前,...

    WinDBG标准命令列表

    - `ds, dS`:显示字符串类型的数据结构。 - `dt`:显示数据类型信息。 ##### D. 编辑命令 (E/e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza, ezu) - **功能**:编辑内存中的数据。 - **使用场景**:在调试过程中...

    WinDBG用法详解

    2. **数据查看命令**:如`dv`(显示变量)、`dt`(显示类型结构)和`du`(显示Unicode字符串)。 3. **内存操作命令**:如`db`(显示字节)、`dc`(显示字)和`dd`(显示双字)。这些命令可帮助我们查看内存中的数据...

    Windbg教程.rar

    4. 查看内存:`dd`显示内存数据,`du`显示Unicode字符串,`dc`显示字符数据。 5. 跟踪线程:`!threads`命令列出所有线程,`~`操作符选择并切换线程。 四、Windbg高级功能 1. 静态与动态符号处理:`lm`列出模块,`!...

Global site tag (gtag.js) - Google Analytics