问题标签 [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.
winapi - 当进程读取我的进程的内存时如何调用函数 - Win32 API
最近我一直在研究挂钩函数和创建回调函数。虽然我并不完全理解整个技术,但似乎我应该能够做一些事情,比如挂钩 Windows API 的 ReadProcessMemory() 函数,并让我的进程在读取它的内存时调用一个函数。虽然我只是出于好奇才想这样做,但连接到 Windows 功能似乎对于防止在线游戏中的黑客攻击非常有用。
不幸的是,关于这个主题的教程、文章等非常缺乏。我查看了很多注入代码,但缺乏理解使我退缩了。我想做的事有可能吗,有人能指出我正确的方向吗?
我应该提一下,这是我第一次自愿跳出 OO 编程,所以如果这没有意义,我深表歉意。
c# - 使用 DLL 基地址读取内存
我正在尝试float
在进程(游戏)中读取 a 。
在 Cheat Engine 中查找我需要的地址,但它位于wow64cpu.dll + 4720
,偏移量为 34。
因此,我尝试在该过程中找到 wow64cpu.dll 的基地址,但这是我感到困惑的地方。
我不明白现在如何使用这个地址,因为我所有的尝试似乎都已经失败了。
我的问题是我在使用 DLL 的基地址时哪里出错了,或者可能在其他地方,我不确定如何使用它来查找我的地址?
我还在 x64 中编译了该程序,否则它将找不到 wow64cpu.dll。
谢谢
c# - 时间:2019-04-10 标签:c#readprocessmemory with Cheat Engine
我正在尝试从使用作弊引擎找到的地址中获取字符串值。例如,我找到了 0x01742A38,这是我的程序的主要部分(常规 Windows 窗体应用程序):
c# - 内存扫描程序找不到结果
我正在编写一个小型内存扫描仪应用程序来查找内存中的指针。
但我似乎没有得到预期的结果。
我有以下代码:
如果我这样调用方法:
我知道我正在读取的进程有一个值为 1234 的整数,但我没有得到任何结果。如果我扫描其他值,我有时会得到结果。
baseAddress
是process.MainModule.BaseAddress
和
lastAddress
是baseAddress + process.MainModule.ModuleMemorySize
我在这里错过了什么吗?
c# - C#流线型多指针的内存读取
我制作了一个方法,通过提供所需的偏移量 + 起始地址来读取多指针。(下面的代码)。总而言之,我试图简化这种方法,下面我将解释我的问题。
我一直在为转换而苦苦挣扎。参数是IntPtr,读取地址的输出是字节数组,我的第一个想法是:“将字节数组转换为IntPtr,重新处理,最后将最后读取的地址转换为int32(因为最后的地址不是指针它永远不会被读取,所以在这里转换为 Int32 应该没问题)",
然而,这并没有给出一个好的结果。所以目前我坚持将字节数组转换为 Int32,然后将 Int32 转换为 IntPtr 的解决方案。人们确实说位转换器是一种不好的方法,因为它可能会在 64 位平台上引起问题,而且我也相信有一种方法可以提供更好的性能(因为我将对象转换了 2 次)。
最后,如果有人认为可以在 C++ 中创建一个类似的函数,然后在 C# 中 P/Invoke 它(我想那样会更有效?)请告诉我。(我正在尝试调整我的编程知识。并且发现语言组合非常有趣)
任何简化此方法的想法将不胜感激!提前感谢!
c++ - C++ ReadProcessMemory 变成 char * 替代
我有一个进程在外部使用,现在是内部的,这个程序使用 ReadProcessMemory 将数据从内存复制到 Char *. 下面是代码。
我现在在程序中执行此操作,我的目标是在不使用 RPM 的情况下将该信息读入同一个数组。
我尝试过 memcpy,尽管这似乎会使程序崩溃,因为我正在阅读大量内存,所以很难发现为什么会发生这种情况。
这个使用 RPM 的程序的替代方案没有任何问题,并且允许准确地扫描数据,所以我只能假设 memcpy 不正确。
编辑:新代码在进程中作为 DLL 加载,这应该允许在内部读取值。
编辑更新代码。
c++ - C++:ReadProcessMemory() 导致崩溃
ReadProcessMemory() 似乎在读取未定义(?)内存时使我的程序崩溃。
那么我的问题是,在我使用 ReadProcessMemory 避免崩溃之前,如何检查地址是否未定义或其他?
顺便说一句错误消息:
Program.exe 中 0x00ce1c70 处的未处理异常:0xC0000005:访问冲突写入位置 0x00e3f000。
c++ - c++ 指针操作等价于 ReadProcessMemory
我需要从不同的应用程序中读取程序的内存。我有整个过程和应用程序的“连接”。
我有一个函数可以在打开的进程的内存中搜索模式,并且由于签名返回了我感兴趣的函数的有效入口点。
问题是,引导我获取数据的汇编指令(我无法通过偏移量或签名找到)如下:
我四处搜寻,发现这可能符合我的目的:
但问题是,如果使用“注入”,上面的行会起作用,而我正在使用 ReadProcessMemory,因为我不允许这样做。
那么,有人可以帮助“翻译”
考虑到汇编指令,指针操作进入 ReadProcessMemory 调用?鉴于我是从另一个应用程序打开的,如果没有使用 ReadProcessMemory(我可以定期调用它以进行其他操作),我将无法访问 H5Calc 内存区域。
任何帮助表示赞赏。
谢谢。
python - Python - Converting byte address (from ReadProcessMemory) to string?
Update 1:
I've tried the solution given below using buffer.value.decode()
. This resulted in getting back just (#
, which is a step in the right direction, but I want to get this to 9000
. When I use Cheat Engine to change the address value to 2000
, this same method runs into the error UnicodeDecodeError: 'utf-8' can't decode byte 0xd0 in position 0: invalid continuation byte
. So I'm guessing I have the wrong encoding. Any suggestion on what I should do with that?
Original Question:
I'm trying to use ReadProcessMemory from ctypes to get the value from an address in a process. I seem to acquiring the byte data without a problem, but I'm running into difficult converting it into the appropriate form. I'm using Cheat Engine to inspect the data via a third party method, and using it to change the data in the address I'm sure I have the correct address output from my script. The value I'm expecting to have returned is 9000. The complete code I'm using is below, but I'm reading the memory into a buffer of the type c_char_p (from ctypes). I've tried a couple ways of converting the value to a string and printing it. using just str(buffer)
, as expected I get back the byte representation as c_char_p(b'(#')
. When I try to convert the data using str(int.from_bytes(buffer, sys.byteorder))
I get back 43586512
. I have seen elsewhere the ability to convert from bytes using buffer.decode()
but it appears this is not for the ctypes version as c_char_p has no decode method (which might suggest I should be taking a different approach to get the process address value other than ctypes?). Can anyone point out what I need to do to correctly get the value of this address in the form I'm looking for? Thank you much!
Code:
c++ - 64 位进程上的 ReadProcessMemory 总是返回错误 299
我在使用 ReadProcessMemory 时遇到问题 我的代码是 64 位的,我可以读取任何 32 位进程的内存,但 ReadProcessMemory 总是失败,错误代码 299(部分读取)返回读取的 0 字节。
完成了我的研究,大多数答案都与权限有关,但我启用了调试令牌并以管理员身份运行,我在 PE 可选标头中读取 ImageBase 的地址
我尝试使用 VirtualQueryEx 检查页面状态并拒绝访问!
注意:代码可以在任何 32 位进程上完美运行。
任何想法可能是什么原因造成的?