因为Windgb支持MASM语法,字符串的比较方法有$scmp和$sicmp。用法和c中的字符串比较方法一致。在需要比较字符串成员变量的时候,遇到了点问题。因为字符串成员变量无法直接获取字符串内容。poi指令是直接取地址。所以需要结合伪寄存器和别名进行封装。

伪寄存器语句如下:

  1 r @$t0=@@(&this->_test._Bx._Buf)

_test变量的类型为string。@@为C++语法表达式。

别名的语句如下:

  1 as /ma ${/v:testAlias} @$t0

此时使用al,即可看到testAlias的内容即为_test的内容。

此时配合$sicmp指令的语句如下:

  1 .if($cicmp(\"${testAlias}\",\"Test\")==0)

用来判断别名testAlias的内容是否等于“Test”,不区分大小写。

此时再配上bp,就得到了以下语句:

  1 bp Module!Class::MemberFunc+0x90 "r @$t0=@@(&this->_test._Bx._Buf) as /ma ${/v:testAlias} @$t0 .if($sicmp(\"${testAlias}\",\"Test\")==0{}.else{}"

但是此时会遇到两个问题:

Q1:$sicmp的第一个参数值不重新计算

Q2:testAlias的值没有更新

第一个问题可以使用.block来解决:

  1 .block {.if($sicmp(\"${testAlias}\",\"Test\")==0{}.else{}}

第二个问题可以使用ad /q testAlias来删除老的别名解决。所以最终的语句如下:

  1 bp Module!Class::MemberFunc+0x90 "r @$t0=@@(&this->_test._Bx._Buf) as /ma ${/v:testAlias} @$t0 .block{.if($sicmp(\"${testAlias}\",\"Test\")==0){.echo Found; ad /q testAlias;}.else{.echo Not Found; ad /q testAlias; gc;}}"

Windbg:如何给字符串下条件断点的更多相关文章

  1. js 正则判断字符串下划线的长度

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 使用PowerShell替代WinDbg在高分辨率笔记本下调试、排错

    最近换新的开发笔记本,分辨率较高发现部分应用在High DPI下几乎没法用.比较纠结的就是WinDbg,频繁切换分辨率.显示文字大小影响工作节奏.幸好PowerShell在High DPI下效果不错. ...

  3. python学习之字符串(下)

    ----------------------------------------------实际应用中的其他常见的字符串方法 >>>line = "the knights ...

  4. 去掉vs2010字符串下红色波浪线

    由于在vs集成了qt库,无法提升代码. 所以下载了visual assist,然后新的问题出现了,凡是在vs中输入的字符串,下面都有红色的波浪线,而且没有错误,只是看着不舒服. 解决方法: 在VAss ...

  5. js中字符串下划线转为驼峰

    function camelCase(string){ // Support: IE9-11+ return string.replace( /-([a-z])/g, function( all, l ...

  6. CVE-2017-8464 分析

    目录 CVE-2017-8464(stuxnet 3.0) 分析 0xFF 前言 0x00 分析工具 0x01 漏洞复现 1).生成一个DLL用于测试 2).构造一个恶意的lnk二进制文件 3).RU ...

  7. 学习使用常用的windbg命令(u、dt、ln、x)

    http://blog.csdn.net/wesley2005/article/details/51501514 目录: (1) u命令(反汇编) (2) dt命令(查看数据结构) (3) ln命令( ...

  8. Windbg调试命令详解

    作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd. ...

  9. Windbg调试命令详解(2)

    转载注明>>  [作者:张佩][原文:http://blog.csdn.net/blog_index] 2. 符号与源码 符号与源码是调试过程中的重要因素,它们使得枯燥生硬的调试内容更容易 ...

随机推荐

  1. jquery实现全选、全不选、反选操作

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  2. hadoop2-shell操作详解

  3. NHibernate各种查询

    NHibernate各种查询 NHibernate's methods of querying are powerful, but there's a learning curve. Longer t ...

  4. JavaScript null and undefined

    http://stackoverflow.com/questions/6429225/javascript-null-or-undefined var x; x == null // true x = ...

  5. javascript 事件的学习

    1.事件绑定: addEventListener , removeEventListener.是dom2级别的事件绑定 attachEvent , detachEvent 是IE的事件绑定. 2. 事 ...

  6. 《PHP与MySQL WEB开发》读书笔记

    <PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...

  7. Discuz x2.5 单页制作的教程

    首先,单页包括该单页的php文件和该单页的模板(.htm)文件,比如:host.php.host.htm 单页的php文件内容如下: <?php require './source/class/ ...

  8. Nodejs & Mongod

    http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/

  9. EXPLAIN句法 优化表结构

    EXPLAIN tbl_name or EXPLAIN SELECT select_options EXPLAIN tbl_name是DESC[RIBE] tbl_name或SHOW COLUMNS ...

  10. 彻底卸载网易UU网游加速器的方法

    昨天跟朋友一起玩游戏,网速感觉不怎么好就下了一个免费的网易UU加速器来给对战平台加速,结果加速了以后网速更差,我晕,于是想卸载,可这个加速器口只有一个exe文件,不用安装,但在第一次加速时记得安装了一 ...