问题标签 [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.
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 版本中对此进行彻底测试,所以我首先寻找一种更简单的解决方法。
c++ - C++ windows 代码链接 64 位但不是 32 位
我在 Windows 上用 C++ 编写了代码。当我将其编译为 x64 时,我的代码会编译和链接,但当我将构建配置更改为 x86 时不会。
失败是链接错误。
我正在使用来自 ntdll 的函数 RtlIsNameInExpression。
当我在 32 位模式下编译它时,出现未解决的外部链接错误 (LNK2019)。
任何想法为什么会发生这种情况?
10倍
windows - Win32 应用程序是否自动链接到 ntdll.dll?
我刚刚偶然发现这样做GetModuleHandle("ntdll.dll")
无需事先调用LoadLibrary("ntdll.dll")
.
这意味着ntdll.dll
已经加载到我的进程中。
假设ntdll.dll
将始终加载到 Win32 应用程序上是否安全,因此LoadLibrary
不需要调用?
c++ - 尝试使用 NTDLL 抓取、复制和保护句柄
所以我试图基本上循环处理进程,找到我的进程的进程ID(有效),然后使用该pid打开一个进程(也有效),然后用NtDuplicateObject复制它并用NtSetInformationObject保护它。
问题是总是有问题。我第一次尝试它不想复制它,快进到现在,在注释掉我尝试关闭旧句柄的部分之后(我不能这样做,NtDuplicateObject 也不应该这样做)它给了我一个句柄,但我不能将它用于 writeprocessmemory 或类似的东西。我将在此处发布函数并在 hastebin 链接中发布完整代码(以防我的代码中出现需要拼接的混淆)
driver - 枚举句柄名称问题
我找到了一种枚举其他程序句柄的方法,但我现在遇到了问题。我看不到进程类型的线程。我需要检查哪些程序为我的进程打开句柄。
当我检查输出时,它是“未命名的”,我不知道如何修复它。
我应该通过驱动程序执行此操作吗?或任何其他方式在没有驱动程序的情况下做到这一点?
windows - 除了“挂钩”之外,还有其他方法可以用来监控 Windows 系统上的 Native/SSDT API 调用吗?
有很多经验的人告诉我,至少有一种替代方法可以监视 Windows 操作系统调用,例如,在创建类似进程监视器的功能或开发防病毒扫描程序的上下文中,这不是“挂钩” "并且这种替代方法比挂钩更有效。但是,我不确定在开发过滤器驱动程序来执行此任务的上下文中,有哪些挂钩替代方案。
c# - c# - 结构数组指针的问题
我想通过使用来自 ntdll 的 NtQuerySystemInformation 来获取有关每个处理器性能的信息。现在我遇到的问题是它只运行了所有 5 次尝试然后返回。
NtQuerySystemInformation 返回一个始终为 InfoLengthMismatch 的 NtStatus,这通常意味着我必须使缓冲区更大。如果我只使用一个处理器(无数组)和 0x10000 的缓冲区大小尝试它,它工作得很好,它在第一次尝试时给了我 InfoLengthMismatch 但第二次尝试总是有效。
我试图将缓冲区增加 100 倍,也是 1000 倍,但没有任何效果。
编辑:错误的是这一行:
通常如果大小错误,它会输出正确的大小到 infoLength var,但在这种情况下,我每次都在循环开始时设置它。
c# - 写入串行时 UWP 未处理的异常
我在 UWP 中写入串行设备时遇到问题。我写入端口的任务如下所示:
代码在我调用此函数的前两次正常工作。我第三次在await dataWriter.StoreAsync()行中的 ntdll.dll 中得到未处理的异常。
我能看到的完整例外是:
xx.exe 中 0x00007FFCB3FCB2C0 (ntdll.dll) 处的未处理异常:0xC000000D:向服务或函数传递了无效参数。
这个答案提到了一个关闭输入流的垃圾收集器,但是我不明白为什么它会在我的代码中发生。任何帮助了解此问题的底部将不胜感激!
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应用程序才会崩溃。
winapi - 如何使用 NtOpenProcess
我正在尝试使用NtOpenProcess()
我在城里找不到任何例子。
我收到一个错误,非常感谢任何帮助。
错误是
这是我的包含文件。