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/