【问题标题】:Using logger.exe to sniff system calls使用 logger.exe 嗅探系统调用
【发布时间】:2016-03-05 15:20:45
【问题描述】:

我有一个使用一些串行端口并运行一些系统调用的应用程序,例如EscapeCommFunction,我想调试它。基本上,我想要最接近 Linux 上的strace。我发现最好的候选人似乎是logger.exe,但我不知道如何使用它。

我试着打电话

logger.exe <application> <arg1> <arg2> <arg3>

并在出现的对话框中尝试了所有对我有意义的组合。结果总是一样的:程序成功完成,记录器窗口没有输出,或者即使我关闭了记录器,也没有创建任何日志文件。

【问题讨论】:

标签: logging windbg system-calls strace


【解决方案1】:

日志文件总是在桌面not alterablelogexts subdir中创建

C:\Documents and Settings\Admin\Desktop>DIR /S /B LOGE*
File Not Found 

执行记录器

C:\Documents and Settings\Admin\Desktop>LOGGER CALC.EXE 
  1. 记录器窗口打开后
  2. 在左侧窗格中选择您需要的 API,然后单击包含 单选按钮
  3. 默认情况下不选择任何内容,也不会记录任何内容
  4. 创建的 lgv 文件将不包含任何内容
  5. 您需要选择 api 并将它们包含在日志中
  6. 您可以为专门的日志记录编写自己的清单文件
  7. 会话结束后,关闭 logger.exe,您将拥有一个 lgv 文件
  8. 您可以在 logviewer.exe 中使用 file ->open no 打开这个 lgv 文件 命令行选项

已经为会话创建了子目录

C:\Documents and Settings\Admin\Desktop>DIR /S /B LOGE*
C:\Documents and Settings\Admin\Desktop\LogExts

导航到子目录并转储目录结构

C:\Documents and Settings\Admin\Desktop>CD LogExts

C:\Documents and Settings\Admin\Desktop\LogExts>ls -la
total 32
drwxr-xr-x    4 Admin    Administ        0 Dec  2 10:31 .
drwxr-xr-x    1 Admin    Administ        0 Dec  2 10:31 ..
-rw-r--r--    1 Admin    Administ    64304 Dec  2 10:33 CALC.EXE.lgv <---
-rw-r--r--    1 Admin    Administ        0 Dec  2 10:31 CALC.EXE.txt

打开logviewr查看lgv文件 C:\Documents and Settings\Admin\Desktop\LogExts>logviewer

窗口标题中记录的api的屏幕截图和api记录的通知文件路径的统计信息

【讨论】:

    【解决方案2】:

    我同意 @Alex K. 并建议 API Monitor

    只需使用望远镜图标找到您要监控的方法并在其上添加复选标记。

    然后从“正在运行的进程”选项卡中选择一个进程或监视一个新进程(API 监视器将为您启动它)。

    请注意,API 监视器有 2 个版本:x86 和 x64,您应该为要监控的应用程序选择正确的位数。

    您还可以在方法上设置断点,这将在目标线程中触发 INT3。将弹出“未处理的异常对话框”,您可以选择调试器(在我的情况下为 Visual Studio)。

    关于 Chrome 请求:我正在测试 Serial Monitor 作为应用程序,启用开发者模式,检查 demo.html。我使用Process Explorer 的十字光标找出了正确的过程。然后我按照你的建议创建了 sn-p

    chrome.serial.connect("COM1", {
        bitrate: 9200
    }, function(i) {
        chrome.serial.setControlSignals(i.connectionId, {
            dtr: false
        }, function() {
            console.log("done");
        });
    });
    

    然后运行它。结果如下:

    【讨论】:

    • 这适用于测试二进制文件,但不适用于 chrome。试试这个:监控 chrome 创建的任何子进程,打开一个对串行和chrome.serial.connect("COM1", {bitrate: 9200}, function (i) { chrome.serial.setControlSignals(i.connectionId, {dtr:false}, function () {console.log("done");}); }); 具有权限的应用程序您应该在监视器中的一个进程中看到EscapeCommFunction,但那里没有……proof 那是正在拨打的实际电话。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 2012-01-08
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多