问题标签 [virtualalloc]

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 投票
0 回答
226 浏览

c++ - VirtualAllocEx 强制分配页面

MSDN 文档说 VirtualAllocEx

除非/直到实际访问虚拟地址,否则不会分配实际的物理页面。

我需要在调用 VirtualAllocEx 后立即访问物理地址,但我不能导致它们尚未物理分配。

我如何强制它在 VirtualAllocEx 之后或之后分配物理页面而不先访问虚拟内存?

0 投票
1 回答
1123 浏览

delphi - VirtualAlloc - 为大文件分配空间

我目前正在尝试重写 Binary Diff 以支持更大的文件,因为GetMem用于读取文件会限制文件大小(我想)并且我无法读取 2 个每个大小为 900 MB 的文件。

所以我想,我可以使用VirtualAlloc,遗憾的是还没有那么好。从外观上看,第一个文件的分配工作正常 - 一旦我尝试为第二个文件分配内存,它就会返回一个空指针。不得不说我对分配内存还很陌生,所以如果我监督了一个已经回答了这个问题的线程,请原谅我(过去 4 小时我在互联网上搜索了一个解决方案)。

好吧,代码如下:

归根结底,我想使用该程序来比较两个任意大小的二进制非文本文件,并从中创建一个 Binary Diff。

0 投票
2 回答
2268 浏览

c++ - VirtualAlloc 失败

我正在尝试使用 VirtualAlloc 来保留和提交一块内存,然后再次扩展该块。不幸的是,尽管 VirtualQuery 说请求的地址范围是免费的,但它返回 NULL 并出现错误 ERROR_INVALID_ADDRESS。这是我的代码:

第一次分配返回 0x00000000000d0000。对 VirtualQuery 的调用会在“信息”中产生以下数据:

我解释这意味着有 0xff 可用页面从 0xd1000 开始处于 MEM_FREE 状态。那么为什么我在 0xd1000 提交页面的尝试失败了?

我正在运行 Windows 7,这是一个 64 位版本。

我已经阅读了几篇关于 VirtualAlloc 的 StackOverflow 帖子,但它们似乎都暗示这段代码应该像我对文档的理解一样工作。

0 投票
1 回答
1542 浏览

c++ - C ++获取分配部分的基地址

由于我不清楚之前我会重写我的问题。

我需要获取分配给VirtualAllocEx().

例如,如果我分配 0x20000 字节并获得地址 0x5000000。

我需要一种使用值 0x5015000 获取地址 0x5000000 的方法。

VirtualQuery() 返回值 0x5015000 所在的页面地址,而不是分配的内存部分的基地址。

所以我需要一种不同的方法来找到任何分配的内存部分的基地址。

0 投票
2 回答
1246 浏览

c++ - 无法在 VirtualQuery 返回的空闲区域上进行 VirtualAlloc

我试图在 Windows 应用程序中加载的 DLL 中的某个内存范围内分配一定数量的内存。

我这样做的方式是使用VirtualQuery()搜索标记为空闲并且在我需要进行分配的边界内的内存区域。我所看到的是,即使该区域被标记为MEM_FREE VirtualAlloc()有时无法分配内存。

代码非常接近以下内容:

VirtualAlloc()失败时GetLastError()返回ERROR_INVALID_ADDRESS (487).

我解决它的方法是,如果它足够大,则mbi.RegionSize使用页面大小步骤扫描以找到一个地址,该地址将允许我分配我需要的内存。

为什么根据VirtualQuery整个区域应该是免费的,我应该能够在我想要的任何地址内分配,但通常当第一次VirtualAlloc失败时,我必须循环几个步骤,直到它最终成功。

0 投票
1 回答
422 浏览

c# - 使用 VirtualAlloc 和 GetDelegateForFunctionPointer 在 C# 中运行字节数组时出错

我有一个用 c# 创建的 Windows 窗体程序,它只是一个窗体和一个按钮。我想在这里实现的是执行一个硬编码的字节数组,使用 VirtualAlloc 和一个委托。此硬编码字节数组与 warr.exe 安装程序的字节有关。我只是想试试它是否有效。选择 winrar 安装程序没有特殊原因。所以在按钮点击事件中,我有这个代码:

但是,当我执行程序并单击按钮时,出现此错误/异常: 在此处输入图像描述

我在这里做错了什么?它似乎与内存分配有关。我该如何解决?提前非常感谢!

0 投票
1 回答
893 浏览

c++ - 指定不同的起始地址时,`VirtualAllocEx` 返回相同的地址?

我试图让 calc.exe 显示一个消息框,但是一旦我执行我的程序,calc.exe 总是崩溃。所以我尝试将代码注入到我自己的进程中,以便查看调试消息。这样做会给我一个异常“访问冲突......无法执行......”指向pData->msg。然后我发现pThreadpData得到相同的地址。这怎么可能?我实际上设置和lpAddress不得到相同的起始地址。VirtualAllocExpPagepPage + 128

0 投票
1 回答
1162 浏览

winapi - 如何(临时)从 VirtualAlloc 释放内存?

使用时,VirtualAlloc我可以(ab)使用以下属性来简化内存管理。

除非/直到实际访问虚拟地址,否则不会分配实际的物理页面。

我运行以下代码来分配块。

这一切都很好。如果我的结构增长到 1.000.000 个元素,一切正常。
但是假设之后我的结构缩小到 1.000 个元素。

如何释放 RAM 以便在再次需要时自动神奇地提交?

警告
大卫警告我,分配一个提交的大(巨大)连续内存页面会带来很大的成本。
因此,将数组拆分为更小的块并使用类/记录抽象出内部可能更有利。

0 投票
1 回答
1539 浏览

c - 带有 MEM_TOP_DOWN 的 VirtualAlloc 的 Linux/POSIX 等效项是什么?

什么是具有 MEM_TOP_DOWN 的VirtualAlloc的 Linux 或 POSIX 等价物,如果有的话?

0 投票
0 回答
446 浏览

python - Pydbg 从 VirtualAlloc 转储内存

我使用以下代码取自: http ://securityxploded.com/automation-reversing-scripting.php#Pydbg

我的问题是如何读取 VirtualAlloc 将分配的内存?我尝试了 read_process_memory 但它没有用。