问题标签 [readprocessmemory]
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# - 从外部地址读取浮点值
我正在尝试从外部地址获取浮点值。为此,我正在使用以下代码:
返回的字符串数组写在一个文本框中,但它始终为 0。它实际上应该是 8000 左右(这是作弊引擎的输出)我做错了什么?
错误代码是 299
c# - 将函数从 C++ 转换为 C#
可以将以下代码段转换为 C#.NET 吗?
当您想在 C++ 中从内存中读取数据时,这非常有用,因为它是通用的:您可以在一个函数中使用Read<"int">(0x00)"
或拥有所有数据。Read<"vector">(0x00)
在 C#.NET 中,它对我不起作用,因为要读取内存,您需要具有预定义参数的 DLLImport ReadProcessMemory,这些参数当然不是通用的。
python - python中ReadProcessMemory读取64位进程内存的问题
使用 ReadProcessMemory 读取 64 位进程 (Minesweeper) 的内存时,我收到错误代码 998 (ERROR_NOACCESS)。我在 Windows 7 64 位上使用 python 3.5 64 位。
奇怪的是,这个错误只发生在较高的地址上,例如 0x 0000 0000 FF3E 0000。较低的地址,例如 0x 0000 0000 0012 AE40 不会抛出错误并返回正确的扫雷数据。
当我在 C#.NET 中使用几乎相同的代码编写相同的程序并查看相同的地址时,它可以工作并且我没有收到错误!
我知道我正在查看的地址是正确的,因为我可以使用 Cheat Engine 和 VMMap 看到它。我不知道它是否相关,但我正在查看的更高地址是Minesweeper中MineSweeper.exe模块的基本模块地址。
为什么python代码不起作用?
Python 代码(对更高地址抛出错误,但对更低地址有效):
C#.NET 代码(64 位项目,无错误):
f# - 在 F# 中读/写另一个进程内存单子
我致力于单人游戏的作弊。我喜欢函数组合、不变性和没有样板的代码,所以这就是我决定用 F# 编写作弊代码的原因。我完成了一些工作正常的事情。我知道代码远非完美,但今天我开始使用 F#。
我想知道是否有办法以某种方式从我的代码中消除副作用。你能给我一些提示如何实现吗?
谢谢,
拉法尔
c# - 获取进程主入口 C#
我目前正在使用 C# 制作内存扫描仪。因此,我想确定进程的主内存入口点(通常0x400000
为x32
)。我已经打开了pHandle
所有访问权限。如何获取要扫描的起始地址?
c# - C# ReadProcessMemory:如何读取 64 位内存地址?
我正在阅读应用程序内存。我正在使用 CheatEngine 获取内存地址,然后尝试返回它的值。但是,CheatEngine 似乎返回 64 位内存地址,因此我的 ReadProcessMemory 函数不断告诉我,每当我输入地址时,它都无法将“long”转换为“int”。我发现的所有教程似乎都基于类似于 00AB5678 的内存地址,但我得到的更像是 D3569227FC。
所以我的问题是,如何使用具有更大内存地址的 ReadProcessMemory?
这是我的代码:
编辑:我已经将我的 C# 应用程序转换为 64 位应用程序,方法是进入 VS2012-->Project-->ApplicationName Properties-->Build-->Platform Target-->Change to "x64",现在我只需要知道如何更改我的代码以读取 64 位地址。
c++ - C++ ReadProcessMemory 缓冲区始终显示 0
我的 &pTemp
所以我认为我不太了解这一点。如果我没记错的话,指针值应该存储在 pTemp 中,对吧?那么,如果基指针是 0x00001A,pTemp 不应该显示同样的东西吗?我真的是 C++ 新手,任何帮助将不胜感激!
python - ctypes ReadProcessMemory Python,如果值以 00 结尾则停止读取
我无法读取一些内存地址。大多数工作正常,除非它们以“00”结尾,例如:“1C1F3400”。
我有这个阅读功能本身的代码:¨
然后我有这个代码,它有时会失败,这需要一个预设指针数组,并在遍历它们之后找到正确的地址。模块地址较早找到并且在类变量中。
当从最后一个地址读取的值的末尾没有 00 时,它是这样工作的:
这个值保存了预期的结果(在这种情况下是一个整数)。
但有时我会得到这个:
通过使用作弊引擎手动读取值,它应该等于 1C1F3400。并从那里跟随指针链按原样工作,最终结果是正确的值。ReadProcessMemory 函数没有返回错误(它返回 1),但解包失败,因为 rPM 读取的值为 0。
由于失败的地址最后总是有 00 我猜这会提前停止读取?有什么办法可以解决这个问题或我犯的任何明显错误吗?或者也许我的假设是错误的。
我也可能有其他错误,解包字节让我感到困惑。我已经阅读了许多其他问题,但其中大多数是关于由于错误句柄或 rPM 函数返回的另一个错误而导致内存读取失败的问题,在这种情况下,它表示它成功但输出为 0(不是返回值)。看起来解包函数不是问题,因为通过打印“theValue”我可以看到它变为 0(因此解包失败)。除了这些值之外,它也可以正常工作。
我已经测试以确保它在找到值 0x1B334D00,0x04DA8300 以及其他以 00 结尾的值时也失败了。我可以执行类似读取 3 个字节并在末尾添加 00 的操作吗? ? 除此之外,我的“theValue”类型可能是错误的,或者 struct.unpack 参数可能有问题。
我确实搜索了很多,但我可能在此过程中错过了一些明显的答案,如果我这样做了,对不起。
编辑:我正在做的是读取指针值以获取正确的内存地址。我有偏移量和初始地址以及为我要查找的每个地址存储的模块地址。每次失败的地方都不一样。所以每次读取都应该返回一个指针地址,然后我向它添加一个偏移量并获取下一个地址。但有时它会一路失败,特别是当指针有一个以 00 结尾的十六进制地址时。然后 ReadProcessMemory 什么都不返回,而不是地址(但不是错误,只是什么都没有)。我知道地址在那里,因为在使用其他工具时可以看到它,但是这里使用它的方式是什么都不返回,而是返回地址,我不知道为什么。struct 的用法应该没问题,我认为问题出在 ReadProcessMemory 上。
结构错误说“解包需要长度为 4 的字符串参数”,我认为这是因为 ReadProcessMemory 没有返回任何内容。如果我读取一个值为 0 的地址并在其上使用 struct.unpack,我会得到同样的错误,我认为这是正常的。
c# - C# - 读写进程内存、指针和偏移量玩家服务器管理工具
我正在为游戏编写服务器管理器,但遇到了 C# 中的指针和偏移量。旧的服务器管理器是用 vb6 编写的,由于某种原因在我的 Windows 上不起作用,所以我决定用 C# 编写它的一些基本功能。
我有所有必要的指针和偏移值,现在我写的只是为了获取所有玩家的名字。
玩家指针 = 96C290 玩家姓名偏移量 = +20
+668的偏移量给了我下一个玩家的指针,给下一个玩家加上+20应该给我下一个玩家的名字,依此类推。
读取第一个玩家姓名
我没有得到玩家的名字。用VB6编写的脚本是可操作的。我正在使用Win8.1 64 位,游戏是非常旧的 32 位应用程序。
可能是什么问题呢 ?我使用作弊引擎手动查看值,但它也没有显示任何内容。指针和偏移值是正确的。
我使用了不同的偏移值,但没有一个返回正确的值。
问题是**如果我在编码端做错了什么?或者是操作系统 64 位问题。**
java - Android 如何使用 WinAPI 之类的进程和内存
在 WinAPI 中,我可以通过 OpenProcess、VirtualQueryEx、ReadProcessMemory、WriteProcessMemory 轻松地与几乎所有进程进行交互。它们在 MSDN 中有很好的描述并且易于使用。
请告诉我如何与 Android 中的进程交互...如何获取进程内存映射,即所有区域及其属性和基地址...以及如何正确打开另一个进程/读取另一个进程内存... Android SDK 具有所需的功能或任何低级编程...
在Android中运行进程列表不是问题,但我坚持打开进程......