问题标签 [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.
c# - PInvoke ReadFile kernel32:试图读取或写入受保护的内存。这通常表明其他内存已损坏
我正在尝试使 kernel32 的 ReadFile 工作,因为本机 c# 替代品很慢,因为...
以下代码运行了几次,然后突然只给出“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”
我认为重新启动服务器会使其工作几次,然后再出现相同的错误,但似乎我错了,无论我现在做什么都会发生..
这是我的代码:
我认为这就是所有相关的代码。
我猜这与 CreateFile 和 ReadFile 签名不完全兼容(IntPtr 与 int)、IntPtr 的 Marshal.PtrToStructure 没有指向它应该指向的位置、或者内存没有被释放或什么有关?不过,重启后它对几次尝试都不起作用的事实让我感到困惑。
有人发现任何明显的东西或有什么我可以研究的建议吗?
谢谢
编辑:您可能会注意到,这是一种不同方法的混搭,我不再使用固定缓冲区,因为我努力让缓冲区的内容像我想要的那样读取。
Edit2:堆栈跟踪说这是问题所在:
module - Mingw - kernel32.mod - 没有这样的文件或目录
我想用 Fortran 编写的 MinGW 编译一个带有 .dll 的程序。在 Fortran 代码中有以下行:
当我尝试编译它时,它总是说 kernel32.mod 无法打开。没有这样的文件和目录。我不知道该怎么办。是否缺少一些编译器选项,或者根本无法使用 MinGW 编译它?
(Windows 7,MinGW 3.20)
c# - 通过共享路径获取 HDD 串行
我有一个 C# win 表单应用程序。在其中,我通过使用这种方法获得了一个独特的 HDD 系列。
音量变量为Path.GetPathRoot(Environment.CurrentDirectory)
我得到的序列为SerialNumber.ToString("X")
工作正常,但情况是;
- 我已共享应用程序文件夹。当我运行时,我得到
XXXXXXXX
了串行EXE
- 当另一个人从我的共享路径运行应用程序时,他会得到
00000000
串行 - 但是,当另一个用户映射此文件夹并运行应用程序时,他将获得
XXXXXXXX
串行
那么这个问题的原因是什么?有没有更好的使用方法?
我提到了WMI,但不适合我的需要。
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 原生函数:
winapi - 在 NaCl 模块中使用 User32/GDI32/Kernel32 的方法
我有使用 Win32 API 的 ActiveX 和 NPAPI 插件。我想将该插件移植到 NaCl 模块。但我找不到用 Win32 库构建的方法。我可以在 NaCl 中使用 User32/GDI32/Kernel32 API 吗?
c++ - VirtualProtect 和 kernel32.dll - 尝试访问无效地址
我正在分析进程加载的各种模块。kernel32.dll
不幸的是,尽管该功能与其他模块(例如)一起正常工作,但我无法创建内存快照ntddl.dll
。问题在于以下代码:
调用此代码的结果kernel32.dll
是:
错误描述说:
我检查了进程的内存映射和 kernel32.dll 地址是否正确。原因是什么?
java - 获取笔记本电脑是否在 Windows 7 中 [in ACLine] 充电或不充电 [not in ACLine]?
我正在使用Netbeans IDE 7.4。我尝试使用以下代码,但在尝试执行时出现错误。编译没问题。
在开始之前,我已经下载了 jna-3.5.1.jar并在我的项目中添加了[右键单击“Libraries”>>“Add JAR/Folder...”]。
下面是代码:
下面是遇到的错误:
winapi - 如何翻译“aKernel32_dll_0: unicode 0,, 0" 成法律声明?
我使用 IDA Pro 在 Windows 7 32 位上反汇编 SPEC 2006 二进制文件。
它生成一个声明如下的变量:
在 .text 部分,我发现这个变量的用法是这样的:
我想要做的是让这些代码/数据重新组合。
所以我的问题是:
所以基本上像**aKernel32_dll_0 unicode 0, ,0 **这样的声明不能被masm/nasm直接重新组装,我应该如何调整呢?
我只是将它调整为aKernel32_dll_0 dd 0,代码是这样的:
每次 调用 ds:__imp__GetModuleHandleW@4后都会遇到奇怪的情况
与使用 Ollydbg 的原始二进制文件进行比较:
所以看起来 aKernel32_dll_0 实际上是一个外部变量?那么正确的方法是 删除声明并extern声明这个变量吗?如果是这样,那么这个变量的名称是什么?我不认为它是 aKernel32_dll_0,因为它看起来像是由 IDA Pro 生成的随机名称。
谁能给我一些帮助?谢谢!
windows - 访问 x64 TEB C++ 和汇编
在 32 位汇编中,我可以访问ProcessEnvironmentBlock
该TEB
结构。从那里我可以访问Ldr
该TEB
结构。
此处描述了此技术: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()
但我想使用汇编来完成。
但是,它根本无法工作。任何想法为什么?