问题标签 [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 - NtCreateProcess 和 ZwCreateProcess 有什么区别?
NtCreateProcess
和 和有什么不一样ZwCreateProcess
?在ntdll.dll中,两者都NtCreateProcess
指向ZwCreateProcess
完全相同的地址
windows - NT DLL Loader 是否按照可执行文件的导入部分的顺序加载 DLL?
如果您在 Windows 上有可执行文件,则可以使用 DUMPBIN 实用程序(例如包含在 Visual Studio 中)查看其导入部分。
要获取所有导入的 DLL 的列表,您可以运行以下命令(只是一个任意示例):
我现在在另一个问题中推测,对于独立的 DLL,加载器(将 DLL 映射到地址空间并调用其 DllMain 函数的组件)将按照它们在导入部分中出现的顺序加载 DLL。
注意:这显然只适用于独立的 DLL,因为加载器必须解决依赖关系,因此任何依赖于任何其他的 DLL 将始终是一个接一个的加载器。所以这个问题只能适用于独立(非系统)DLL。
继续我上面的(任意选择的)示例,
libgimpmath
并且libgimpcolor
在这个意义上是独立的DLL。所以这里的问题是:加载程序是否总是先加载libgimpcolor
,libgimpmath
因为它位于导入部分的首位?
c# - 从另一个进程中删除互斥锁
使用主题概述 - 句柄枚举,第 5 号,尝试关闭另一个进程的互斥锁以及来自互斥锁分析的信息,煤矿中的金丝雀和发现新的恶意软件家族/,我想出了:
Attempt 1:
http://pastebin.com/QU0WBgE5
您必须先打开记事本。不用说,这对我不起作用。我需要更好的错误检查来弄清楚发生了什么。我不知道如何以我在Process Explorer中看到的格式获取互斥指针。
我的目标是能够删除/杀死由进程创建的互斥体句柄,以便可以打开多个实例。我可以使用 Process Explorer 手动执行此操作,但我想以编程方式执行此操作。
(根据 Yahia 的笔记,我需要更多权限。)
Attempt 2:
http://pastebin.com/yyQLhesP
至少现在我进行了某种错误检查,大多数情况下 DuplicateHandle 返回 6 或 5,这是一个无效句柄,并且访问被拒绝。
工作尝试(种类):
我实际上并不需要 Yahia 最后所说的任何东西。当我需要一个远程句柄时,我得到了一个“本地”句柄。基本上,我的意思是你必须找到 HandleValueNtQuerySystemInformation
并使用该句柄,而不是OpenMutex
/返回的那个CreateMutex
。
诚然,我无法让它在某些应用程序上运行(osk.exe——在屏幕键盘上),但它适用于我想要的应用程序,发布代码以防有人想进一步使用它。
visual-studio-2010 - NtQueryInformationProcess 在 Visual Studio 2010 中不起作用
我有一个奇怪的问题,在我必须提到我的主要编程语言是 delphi 而不是 c++ 之前我没有遇到过,我可能会犯一个愚蠢的错误并且没有意识到这一点。
我有以下代码:
我收到以下错误消息:
GetCommandArgs.obj:错误 LNK2019:未解析的外部符号 _NtQueryInformationProcess@20 在函数 _wmain 中引用
问题是什么 ?非常感谢。
visual-studio - StyleCop 4.7 在 Visual Studio 2010 中崩溃
早晨,
不知道有没有其他人经历过以下情况。
直到今天早上,我的 Windows 7/Visual Studio 2010 Ultimate/StyleCop 4.7.11.0 设置工作正常。
然而,当我今天早上启动我的电脑,启动 Visual Studio 2010 并加载了一个在各种项目上启用了 stylecop 的解决方案时,我发现当我尝试构建任何启用了 stylecop 的项目时 IDE 崩溃了。例如 thjose 在 .csproj 中有以下条目
... 错误的
从 .csproj 文件中删除这些 StyleCop 条目或卸载 StyleCop 可以自行“修复”问题并允许我构建解决方案。但是重新安装 .csproj 文件中的 stlecop 条目并重新安装 StyleCop v4.7.11.0 或 v4.7.17.0 导致问题再次出现。
事件视图中唯一的错误是指 NTDLL.DLL
错误应用程序名称:devenv.exe,版本:10.0.40219.1,时间戳:0x4d5f2a73 错误模块名称:ntdll.dll,版本:6.1.7601.17725,时间戳:0x4ec49b8f 异常代码:0xc00000fd 错误偏移:0x0002e17c 错误进程 id:0x17d8 错误应用程序启动时间:0x01cd0cd0f8cd1730 错误应用程序路径:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 错误模块路径:C:\Windows\SysWOW64\ntdll.dll 报告 ID:56b93280-78c4 -11e1-bef3-001cc0c2a2ac
或一次 CLR.dll
错误应用程序名称:devenv.exe,版本:10.0.40219.1,时间戳:0x4d5f2a73 错误模块名称:clr.dll,版本:4.0.30319.239,时间戳:0x4e181a6d 异常代码:0xc00000fd 错误偏移:0x00038b13 错误进程 id:0x14c8 错误应用程序启动时间:0x01cd0cbf6cf79511 错误应用程序路径:c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 错误模块路径:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr .dll 报告 ID:c82f5abd-78b2-11e1-b990-001cc0c2a2ac
c++ - Win32环境下从ntdll.dll调用Nt函数,C++
我想从 ntdll.dll 调用一些 Nt 函数,我正在像上面那样做。
对于调用: NtTestAlert() ,您需要典型的 ntcall 内核例程,可通过 int 2Eh 访问。(从这里我得到了 Nt 函数http://undocumented.ntinternals.net/)
代码也未完成,我得到:
*错误C2664:'_ ntcall':无法将参数1从'int'转换为'MESS( _stdcall )'
windows - Windows 注册表,如何添加您的本机程序以进行启动执行?
我已经为 Windows 完成了本机程序。
(其中,我已经编译#pragma comment(linker, "/SUBSYSTEM:NATIVE"
))。
我想将我的程序添加到自动执行列表中,我该怎么做?
我的确切问题是:
1)。我怎么能在 Windows 注册表中做到这一点(我已经用谷歌搜索了 BootExecute/SetupExecute 表,但安装程序是空的,并且 BootExecute 只有:*autocheck autochk **)。所以我对空表感到困惑(原因,如果它是空的,那么 Windows 中另一个自动执行程序在哪里,ntdll.dll 会加载哪个?)
2)。可执行程序的版本是否重要:对于 32/64 位系统?
我把它放在%windir%\system32中,但也有%windir%\WOW64文件夹。
我应该在注册表中突出显示这个细节,还是 Windows 从两个文件夹中加载每个驱动程序,然后在 taskmgr 中简单地将它们突出显示为*32或 64 位程序?
3)。有没有其他方法可以做到这一点?
command-line - NtQueryInformationProcess 似乎返回错误的命令行
我正在使用NtQueryInformationProcess( ) 在 Windows 7 上检索另一个进程的命令行(通过NtQueryInformationProcess () 返回的 PEB 中的 RTL_USER_PROCESS_PARAMETERS)。
这通常可以正常工作,但是当启动同一可执行文件的多个实例时,所有实例的命令行字符串都是相同的:它始终是启动的第一个实例的命令行。GetCommandLine() 为每个进程返回正确的命令行。
有人可以证实或伪造这一点吗?
c++ - POCO中找不到ntdll.dll?
当我使用 HTTPSClientSession 运行程序时,它崩溃了,因为:
然后,我跟踪堆栈,发现ntdll.dll
没有加载,我对此表示怀疑。
任何想法为什么 NTDLL 看起来没有加载?
c++ - 如何确定进程打开文件的顺序?
有没有办法获取进程的所有打开文件句柄并按文件打开时间安排它?我们有一个项目,正是需要这个 - 我们需要确定哪些文件是由 Dj 软件打开的,例如 Traktor 或 Serato。我们需要知道它的顺序的原因是要确定哪个文件在第一个卡组中,哪个在第二个卡组中。
目前,我们正在使用来自 Ntdll.dll (Winternl.h) 的 Windows 内部 API 来确定进程的所有打开文件的列表。也许这不是最好的方法。任何建议都受到高度赞赏。
我们依赖于在某些操作系统版本和某些 Dj 软件版本上观察到的 API 行为,即进程的所有打开文件列表永远不会重新排列,即遵循顺序。我知道这是一种不好的做法,但这是客户在发布之前“应该”的功能,所以我们不得不这样做。现在的问题是,当这些句柄有时在没有任何特定原因的情况下随机重新排列时,我们遇到了一个错误。那会阻止一切。我想也许那些win结构中会有一个字段来获取文件的打开时间,但似乎没有这样的东西。有关该 API 的文档非常糟糕。
我想到了一些代码粘贴,但它是一个 200 行长的函数,它使用函数指针从 dll 间接调用,并且 WinAPI 的所有结构都是手动重新定义的,所以真的很难阅读。实际上,甚至没有包含 Winternl.h 标头 - 所有内容也是手动加载的,如下所示:
对于一个跨平台的应用来说,真的很头疼……
PS我在这里发布了一个相关的问题,关于任何跨平台或Qt方式来获取打开的文件句柄,也许这些东西会有用或相关。