针对LdrLoadDll下条件断点过滤指定名称DLL加载时断点生效

针对加载*ser32.dll下断点:

bu ntdll!LdrLoadDll "r $t0=poi(poi(esp+c)+4);as /mu ${/v:dllname} @$t0;.block{.if($spat(\"${dllname}\",\"*ser32.dll\")){kbn}; .else{ad ${/v:dllname};g}}"


------------------------------------------------
命令: as
功能: 定义别名
/ma  参数指定的内存地址当做ASCII字符串。
/mu  参数指定的内存地址当做Unicode字符串。
/msa  参数指定的内存地址当做ANSI_STRING字符串。
/msu  参数指定的内存地址当做UNICODE_STRING字符串。
/f  别名等于参数指定文件的内容。
/e  别名等于参数指定的环境变量。

------------------------------------------------
命令: ${} (说明:准确说不是命令,是Command Tokens类似.if之类)
功能: ${}是别名解释器,可以使用windbg帮助手册查看详细信息
Text ${Alias} Text 
Text ${/d:Alias} Text 
Text ${/f:Alias} Text 
Text ${/n:Alias} Text 
Text ${/v:Alias} Text 

/v:  保持别名原样,不翻译,在定义和删除的时候用。
/n:  如果别名定义就翻译为内容,否则不做任何翻译。
/f:  如果别名定义就翻译为内容,否则翻译为空。
/d:  如果别名被定义,翻译为1,否则翻译为0,相当于#ifdef。

-----------------------------------------------
命令: 20个伪寄存器
User-Defined Pseudo-Registers
There are 20 user-defined pseudo-registers ($t0, $t1, ..., $t19). These pseudo-register are variables that you can read and write through the debugger. You can store any integer value in these pseudo-registers. They can be especially useful as loop variables.


To write to one of these pseudo-registers, use the r (Registers) command, as the following example shows.


0:000> r $t0 = 7
0:000> r $t1 = 128*poi(MyVar)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值