问题标签 [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 - 从 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”的新标签吗?
windows - Qt 应用程序在 Windows Server 2008 中崩溃,在 Windows Server 2003 中运行良好
崩溃细节指向ntdll.dll 当我在互联网上搜索时,我看到Windows 20008 Server 中报告了很多由于这个dll 导致的应用程序问题。我的 Windows Server 2008 机器使用最新的包和更新进行了更新。这是操作系统问题还是我的应用程序有问题?
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 出现“破坏自身”的情况并不少见——因为没有更好的术语。
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 值。为什么?有人有想法吗?... 我迷路了 :-(
x86 - Windows NT 本机应用程序是否可以访问 x86 软件中断(如 int 19)?
假设我想编写一个在 Windows NT Native 模式下运行的应用程序或驱动程序(即只使用 NTDLL.DLL 函数并在 ntoskrnl.exe 启动时运行。
这个应用程序可以访问 x86 中断吗?IE,我可以这样写代码:
并让它返回启动菜单?或者即使在内核模式下仍然不允许这样做?
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 原生函数:
windows - 运行 Windows 应用程序时如何解决 ntdll、msado15 和 stackhash 错误?
我有一个应用程序在我的系统和其他一些客户上运行良好。但是我有一个特定的客户,这对它不起作用。我尝试了以下方法:
- 更新视窗。
- 关闭防火墙。
- 关闭 DEP。
- 关闭 UAC。
但这些都不起作用。以下是出现的错误。
第一的:
第二:
第三:
ntdll - 加载两次时如何获取ntdll函数的地址?
我打算挂接到一个ntdll
函数ZwTerminateProcess
,但遇到了问题x64
,因为如果一个x86
应用程序在 Windows 中运行x64
,它会加载two ntdlls
:一个来自System32
路径,另一个来自SysWOW64
.
直到这里我没有任何问题,除了:ntdll(system32)
当我列出dlls
using 时第一个没有出现,CreateToolhelp32Snapshot()
或者EnumProcessModules()
当我使用GetModuleHandle()
return时hModule
,第二个没有出现ntdll(SysWOW64)
。
我在想也许第一个dll
加载了,LOAD_LIBRARY_AS_DATAFILE flag
但如果是这种情况,应用程序将无法使用first ntdll(System32)
. 我试图ZwTerminateProcess()
在第二个中钩住它,ntdll
但它不起作用。有人知道如何帮助我吗?
如果需要更多说明,请告诉我。
谢谢你,道格拉斯。
vb6 - 在 VB6 中循环调用 NtQuerySystemInformation
我有一个 VB6 应用程序,它具有以下似乎正在尝试访问 Windows 进程信息的代码片段
我认为这可能是间歇性无限循环的原因 - REDIM 数组并咀嚼所有内存。
有没有人知道以下代码的用途,如果他们可以帮助捕捉它循环很长时间并且 bytBuf 的大小增长过多的场景(并且您可以推荐一个最大数组大小为 bytBuf ?)
非常感谢安德鲁
vba - 遇到断点时访问崩溃
我在 Access 2010 中有一个运行没有问题的项目。也就是说,直到我添加断点并尝试调试代码。一旦到达第一个断点,VBA 项目就会打开,大约 1 秒后 Access 崩溃并重新启动。我可以添加一个 Debug.Print 并且一切正常。我只是无法单步执行代码。
修复和压缩不起作用,也没有创建新项目并导入所有内容。
看着事件查看器,我得到:
我无法注销和重新注册 DLL(找不到入口点)。我已经尝试了http://pcsupport.about.com/od/fixtheproblem/a/ntdlldll.htm上的所有内容,但没有重新安装 Windows,但仍然没有。在安全模式下运行 Access 确实有帮助,但不能永久修复它。
还有其他想法吗?
更新:我现在有一台新笔记本电脑并升级到 Access 365。它仍然会发生。但仅限于一个特定项目。其他项目工作正常。