问题标签 [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 回答
707 浏览

windows - 从 DllMain 加载/调用 ntdll

不应使用DllMain中kernel32.dll中的函数以外的函数:

来自 MS 文档:

因为当调用入口点函数时,Kernel32.dll 保证被加载到进程地址空间中,所以在 Kernel32.dll 中调用函数不会导致 DLL 在其初始化代码执行之前被使用。因此,入口点函数可以调用 Kernel32.dll 中不加载其他 DLL 的函数。例如,DllMain 可以创建临界区和互斥锁等同步对象,并使用 TLS。不幸的是,Kernel32.dll 中没有安全函数的完整列表。
...
调用需要除 Kernel32.dll 之外的 DLL 的函数可能会导致难以诊断的问题。例如,调用 User、Shell 和 COM 函数可能会导致访问冲突错误,因为某些函数会加载其他系统组件。相反,在终止期间调用诸如此类的函数可能会导致访问冲突错误,因为相应的组件可能已经被卸载或未初始化。

我的问题:
但是文档没有提到ntdll.dll。- 我可以为“ntdll”调用LoadLibrary并在DllMain中使用ntdll中的函数: 1) 在DLL_PROCESS_ATTACH期间(加载和使用 ntdll 的函数)? 2) 在DLL_PROCESS_DETACH期间(使用之前加载的 ntdll 的函数)?


另外,请拥有 1500+ 声誉的人愿意创建一个名为“dllmain”的新标签吗?

0 投票
0 回答
586 浏览

windows - Qt 应用程序在 Windows Server 2008 中崩溃,在 Windows Server 2003 中运行良好

崩溃细节指向ntdll.dll 当我在互联网上搜索时,我看到Windows 20008 Server 中报告了很多由于这个dll 导致的应用程序问题。我的 Windows Server 2008 机器使用最新的包和更新进行了更新。这是操作系统问题还是我的应用程序有问题?

0 投票
1 回答
3715 浏览

java - 在 Eclipse 中运行的 Java 程序导致 EXCEPTION_ACCESS_VIOLATION (0xc0000005)

我遇到了在 Eclipse 中运行的 Java 应用程序的问题。在执行期间的任意时间,应用程序崩溃并出现以下错误并转储。

一些可能有帮助的进一步信息:

  • 在我遇到项目设置问题(必须更正的 JVM 错误路径)之后,错误首先开始发生
  • 更新到最新的 Java 版本后仍然出现错误
  • 应用程序使用 JNA 加载和使用 LibNoDave
  • ManagerRBG3导致崩溃的并不总是同一个线程(这里是);然而,有趣的是 - 假设这是 JNA 的问题 - 导致崩溃的线程永远不是libnodave.dll直接使用的线程,而是通过使用 LibNoDave 处理所有通信的单独线程

我尝试搜索 SO,但出现的唯一结果与jvm.dll有问题的框架有关。这里是ntdll.dll.

关于可能导致此问题的任何点击或想法?还是我从一个完全错误的角度来看这个?

编辑:我使用的是 JNA,而不是 JNI。很抱歉混淆了。

Edit2:关于使用 LibNoDave 的说明

更新

我现在在新安装的 linux 机器上运行未修改的软件。到目前为止,没有出现并发症。这使我假设问题可能在于运行 eclipse 的机器上的 Java 安装。

在一个或任何可能导致 JNA 行为不端的 Java 更新期间是否可能存在并发症?

我对 Java 更新过程并不是很熟悉,但从我最近读到的内容来看,Java 出现“破坏自身”的情况并不少见——因为没有更好的术语。

0 投票
0 回答
495 浏览

opencv - OpenCV 出现奇怪的 ntdll.dll 错误

我在使用 BMP 图像时遇到了一个奇怪的错误。它似乎与损坏的文件无关,因为我创建了一个新图像,同样的错误再次发生。我不知道这是否重要,我正在使用 Iphoto Plus 4(非常旧的软件)来制作 BMP。

好吧,这就是发生的事情。图像尺寸为 2350 x 1624,如果您在坐标 x=1368,y=0 到 255,242,216 中设置像素颜色(我也发现了另一种组合:254,242,216,也许还有更多组合...)应用程序崩溃:

重现错误的代码:

错误信息:

  • 问题名称:APPRCASH
  • 文件名称:xyz.exe
  • Anwendungs 版本:0.0.0.0
  • Anwendungszeitstempel: 5217d7e2
  • 模块名称:ntdll.dll
  • Fehlermodulversion:6.0.6000.16386
  • Fehlermodulzeitstempel: 4549bdc9
  • Ausnahme 代码:c0000005
  • Ausnahmeoffset: 00061884
  • Betriebsystem版本:6.0.6000.2.0.0.768.3
  • Gebietsschema-ID:1031
  • ...

现在,这只发生在那个特定的像素位置并且只有几组 R、G、B 值。为什么?有人有想法吗?... 我迷路了 :-(

0 投票
1 回答
308 浏览

x86 - Windows NT 本机应用程序是否可以访问 x86 软件中断(如 int 19)?

假设我想编写一个在 Windows NT Native 模式下运行的应用程序或驱动程序(即只使用 NTDLL.DLL 函数并在 ntoskrnl.exe 启动时运行。

这个应用程序可以访问 x86 中断吗?IE,我可以这样写代码:

并让它返回启动菜单?或者即使在内核模式下仍然不允许这样做?

0 投票
1 回答
3034 浏览

winapi - 使用 EasyHook (c#) 从 ntdll.dll 挂钩 NtCreateFile API

这是我第一次尝试挂钩 Windows API。我的目标是监视进程将要创建/打开/读取/写入的所有文件。为了尽可能地冗长,我决定挂钩 ntdll.dll API,例如 NtCreateFile() 和 NtOpenFile()。所以,为了实现这个目标,我继续使用 EasyHook,它看起来简单而强大。我基本上遵循了 FileMon 示例,改变了我真正想要的:Hooked 函数。当我尝试读取有关将要打开的文件的信息时,我尝试从 OBJECT_ATTRIBUTES 结构中读取信息,例如 ObjectName。这些是整数指针,所以我希望使用函数 Marshal.PtrToStringAuto(attributes.objectName) 来获取字符串值。但是,结果是我只能有坏字符串,没有任何意义。还,文件访问似乎不起作用。我猜这段代码有问题,可能在 DllImport 签名中。请注意,我必须用 IntPtr 替换 SafeHandle,因为 EasyHook 抱怨要编组它们。有人能帮我吗?

这是我注入的DLL的具体代码:

这是 Run 方法代码

这是构造函数代码:

这里有 Hook 委托和钩子函数

这里有 NtDll.Dll 原生函数:

0 投票
0 回答
1489 浏览

windows - 运行 Windows 应用程序时如何解决 ntdll、msado15 和 stackhash 错误?

我有一个应用程序在我的系统和其他一些客户上运行良好。但是我有一个特定的客户,这对它不起作用。我尝试了以下方法:

  1. 更新视窗。
  2. 关闭防火墙。
  3. 关闭 DEP。
  4. 关闭 UAC。

但这些都不起作用。以下是出现的错误。

第一的:

第二:

第三:

0 投票
0 回答
980 浏览

ntdll - 加载两次时如何获取ntdll函数的地址?

我打算挂接到一个ntdll函数ZwTerminateProcess,但遇到了问题x64,因为如果一个x86应用程序在 Windows 中运行x64,它会加载two ntdlls:一个来自System32路径,另一个来自SysWOW64.

直到这里我没有任何问题,除了:ntdll(system32)当我列出dllsusing 时第一个没有出现,CreateToolhelp32Snapshot()或者EnumProcessModules()当我使用GetModuleHandle()return时hModule,第二个没有出现ntdll(SysWOW64)

我在想也许第一个dll加载了,LOAD_LIBRARY_AS_DATAFILE flag但如果是这种情况,应用程序将无法使用first ntdll(System32). 我试图ZwTerminateProcess()在第二个中钩住它,ntdll但它不起作用。有人知道如何帮助我吗?

如果需要更多说明,请告诉我。

谢谢你,道格拉斯。

0 投票
1 回答
272 浏览

vb6 - 在 VB6 中循环调用 NtQuerySystemInformation

我有一个 VB6 应用程序,它具有以下似乎正在尝试访问 Windows 进程信息的代码片段

我认为这可能是间歇性无限循环的原因 - REDIM 数组并咀嚼所有内存。

有没有人知道以下代码的用途,如果他们可以帮助捕捉它循环很长时间并且 bytBuf 的大小增长过多的场景(并且您可以推荐一个最大数组大小为 bytBuf ?)

非常感谢安德鲁

0 投票
2 回答
601 浏览

vba - 遇到断点时访问崩溃

我在 Access 2010 中有一个运行没有问题的项目。也就是说,直到我添加断点并尝试调试代码。一旦到达第一个断点,VBA 项目就会打开,大约 1 秒后 Access 崩溃并重新启动。我可以添加一个 Debug.Print 并且一切正常。我只是无法单步执行代码。

修复和压缩不起作用,也没有创建新项目并导入所有内容。

看着事件查看器,我得到:

我无法注销和重新注册 DLL(找不到入口点)。我已经尝试了http://pcsupport.about.com/od/fixtheproblem/a/ntdlldll.htm上的所有内容,但没有重新安装 Windows,但仍然没有。在安全模式下运行 Access 确实有帮助,但不能永久修复它。

还有其他想法吗?

更新:我现在有一台新笔记本电脑并升级到 Access 365。它仍然会发生。但仅限于一个特定项目。其他项目工作正常。