问题标签 [kernel-mode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
networking - 用户模式下的 MPTCP
在用户模式下有没有 MPTCP 的实现,而不是内核模式?如果没有,是否有任何建议在用户模式下重用内核模式源代码?
windows - LdrLoadDll 是否有内核模式回调?
我正在尝试制作一个 exe 分析器,现在想通过挂钩内核模式驱动程序LdrLoadDll
来跟踪/记录所有在 exe中加载/使用的 Dll (我过去创建了用户模式)。我的问题是在 64 位版本的 Windows 中,因为在 64 位中我不能使用SSDT挂钩,而且我找不到任何替代解决方案。
在 64Bit 中有内核模式回调,例如:PsSetCreateProcessNotifyRoutine(替代挂钩CreateProcess),但我找不到任何解决方案。现在我的问题是:LdrLoadDll 是否有内核模式回调?还是我必须找到 64 位内核挂钩的解决方案?
windows - 如何在内核模式下获取服务的名称?(视窗)
我正在连接 Windows 7 x64 的 SSDT(我已经正确连接了它等等 - 这不是问题。)绕过某个游戏的反作弊。
问题:尝试获取 exe 名称是没有用的,因为它总是为 Windows 服务输出 svchost.exe,并且由于 anticheat 正在执行它在服务中的工作,我无法正确“猜测”哪个 svchost.exe 是 Anti -欺骗。
(伪)代码:
NTSTATUS newOpenProcess(ProcessHandle, DesiredAccess, ObjectAttributes, ClientId)
{
if(ClientId points to our game) // checks name of process to be opened
DbgPrint("%s", PsGetProcessImageFileName(PsGetCurrentProcess())); // svchost.exe - NEED THE SERVICE NAME
return oldOpenProcess(ProcessHandle, DesiredAccess, ObjectAttributes, ClientId);
}
请注意:这仅用于学习目的。这不适用于恶意软件或任何类似的东西;这并不违法!
c++ - 如何从 IoGetDeviceInterfaces 例程中获取 SymbolicLinkList 的值?
我正在开发微型过滤器。我IoGetDeviceInterfaces()
用来获取设备接口实例。
当我检查这个例程的状态时,它是成功的
当我检查 SymbolicLinkList 参数时,它不是 NULL
但是当我打印 SymbolicLinkList 的值来记录时,它没有显示任何东西。
如何从此例程中获取 SymbolicLinkList 参数的值?
这是我的代码:
日志是这样的:
c++ - Mini-Filter intercept drag & drop file(s) to disk?
I am developing a mini-filter to intercept files and get the name of files which are dragged & dropped to a specific disk and get the file names.
If I drag & drop a file, I can get this file name and intercept it successfully (That's mean this file is not created on disk).
If I drag & drop multiple files, I can only get the first file name and other is not. But when I open the disk, I don't see any file here (That's mean Mini-Filter intercept them successfully). So I can not get the file names (except the first file)
I intercept drag & drop by redirect them:
- Get file name by FltGetFileNameInformation() then FltParseFileNameInformation()
- Split it two part
- First is: \Device\HarddiskVolume1\folder\
- Second is: file.ext
- Append a file name for first part: \Device\HarddiskVolume1\folder\new_file.ext
- Intercept create on disk
- Release this buffer: Data->Iopb->TargetFileObject->FileName.Buffer
- Assign first part to Data->Iopb->TargetFileObject->FileName
- Set this: Data->Iopb->TargetFileObject->RelatedFileObject = NULL;
- Data->IoStatus.Information = IO_REPARSE;
- Data->IoStatus.Status = STATUS_REPARSE;
- return FLT_PREOP_SUCCESS_NO_CALLBACK;
Above code can only intercept all files and get the first file name.
How can I do to intercept each file when I drag & drop multiple file?
c - 如何从内核模式中删除文件?
我有一个微过滤器(内核模式)。我想从内核模式中删除具有特定路径(\Device\HarddiskVolume1\file.txt 或 C:\file.txt)的文件
有没有办法做到这一点?
更新:20150130
正如Harry Johnston所说,我尝试使用ZwDeleteFile 例程。这些是我的代码:
但它使我的系统崩溃。我的代码有什么问题吗?=> 固定(这是答案)
谢谢!
c++ - Minifilter在预操作中重定向文件创建?
我正在尝试在硬盘卷上重定向文件创建(即 \Device\HarddiskVolume2)
我在 minifilter open pre 中找到了重定向文件名。但我有一个系统对话框如下
这是我的代码:
我希望这个对话框不显示。我应该怎么做?
非常感谢!
windows - 找到当前 PID 并在内核模式下终止他
我的 Windows 7x64 文件系统微过滤器驱动程序必须拒绝访问某些文件。我明白了,但相关的应用程序仍然有效。我想用这个应用程序终止进程。例如,当用户尝试打开 *.txt 文件时,必须关闭文件和相关的记事本副本。我使用了来自 WDK (Minispy) 的示例以及函数 ZwTerminateProcess 和 PsGetCurrentProcessId。现在,当用户进入监控目录时,我的微过滤器关闭 explorer.exe。示例代码:
minispy.c ...
任何想法?(如果我的英语不好,请原谅)
kernel - 如何在 Windows 中从内核模式启动用户模式程序
我有一个驱动程序(内核模式)(KMDF),我有一个用户偏好表格。我需要从驱动程序代码开始活动并获取首选项。那么如何从 Windows 操作系统的内核启动该用户模式程序?
debugging - WinDbg 通过网络失去连接调试,目标机器冻结
我正在尝试通过网络进行 WinDbg 调试,但在我闯入调试器(调试->中断)后它总是失去连接,然后尝试再次启动它(调试->执行)。但是,如果我从不闯入调试器,看起来连接在“N”时间段内是稳定的。当我在此宽限期内使用目标系统时,我什至可以在 WinDbg 中看到调试打印语句。此外,在调试中断时连接似乎很好,因为我可以从目标系统收集信息。我使用“!ustr srv!SrvComputerName”来获取目标计算机名称,它会返回正确的名称。任何帮助将非常感激。
设置系统:我按照MSDN 网站上的说明设置目标和主机系统。
调试:以下是我解决此问题的尝试。
- 在网络适配器上禁用流控制并使用半双工模式。我在阅读这篇文章后尝试了这个:WinDbg, host machine lost network if test machine is on the same switch
- 购买新的网络适配器。根据这个网页,我的网络适配器应该支持网络内核调试。然而,进一步的调查显示,供应商有不更新其设备 ID 的坏习惯,因此我决定通过从不同供应商处购买新适配器来排除这种可能性。
- 更改网络端口。我已经尝试了很多不同的网络端口(49152-65535),以防其中一个被用于不同的目的。
- 拔下以太网电缆,然后将其重新插入。一旦连接丢失,我尝试了这个,希望它会重新建立连接。
- 重新启动目标系统。与#4 相同的原因。
- 更改 PCIe 端口。我的选择已经不多了。
- 将主机系统移动到不同的网络交换机。没变。
观察:
- Wireshark显示目标系统一启动就向宿主系统发送UPD包,但是宿主系统直到WinDbg启动后才响应。更有趣的是,即使在目标系统变得无响应之后,目标系统也会继续向主机发送 UPD 包。不幸的是,我不了解 UPD 包数据。
- 如果重新启动,WinDbg 可以始终如一地重新建立与目标系统的连接。目标系统似乎陷入调试中断。
系统信息:主机系统正在运行 Windows 8.1 Pro。目标系统正在运行 Windows 8.1 Enterprise 评估版(8GB RAM)。
WinDbg 打印出来:
此时WinDbg不再响应,继续发送数据包。目标系统也没有响应。