NTCALL64
Windows NT x64 系统调用模糊器。
该程序基于 Peter Kosyh 的 NtCall。它不是高级版本,其目的是为 x64 Windows NT 6+ 移植 NtCall 功能。
系统要求
- x64 Windows 7/8/8.1/10/11;
- 具有管理权限的帐户(可选)。
用法
NTCALL64 -help[-win32k][-log][-call Id][-pc 值][-wt 值][-s]
- -help - 显示程序参数帮助;
- -log - 通过COM1端口启用日志记录,将记录服务参数(慢),默认禁用;
- -pname - 日志记录的端口名称,默认 COM1(需要启用 -log,与 -ofile 互斥);
- -ofile - 日志记录的文件名,默认ntcall64.log(需要启用-log,与-pname互斥);
- -win32k - 启动 W32pServiceTable 服务模糊测试(有时称为 Shadow SSDT);
- -call Id - 通过提供的 id 模糊系统调用(id 可以来自任何表 ntos/win32k);
- -pc Value - 设置每个系统调用的传递计数(最大值限制为 ULONG64 最大值),默认值 65536;
- -wt Value - 设置调用线程的等待超时时间(以秒为单位)(单个系统调用模糊测试除外),默认值为 30;
- -start Id - 从给定的系统调用 ID 开始模糊系统调用表,与 -call 互斥;
- -s - 尝试从本地系统帐户运行程序。
当不带参数使用时,NtCall64 将启动 KiServiceTable(ntos,有时称为 SSDT)中的模糊测试服务。
每个模糊测试线程的默认超时设置为 30 秒。如果启用日志记录,则超时时间延长至 120 秒。
请注意,当与 -call 选项一起使用时,所有黑名单都将被忽略,并且模糊测试线程超时将设置为无限。
例子:
- ntcall64-日志
- ntcall64-log-pc 1234
- ntcall64-log-pc 1234-call 4096
- ntcall64 -log -ofile mylog.txt
- ntcall64 -win32k -log -pname COM2
- ntcall64-win32k
- ntcall64-win32k-log
- ntcall64-win32k-log-pc 1234
- ntcall64-呼叫 4097
- ntcall64-呼叫4097-日志
- ntcall64-呼叫4097-日志-pc 1000
- ntcall64-pc 1000
- ntcall64-s
- ntcall64-pc 1000-s
注意:在尝试此工具之前,请确保配置 Windows 故障转储设置
(例如https://msdn.microsoft.com/en-us/library/windows/hardware/ff542953(v=vs.85).aspx)。
它是如何运作的
它通过系统服务进行暴力破解,并使用从预定义的“坏参数”列表中随机获取的输入参数多次调用它们。
配置
通过使用 badcalls.ini 配置文件,您可以将某些服务列入黑名单。为此,将服务名称(区分大小写)添加到 badcalls.ini 的相应部分,例如,如果您想将 KiServiceTable 中的服务列入黑名单,则使用 [ntos] 部分。
badcalls.ini 示例(程序附带的默认配置)
[NTOS]
关闭
Nt启动电源操作
NtRaiseHardError
NtReleaseKeyedEvent
Nt传播完成
Nt关机系统
Nt挂起进程
Nt挂起线程
Nt终止进程
Nt终止线程
NtWaitForAlertByThreadId
NtWaitForSingleObject
NtWaitForKeyedEvent
[win32k]
NtUserRealWaitMessageEx
NtUserShowSystemCursor
Nt用户切换桌面
Nt用户锁工作站
NtUserEnumDisplayMonitors
Nt用户获取消息
Nt用户等待消息
NtUserDoSoundConnect
NtUserRealInternalGetMessage
NtUserBroadcastThemeChangeEvent
NtUserWaitAvailableMessageEx
NtUserMsgWaitForMultipleObjectsEx
警告
该程序可能会使操作系统崩溃,影响其稳定性,从而可能导致数据丢失或程序本身崩溃。您使用它的风险由您自己承担。
NtCall64 发现的错误
- win32k!NtGdiDdDDISetHwProtectionTeardownRecovery
- win32k!NtUserCreateActivationObject
- win32k!NtUserOpenDesktop
- win32k!NtUserSetWindowsHookEx
- win32k!NtUserInitialize->win32kbase!Win32kBaseUserInitialize
- nt!NtLoadEnclaveData
- nt!NtCreateIoRing
- nt!NtQueryInformationCpuPartition
建造
NTCALL64 附带用 C 语言编写的完整源代码,仅使用很少的汇编程序。为了从源代码构建,您需要 Microsoft Visual Studio 2017 及更高版本。
指示
- 首先为要构建的解决方案中的项目选择平台工具集(项目->属性->常规):
- Visual Studio 2017 v141;
- Visual Studio 2019 v142;
- 适用于 Visual Studio 2022 的 v143。
- 对于 v140 及更高版本,设置目标平台版本(项目 -> 属性 -> 常规):
- 如果是v140则选择8.1;
- 如果 v141 及以上,则选择 10。
- 所需的最低 Windows SDK 版本 8.1
作者
(c) 2016 - 2023 NTCALL64 项目
原创 NtCall,作者:Peter Kosyh,又名 Gloomy (c) 2001,http://gl00my.chat.ru/