问题标签 [ntdll]

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.

0 投票
1 回答
892 浏览

windows - LoadLibraryEx(..., LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR) 加载错误 dll 的解决方法错误

情况如下。这些 dll 在一个进程中加载​​:

并且该进程位于c:\abc\. 我正在加载c:\zxc\bar.dll。它隐式链接到foo.dll. 它应该链接到c:\zxc\foo.dll同一个文件夹中的 。我加载它

如果c:\abc\foo.dll未在进程中加载​​,则c:\zxc\foo.dll正确加载并c:\zxc\bar.dll链接到它。但如果c:\abc\foo.dll已加载,则c:\\zxc\\bar.dll链接到c:\abc\foo.dll而不是c:\zxc\foo.dll(即使c:\zxc\foo.dll已在进程中加载​​)。这在 Global Flags 的“Show loader snaps”复选框的帮助下得到了确认。

我该如何解决它?

bar.dll是第三方,所以我无法在其中实现 DELAYLOAD 。

而且我无法阻止加载c:\abc\foo.dll到进程中。

我正在考虑 hooking ntdll!LdrpFindOrMapDll,但它似乎不可靠,我必须在所有受支持的 Windows 版本中对此进行彻底测试,所以我首先寻找一种更简单的解决方法。

0 投票
2 回答
502 浏览

c++ - C++ windows 代码链接 64 位但不是 32 位

我在 Windows 上用 C++ 编写了代码。当我将其编译为 x64 时,我的代码会编译和链接,但当我将构建配置更改为 x86 时不会。

失败是链接错误。

我正在使用来自 ntdll 的函数 RtlIsNameInExpression。

当我在 32 位模式下编译它时,出现未解决的外部链接错误 (LNK2019)。

任何想法为什么会发生这种情况?

10倍

0 投票
1 回答
1655 浏览

windows - Win32 应用程序是否自动链接到 ntdll.dll?

我刚刚偶然发现这样做GetModuleHandle("ntdll.dll")无需事先调用LoadLibrary("ntdll.dll").

这意味着ntdll.dll已经加载到我的进程中。

假设ntdll.dll将始终加载到 Win32 应用程序上是否安全,因此LoadLibrary不需要调用?

0 投票
1 回答
434 浏览

c++ - 尝试使用 NTDLL 抓取、复制和保护句柄

所以我试图基本上循环处理进程,找到我的进程的进程ID(有效),然后使用该pid打开一个进程(也有效),然后用NtDuplicateObject复制它并用NtSetInformationObject保护它。

问题是总是有问题。我第一次尝试它不想复制它,快进到现在,在注释掉我尝试关闭旧句柄的部分之后(我不能这样做,NtDuplicateObject 也不应该这样做)它给了我一个句柄,但我不能将它用于 writeprocessmemory 或类似的东西。我将在此处发布函数并在 hastebin 链接中发布完整代码(以防我的代码中出现需要拼接的混淆)

完整:https ://hastebin.com/moyehijehe.cpp

0 投票
1 回答
348 浏览

driver - 枚举句柄名称问题

我找到了一种枚举其他程序句柄的方法,但我现在遇到了问题。我看不到进程类型的线程。我需要检查哪些程序为我的进程打开句柄。

当我检查输出时,它是“未命名的”,我不知道如何修复它。

我应该通过驱动程序执行此操作吗?或任何其他方式在没有驱动程序的情况下做到这一点?

0 投票
1 回答
477 浏览

windows - 除了“挂钩”之外,还有其他方法可以用来监控 Windows 系统上的 Native/SSDT API 调用吗?

有很多经验的人告诉我,至少有一种替代方法可以监视 Windows 操作系统调用,例如,在创建类似进程监视器的功能或开发防病毒扫描程序的上下文中,这不是“挂钩” "并且这种替代方法比挂钩更有效。但是,我不确定在开发过滤器驱动程序来执行此任务的上下文中,有哪些挂钩替代方案。

0 投票
1 回答
165 浏览

c# - c# - 结构数组指针的问题

我想通过使用来自 ntdll 的 NtQuerySystemInformation 来获取有关每个处理器性能的信息。现在我遇到的问题是它只运行了所有 5 次尝试然后返回。

NtQuerySystemInformation 返回一个始终为 InfoLengthMismatch 的 NtStatus,这通常意味着我必须使缓冲区更大。如果我只使用一个处理器(无数组)和 0x10000 的缓冲区大小尝试它,它工作得很好,它在第一次尝试时给了我 InfoLengthMismatch 但第二次尝试总是有效。

我试图将缓冲区增加 100 倍,也是 1000 倍,但没有任何效果。

编辑:错误的是这一行:

通常如果大小错误,它会输出正确的大小到 infoLength var,但在这种情况下,我每次都在循环开始时设置它。

0 投票
2 回答
615 浏览

c# - 写入串行时 UWP 未处理的异常

我在 UWP 中写入串行设备时遇到问题。我写入端口的任务如下所示:

代码在我调用此函数的前两次正常工作。我第三次在await dataWriter.StoreAsync()行中的 ntdll.dll 中得到未处理的异常。

我能看到的完整例外是:

xx.exe 中 0x00007FFCB3FCB2C0 (ntdll.dll) 处的未处理异常:0xC000000D:向服务或函数传递了无效参数。

这个答案提到了一个关闭输入流的垃圾收集器,但是我不明白为什么它会在我的代码中发生。任何帮助了解此问题的底部将不胜感激!

0 投票
0 回答
2650 浏览

c# - ntdll.dll 中的应用程序崩溃,版本:6.1.7601.23677 with .Net Framework 版本:v4.0.30319

更新 .Net 框架后,我的应用程序经常崩溃。下面是在事件查看器中找到的应用程序事件日志,

错误应用程序名称:MyApp.exe,版本:我的应用程序版本,时间戳:0x5885f545 错误模块名称:ntdll.dll,版本:6.1.7601.23677,时间戳:0x589c957a 异常代码:0xc015000f 错误偏移量:0x00084269 错误进程 ID:0x %9 错误应用程序启动时间: 0x%10 错误应用程序路径: %11 错误模块路径: %12 报告 ID: %13 错误包全名: %14 错误包相对应用程序 ID: %15

在事件日志中也发现了以下错误,

应用程序:MyApp.exe .Net Framework 版本:v4.0.30319
描述:进程因未处理的异常而终止。异常信息:异常代码c015000f,异常地址77994269

对我来说,ntdll.dll 和 .Net 版本之间似乎存在兼容性问题。是否需要与 .Net 4.0.30319 一起安装任何 KB?

我正在分析故障转储,它显示在调用堆栈下方,

问题出在 Windows 2008 上。在其中一台具有相同 .Net 版本和 ntdll.dll 版本 6.1.7601.17514 的机器上,该应用程序运行良好。

但只有 ntdll.dll 版本6.1.7601.23677应用程序才会崩溃。

0 投票
1 回答
4701 浏览

winapi - 如何使用 NtOpenProcess

我正在尝试使用NtOpenProcess()我在城里找不到任何例子。

我收到一个错误,非常感谢任何帮助。

错误是

这是我的包含文件。