zoukankan      html  css  js  c++  java
  • windbg !logexts(自带的监控API)

    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>
    "  
    .printf /D  "<link cmd="!logexts.logo e *">sets Logger output</link>
    "  
    .printf /D  "<link cmd="!logexts.logc e *">Displays available API categories</link>
    "  
    .printf /D  "<link cmd="!logexts.logb p;!logexts.logb f">Displays current output buf</link>
    "  
    .printf /D  "<link cmd="!logexts.logd">Disables logging</link>
    "  
    .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>
    "  

    效果如下:

        

  • 相关阅读:
    svn command line tag
    MDbg.exe(.NET Framework 命令行调试程序)
    Microsoft Web Deployment Tool
    sql server CI
    VS 2010 One Click Deployment Issue “Application Validation did not succeed. Unable to continue”
    mshtml
    大厂程序员站错队被架空,只拿着五折工资!苟活和离职,如何选择?
    揭秘!Windows 为什么会蓝屏?微软程序员竟说是这个原因...
    喂!千万别忘了这个C语言知识!(~0 == -1 问题)
    Linux 比 Windows 更好,谁反对?我有13个赞成理由
  • 原文地址:https://www.cnblogs.com/renyuan/p/6198606.html
Copyright © 2011-2022 走看看