问题标签 [kernel32]

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 回答
1194 浏览

windows - 在 XP 系统上获取产品信息

GetProductInfo(API 功能)似乎在 XP Professional 上崩溃,而它在 Windows 7 Ultimate 上完美运行。什么是它的替代品?

0 投票
2 回答
5465 浏览

windows - 用于非感知可执行文件的 ASLR 和 Windows 系统 DLL?

来自微软文章

地址空间布局随机化 (ASLR)

当系统启动时,ASLR 将可执行映像移动到随机位置,从而使漏洞利用代码更难以可预测的方式运行。对于支持 ASLR 的组件,它加载的所有组件也必须支持 ASLR。例如,如果 A.exe 使用 B.dll 和 C.dll,则这三个都必须支持 ASLR。默认情况下,Windows Vista 及更高版本将随机化系统 DLL 和 EXE,但 ISV 创建的 DLL 和 EXE 必须使用 /DYNAMICBASE 链接器选项选择支持 ASLR。

我不太明白。获取 Windows 上每个进程加载的基本系统 DLL:NtDll.dllkernel32.dll.

如果有一个不知道的可执行文件,这些系统 DLL 会使用 ASLR 吗?也就是说,在 Win 7 上每次系统重新启动后,它们会在不同的基地址加载此可执行文件,还是在系统重新启动后总是在相同的基地址加载,就像在 Win XP 上一样?

为了更清楚我的意思:我的典型虚拟程序的启动堆栈将如下所示:

查看 asm BaseProcessStart,我在我的 XP 框中看到:

现在我感兴趣的是以下内容:

在 Windows XP 上,无论我重新启动这台机器多少次,地址都将始终为 0x7C817054。如果我在带有 ASLR 的 Win7 上,如果加载 kernel32.dll 的可执行文件没有为 ASLR 启用,这个地址会在重新启动之间改变吗?

(注意:对我来说,atm.,这个地址只有一个小用例有用:在 Visual Studio 中,我只能为程序集级函数设置一个“数据断点”,即断点@0x7.. . - 如果我想中断特定的 ntdll.dll 或 kernel32.dll 函数,在 Windows XP 中我不必在重新启动之间调整断点。随着 ASLR 的启动(这个问题的范围),我将不得不改变重新启动之间的数据断点。)

0 投票
1 回答
1612 浏览

c# - 在 WriteFile kernel32.dll 上检测到 PInvokeStackImbalance

从框架 2 迁移到框架 4 后,运行 WriteFile 函数时出现错误。

解决方案:

lpOverlapped 参数应该是一个 int32,它在 umanaged C++ 中是一个 unsigned long。

原始错误:

检测到 PInvokeStackImbalance 消息:对 PInvoke 函数 '' 的调用使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。

0 投票
2 回答
2022 浏览

windows - 我们可以 rebase kernel32.dll 吗?使得两个进程的加载地址不同

具体来说,我想知道同一会话中的两个进程的 kernel32.dll 加载地址是否可以不同?我想使用 createremote 线程,所以只是想知道远程进程中的 kernel32 加载地址是否与任何情况下的注入进程不同?

0 投票
2 回答
869 浏览

.net - .NET mscorlib.dll 和 Kernel32.dll 的关系

据我了解,需要输入/输出功能的应用程序必须与 Kernel32.dll 对话,后者又将请求发送到内核本身。然而,在 .NET 中,位于 mscorlib.dll 中的控制台类与任何其他应用程序一样,并不直接与内核对话,对吗?mscorlib.dll 是否必须将其请求发送到 Kernel32.dll 或者 .NET 是否具有绕过它的特殊特权?

有没有人对它的工作原理有深入的了解?

谢谢你。

0 投票
1 回答
1413 浏览

c# - 如何在 C# 中远程控制 cmd.exe 进程

我真的被一个问题困住了(现在已经有 7 天了),在我发疯之前,我想我会征求意见。

我想做的基本上就是启动和远程控制一个cmd.exe进程。然而,StandardInput 和 StandardOutput 流不能完成这项工作,因为它们不是由等待用户输入的“mysql”等命令触发的。

所以我想要的只是读取 cmd.exe 控制台的内容并写入它。但是 write 方法应该能够触发一个新命令。

我尝试了很多,我很确定 kernel32.dll 会成功:

  • 读取控制台输出()
  • 写控制台输入()
  • GetConsoleScreenBufferInfo()
  • SetConsoleCursorPosition()

当然,我已经有一些工作,但我绝对不确定我是否走对了路。因此我不会发布任何代码,因为它可能只会让你感到困惑。

如果有人可以向我指出一个工作演示或教程或类似的东西,那就太棒了。即使它是 C++ 或 C - 总比没有好。

提前致谢。

梅维斯·科赫海姆

PS:请不要只发布 pinvoke 或 MSDN 的链接,我需要的有点复杂。似乎我没有足够的 winapi 经验独自到达那里:/

编辑:我必须根据你们发布的链接尝试一些我得到的新想法。我会回来并发布我的发现。谢谢你们的帮助...

0 投票
2 回答
5043 浏览

c# - C# 中的 Windows CreateFile 返回无效句柄

我试图在 C# 应用程序中从 Kernel32.dll 调用 CreateFile 方法,并且每次都返回无效句柄。我已经看遍了,找不到解决这个问题的方法。以下是相关代码:

常数:

导入方法:

加载驱动程序的方法:

任何人都可以帮我解决问题吗?

0 投票
1 回答
92 浏览

.net - 在 Windows 窗体应用程序中访问控制台对象的最佳方法是什么?

我试图让我的 GUI 应用程序有一个 CLI 前端(而不是相反)。

我已经能够毫无问题地处理参数(感谢System.Environment.GetCommandLineArgs()),但我很好奇获得将输出写入控制台的最佳方法是什么。

我找到了对 的引用AllocConsole(),但不清楚这是否是唯一的方法,因为我更喜欢托管代码中显示的内容。

0 投票
1 回答
753 浏览

c# - 如何在 Mono.Cecil 中创建导出函数?

我究竟做错了什么?我正在尝试创建 LoadLibraryA 的导出函数并将其注入程序集中。

0 投票
4 回答
6739 浏览

c# - ReadFile Kernel32 最大缓冲区大小

我正在使用 C# 直接从磁盘读取并调用 kernel32 ReadFile 方法。我注意到,对于较大的读取(当前仅读取单个块),缓冲区大小超出范围。

有谁知道这里读取缓冲区的最大大小?

如果是这样,当我有多余的内存读入时限制缓冲区大小的目的是什么?我了解缓冲和保持小内存占用的概念,但为什么要强制我们使用小尺寸?也许只是旧 Win32 API 的产物?

编辑:收到的错误Marshal.GetLastWin32Error()是“值不在预期范围内”。

我收到此错误之前的上限是 8192 字节(8KB - 因此我很困惑)。

提前致谢。