问题标签 [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 投票
2 回答
2012 浏览

c# - PInvoke ReadFile kernel32:试图读取或写入受保护的内存。这通常表明其他内存已损坏

我正在尝试使 kernel32 的 ReadFile 工作,因为本机 c# 替代品很慢,因为...

以下代码运行了几次,然后突然只给出“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”

我认为重新启动服务器会使其工作几次,然后再出现相同的错误,但似乎我错了,无论我现在做什么都会发生..

这是我的代码:

我认为这就是所有相关的代码。

我猜这与 CreateFile 和 ReadFile 签名不完全兼容(IntPtr 与 int)、IntPtr 的 Marshal.PtrToStructure 没有指向它应该指向的位置、或者内存没有被释放或什么有关?不过,重启后它对几次尝试都不起作用的事实让我感到困惑。

有人发现任何明显的东西或有什么我可以研究的建议吗?

谢谢

编辑:您可能会注意到,这是一种不同方法的混搭,我不再使用固定缓冲区,因为我努力让缓冲区的内容像我想要的那样读取。

Edit2:堆栈跟踪说这是问题所在:

0 投票
1 回答
580 浏览

module - Mingw - kernel32.mod - 没有这样的文件或目录

我想用 Fortran 编写的 MinGW 编译一个带有 .dll 的程序。在 Fortran 代码中有以下行:

当我尝试编译它时,它总是说 kernel32.mod 无法打开。没有这样的文件和目录。我不知道该怎么办。是否缺少一些编译器选项,或者根本无法使用 MinGW 编译它?

(Windows 7,MinGW 3.20)

0 投票
0 回答
148 浏览

c# - 通过共享路径获取 HDD 串行

我有一个 C# win 表单应用程序。在其中,我通过使用这种方法获得了一个独特的 HDD 系列。

音量变量为Path.GetPathRoot(Environment.CurrentDirectory)

我得到的序列为SerialNumber.ToString("X")

工作正常,但情况是;

  1. 我已共享应用程序文件夹。当我运行时,我得到XXXXXXXX了串行EXE
  2. 当另一个人从我的共享路径运行应用程序时,他会得到00000000串行
  3. 但是,当另一个用户映射此文件夹并运行应用程序时,他将获得XXXXXXXX串行

那么这个问题的原因是什么?有没有更好的使用方法?

我提到了WMI,但不适合我的需要。

0 投票
1 回答
2238 浏览

c# - kernel32.GetDllDirectory 在通过 pinvoke 调用时返回错误 (0)

给定


MSDN指出

如果函数成功,则返回值是复制到 lpBuffer 的字符串的长度,以字符为单位。

我收到了0,错误0也是。这里有什么问题?

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 投票
1 回答
208 浏览

winapi - 在 NaCl 模块中使用 User32/GDI32/Kernel32 的方法

我有使用 Win32 API 的 ActiveX 和 NPAPI 插件。我想将该插件移植到 NaCl 模块。但我找不到用 Win32 库构建的方法。我可以在 NaCl 中使用 User32/GDI32/Kernel32 API 吗?

0 投票
1 回答
5369 浏览

c++ - VirtualProtect 和 kernel32.dll - 尝试访问无效地址

我正在分析进程加载的各种模块。kernel32.dll不幸的是,尽管该功能与其他模块(例如)一起正常工作,但我无法创建内存快照ntddl.dll。问题在于以下代码:

调用此代码的结果kernel32.dll是:

错误描述说:

我检查了进程的内存映射和 kernel32.dll 地址是否正确。原因是什么?

0 投票
0 回答
639 浏览

java - 获取笔记本电脑是否在 Windows 7 中 [in ACLine] 充电或不充电 [not in ACLine]?

我正在使用Netbeans IDE 7.4。我尝试使用以下代码,但在尝试执行时出现错误。编译没问题。

在开始之前,我已经下载了 jna-3.5.1.jar并在我的项目中添加了[右键单击“Libraries”>>“Add JAR/Folder...”]。

下面是代码:

下面是遇到的错误:

0 投票
1 回答
89 浏览

winapi - 如何翻译“aKernel32_dll_0: unicode 0,, 0" 成法律声明?

我使用 IDA Pro 在 Windows 7 32 位上反汇编 SPEC 2006 二进制文件。

它生成一个声明如下的变量:

在 .text 部分,我发现这个变量的用法是这样的:

我想要做的是让这些代码/数据重新组合。

所以我的问题是:

  1. 所以基本上像**aKernel32_dll_0 unicode 0, ,0 **这样的声明不能被masm/nasm直接重新组装,我应该如何调整呢?

  2. 我只是将它调整为aKernel32_dll_0 dd 0,代码是这样的:

在此处输入图像描述

每次 调用 ds:__imp__GetModuleHandleW@4后都会遇到奇怪的情况

与使用 Ollydbg 的原始二进制文件进行比较:

在此处输入图像描述

所以看起来 aKernel32_dll_0 实际上是一个外部变量?那么正确的方法是 删除声明并extern声明这个变量吗?如果是这样,那么这个变量的名称是什么?我不认为它是 aKernel32_dll_0,因为它看起来像是由 IDA Pro 生成的随机名称。

谁能给我一些帮助?谢谢!

0 投票
3 回答
6363 浏览

windows - 访问 x64 TEB C++ 和汇编

在 32 位汇编中,我可以访问ProcessEnvironmentBlockTEB结构。从那里我可以访问LdrTEB结构。

此处描述了此技术:http ://en.wikipedia.org/wiki/Win32_Thread_Information_Block

在 32 位汇编中执行此操作的代码是:

TEB 结构可以在这里看到:http: //msdn.moonsols.com/win7rtm_x64/TEB.html,PEB 结构可以在这里看到:http: //msdn.moonsols.com/win7rtm_x64/PEB.html

以上适用于 32 位代码。

但是,我还想编写代码以在 x64 机器上工作。我查看了 x64 版本的结构并写道:

这可以使用Winnt.h NtCurrentTeb()但我想使用汇编来完成。

但是,它根本无法工作。任何想法为什么?