Logexts.dll

windbgth自带了跟进API的功能,这样我们可以方便的跟踪整个API的调用具体的示意图如下:

!logexts.logi
  将Logger注入目标程序,初始化监控,但是并不开启它。

!logexts.loge
  开启监控,如果之前没有调用logexts.logi,这个扩展命令会先初始化监控,然后启动。

!logexts.logd
  停止监控。这个命令会摘掉所有的Hook,从而让程序自由运行。不过COM的Hook并不会被摘除。

!logexts.logo
  显示或者修改输出选项,这里有三种输出方式:1.在调试器中显示,2.输出到一个文本文件,3.输出到lgv文件。其中lgv文件会包含更多的信息,我们可以使用LogViewer进行查看。

!logexts.logc
  显示或者控制监控的API分类。

!logexts.logb
  显示或者刷新输出缓存。由于如果在监控过程中发生异常,那么扩展可能无法将记录的日志写入文件中,这个时候我们就需要这个命令,手动的将缓存中的数据写入文件。

!logexts.logm
  显示和创建模块的包含/排除列表。这可以帮助我们指定记录那些特定模块中的API调用。

示例

!logexts.loge D:
设置log的保持路径,并且开启监控
!logexts.logc d *
先关闭所有API分类的监控
!logexts.logc
查看API分类id
!logexts.logc e 1
设置想监控API分类
!logexts.logo e *
开启了所有输出方式,注意:如果想要被监控的程序响应的更快,可以去掉Debugger的输出,因为显示花费的时间比较的多。
Logextse有高度可配置性。如果你想监控他描述以外的API,那么你可以自己写这个API的“头文件”。这里用引号是因为,它并不是真正的头文件,只不过他的语法和C的头文件非常的相似。我们可以看一个例子:
创建%windbg_dir%winextmanifestContext.h
并且写入这些内容

category ActivationContext:
module KERNEL32.DLL: FailOnFalse ActivateActCtx(HANDLE hActCtx, [out] PULONG_PTR lpCookie);
FailOnFalse DeactivateActCtx(DWORD dwFlags, ULONG_PTR upCookie);

在%windbg_dir%winextmanifestmain.h文件的最后加入一行 #include “Context.h”
保存后,重启调试程序,输入!logexts.logc,可以看了多出了ActivationContext这一项。现在就可以选择这一项分类来监控ActivateActCtx和DeactivateActCtx了。
最后自己随便写了个简单的script调用:

.printf /D  "<link cmd=\"!logexts.loge c:\\cmdtree\\log\\ \">Enables logging</link>\n"
.printf /D "<link cmd=\"!logexts.logo e *\">sets Logger output</link>\n"
.printf /D "<link cmd=\"!logexts.logc e *\">Displays available API categories</link>\n"
.printf /D "<link cmd=\"!logexts.logb p;!logexts.logb f\">Displays current output buf</link>\n"
.printf /D "<link cmd=\"!logexts.logd\">Disables logging</link>\n"
.printf /D "<link cmd=\"!logexts.loge c:\\cmdtree\\log\\;!logexts.logc e *;!logexts.logo e *;!logexts.logb p;!logexts.logb f\">trace api calls</link>\n"

效果如下:

windbg !logexts(自带的监控API)的更多相关文章

  1. 微信客户端自带的Js Api:WeixinJSBridge

    <!DOCTYPE html> <html> <head> <title>微信WeixinJSBridge API</title> < ...

  2. 通过zabbix自带模板监控windowsPC机器

       通过zabbix自带模板监控windowsPC机器   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.       欢迎加入:高级运维工程师之路 598432640 相信有很多 ...

  3. 【转】使用JDK自带jvisualvm监控tomcat

    转载地址: http://my.oschina.net/kone/blog/157239 jdk自带有个jvisualvm工具.该工具是用来监控java运行程序的cpu.内存.线程等的使用情况.并且使 ...

  4. 使用JDK自带jvisualvm监控tomcat

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  5. Zabbix-agent使用自带模板监控 MySQL

    1.rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm 2.yum ...

  6. Zabbix Server 自带模板监控更加灵活MySQL数据库

    Zabbix Server 自带模板监控更加灵活MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.zabbix-agent端配置 1>.修改zabbix的 ...

  7. Zabbix Server 自带模板监控有密码MySQL数据库

    Zabbix Server 自带模板监控有密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.Zabbix-agent端的配置 1>.为数据库设置密码 ...

  8. Zabbix Server 自带模板监控无密码MySQL数据库

    Zabbix Server 自带模板监控无密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.安装MariaDB 1>.安装MariaDB  [root ...

  9. k8s监控api调用

    k8s监控api调用 curl -s --cacert /etc/kubernetes/ssl/ca.pem -basic -u fengjian:fengjian --insecure -X GET ...

随机推荐

  1. word2013怎样批量重设图片和大小?(转)

    https://www.zhihu.com/question/52908434/answer/132934213 点击视图,宏,查看宏,任意输入一个宏名,创建,清空框内内容,复制以下代码粘贴,保存. ...

  2. GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?

    问题背景:     最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目     因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 ...

  3. webkit-user-select:none 问题

    webkit-user-select:none 问题 学习了:https://bugs.webkit.org/show_bug.cgi?id=82692 最近两天做移动端游戏举报页面.遇到一个问题,移 ...

  4. OnBecameVisible和OnBecameInvisible ,OnWillRenderObject

    OnBecameVisible 和 OnBecameInvisible ,OnWillRenderObject 只有在所挂物体(不包括子物体)有render才有效 //可见 private void ...

  5. 【html5】HTML5中canvas怎样画虚线

    在canvas API中,我们发现仅仅提供了画实线的方法实现,并没有虚线的相关方法,那么怎样实现画虚线呢? 现实中,虚线是由一小段小段的实线线段组成,那么仅仅要我们通过画出等长度的线段就能够组成我们想 ...

  6. 让人郁闷的.net

    一个旧项目,.net 2.0的,因为一个小改动,mongo数据库加了密码,结果折腾两天却无法解决,让人郁闷的地方太多: .net版本多,用的原来的驱动是1.7的,在.net 2.0就可以,mongo服 ...

  7. 浅谈压缩感知(十四):傅里叶矩阵与小波变换矩阵的MATLAB实现

    主要内容: 傅里叶矩阵及其MATLAB实现 小波变换矩阵及其MATLAB实现  傅里叶矩阵及其MATLAB实现 傅里叶矩阵的定义:(来源: http://mathworld.wolfram.com/F ...

  8. jstl函数的使用

    1.fn:contains()和fn:containsIgnoreCase() fn:contains()函数用于确定一个字符串是否包含指定的子串. fn:containsIgnoreCase()函数 ...

  9. CSS 之 div中文字超出时自动换行

          在开发中很容易遇到div中文字超出的问题,在此总结以下方法: 1. white-space :属性设置如何处理元素内的空白.这个属性声明建立布局过程中如何处理元素中的空白符.所有浏览器都支 ...

  10. SqlServer和Mysql插入记录前判断是否存在,存在则插入,不存在则修改。

    SqlServer中是这样: ) ,@title,@searchKeys,@serviceIntervalSecond,@sleepMillisecondPerSearch) ELSE UPDATE ...