Case 1

1、bu USER32!PostMessageW "r $t0=@$t0+1;.printf\"PostMessageW Call Count:%d\",@$t0;.echo;g"

分号是用来分离语句的; $t0是伪寄存器; @$t0是读取寄存器当中的值;

2、bu USER32!PostMessageW "kb L2"

a) 如果命中,打印2层栈帧。 这个技巧可以看到到底是谁调用的指定的函数。

b) 另外通过找到函数的调用约定,我们就可以输出函数的参数值。

c) 但是如果需要批量打印函数的参数值,就需要看函数的的反汇编,确认这些参数是放置在哪个寄存器当中。比如我们需要测试向指定窗口发送的msg。

BOOL PostMessageA(   HWND   hWnd,   UINT   Msg,   WPARAM wParam,   LPARAM lParam );

__stdcall (Pascal方式清理C方式压栈,通常用于Win32 Api中)

1)压栈顺序:函数参数从右到左的压栈顺序 ,前 4 个参数传入 RCX、RDX、R8 和 R9 中。其他参数传递到堆栈中。

2)参数栈维护:被调用函数把参数弹出栈(在退出时清空堆栈)

 3)函数修饰名约定:VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数

ex. VC: int f(void *p) (编译后)-> _f@4(在外部汇编语言里可以用这个名字引用这个函数)

从上面的信息可以推断出,hwnd 的值 存才R9当中,其值为null.

输出所有Hwnd为空的调用

bp USER32!PostMessageW ".if (@r9 = 0){k;g}.else{gc}"

Windbg 实践之结合条件断点的更多相关文章

  1. Windbg 实践之符号篇

    How to display the size value 1)一开始不会加载,chksym 了一下就加载了. 2) 新版本已经可以显示size的大小了 3)?? 显示变量的类型 4)x std::v ...

  2. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  3. Windbg 字符串条件断点

    0x01 前言 Windbg 作为 Windows 下的主流调试器,除了人机交互相比其他调试器略有不足外,其他功能都是十分强大的存在. 在所有的调试器中断点功能都是必不可少的,Windbg 可以使用 ...

  4. 中小研发团队架构实践之生产环境诊断工具WinDbg

    生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具,Dump文件类似于飞机的黑匣子,记录着生产环境程序 ...

  5. windbg条件断点总结

    1 . 条件断点是断点命令 ( bp 或者 bu ) 与j命令或者.if命令一起使用的,后面跟着一个gc命令   0:000> bp Address "j (Condition) 'O ...

  6. Windbg:如何给字符串下条件断点

    因为Windgb支持MASM语法,字符串的比较方法有$scmp和$sicmp.用法和c中的字符串比较方法一致.在需要比较字符串成员变量的时候,遇到了点问题.因为字符串成员变量无法直接获取字符串内容.p ...

  7. 第二章排错的工具:调试器Windbg(上)

    感谢博主 http://book.51cto.com/art/200711/59731.htm <Windows用户态程序高效排错>第二章主要介绍用户态调试相关的知识和工具.本文主要讲了排 ...

  8. WinDbg 图形界面功能(二)

    1.2.编辑菜单 这个菜单可以提供Windbg里的各功能窗口的可选文本的编辑功能,比如源代码窗口.命令窗口等提供选择.复制.剪切和黏贴等基础编辑功能. 剪切 单击剪切上编辑菜单中,删除所选的任何文本并 ...

  9. Windbg使用简明指南

    第一章 准备 1.1.    环境配置 _NT_DEBUGGER_EXTENSION_PATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 _NT_SY ...

随机推荐

  1. 使用gulp 进行ES6开发

    使用gulp 进行ES6开发 一.新建项目 项目结构如下: /app -- /js -- /css /dist -- /js -- /css -- index.html gulpfile.js 我们的 ...

  2. R 创建一个空的数据框

    k = 16 #数据框的行数 z = data.frame( a = numeric(k), b = numeric(k), c = numeric(k), d = numeric(k) )

  3. angular.js开发 将多页面开发成单页面

    用angulara.js做单页面开发时,由于不能跨页面取数据,又需要传参,可以采用:$scope.step=0/1来解决这个问题,设置初始值为想要的页面即可.

  4. 微信小程序—显示当前时间

    问题:  在页面上显示当前时间(日期) 方法: 1.在util.js (创建项目自动生成)中: // util.js const formatTime = date => { const yea ...

  5. Day 4 -E - Catenyms POJ - 2337

    A catenym is a pair of words separated by a period such that the last letter of the first word is th ...

  6. ShowDialog()之后,主窗体失去焦点

    开发wince的时候遇到这个问题,简单搞定了. ...... form.ShowDialog(); this.focus();

  7. 吴裕雄--天生自然java开发常用类库学习笔记:Iterator接口

    import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class Iterat ...

  8. Java Break 与 Continue

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  9. CAN通讯基本设置

    A节点pelican协议下,扩展帧 单滤波方式 A节点的接收滤波器 ID号 设置为 0x19881205 设置过程 (1) pelican模式设置 设置时钟分频寄存器CDR.7 =1 使SJA1000 ...

  10. WordPress 更新中断故障

    WordPress 更新中断故障 WordPress更新中断后显示:Briefly unavailable for scheduled maintenance. Check back in a min ...