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>
    "  

    效果如下:

        

  • 相关阅读:
    GitLab 重置认证和添加账号缓存
    PHP 正则匹配IP
    git 删除指定版本
    PostgreSQL 9.2 日期运算
    postgre 已有字段修改为自增
    postgresql 导入导出
    PHP TS 和 NTS 版本选择
    background-image属性的设置
    SQLServer 附加数据库后只读或报错解决方法
    IIS 6.0 发布网站使用教程
  • 原文地址:https://www.cnblogs.com/renyuan/p/6198606.html
Copyright © 2011-2022 走看看