在Windows中录制Syscalls

时间:2011-02-10 16:21:41

标签: windows winapi system-calls

我一直在寻找一些在Windows上实时获取系统调用的方法。我已经在stackoverflow和其他地方查看了几个帖子但是找不到任何我能够遵循的简单方法。我看过procmon但它的输出非常不稳定。两个系统上的相同二进制文件生成了不同数量的条目。也许我缺乏做这些事情的必备知识。欢迎任何帮助/推荐。

我之前看过这些链接:

此致

2 个答案:

答案 0 :(得分:0)

根据您使用的Windows版本,您的问题的答案可能是Windows事件跟踪(ETW),它可以执行系统调用[[{3}}]

答案 1 :(得分:0)

如果您对采样方法感到满意,那么您可以试试这个:

typedef struct _THREAD_LAST_SYSCALL_INFORMATION
{
    PVOID FirstArgument;
    USHORT SystemCallNumber;

} THREAD_LAST_SYSCALL_INFORMATION, *PTHREAD_LAST_SYSCALL_INFORMATION;

THREAD_LAST_SYSCALL_INFORMATION lastSystemCall;
NtQueryInformationThread(
    hThread,
    ThreadLastSystemCall,
    &lastSystemCall,
    sizeof(THREAD_LAST_SYSCALL_INFORMATION),
    NULL
);

其中ThreadLastSystemCall = 21