首页 > 解决方案 > 从 Python 中的 ReadProcessMemory 返回一个浮点值

问题描述

我在名为 Assault Cube 的游戏中有一个包含 y 位置的地址(我正在学习逆向工程)

我的问题是 readprocessmemory 的 ReadBuffer.value 返回一个整数,我正在寻找一种将值作为浮点数接收的方法。有谁知道如何在python中做到这一点?

在图片中,我试图说明如何返回整数(1125777408),这本身是正确的,但我想找到一种方法来返回浮点值(104)。

在此处输入图像描述

def ReadProcessMemory(self, hProcess, lpBaseAddress):
    try:
        lpBaseAddress = lpBaseAddress
        ReadBuffer = ctypes.c_uint()
        lpBuffer = ctypes.byref(ReadBuffer)
        nSize = ctypes.sizeof(ReadBuffer)
        lpNumberOfBytesRead = ctypes.c_ulong(0)

        ctypes.windll.kernel32.ReadProcessMemory(
                                                hProcess,
                                                lpBaseAddress,
                                                lpBuffer,
                                                nSize,
                                                lpNumberOfBytesRead
                                                )
        return ReadBuffer.value
    except (BufferError, ValueError, TypeError):
        self.CloseHandle(hProcess)
        e = 'Handle Closed, Error', hProcess, self.GetLastError()
        return e

标签: pythonwinapireverse-engineering

解决方案


有一个ctypes方法叫做c_float,所以用ctypes.c_float()代替ctypes.c_int()


推荐阅读