【问题标题】:return a float value from ReadProcessMemory in python从 Python 中的 ReadProcessMemory 返回一个浮点值
【发布时间】:2019-05-28 15:27:02
【问题描述】:

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

我的问题是 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

【问题讨论】:

    标签: python winapi reverse-engineering


    【解决方案1】:

    有一个ctypes 方法称为c_float,所以使用ctypes.c_float() 而不是ctypes.c_int()

    【讨论】:

    • 哇,这很简单——成功了!以为我已经尝试过了..谢谢! :-)
    • @jubibanna:如果他的回答解决了你的问题,请接受它,因为这是 SO 的惯例。
    • 对不起,我忘了。我试图太快地接受你的回答,并且有 5 分钟的限制。更正:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2014-02-25
    • 2020-06-08
    • 2017-11-03
    相关资源
    最近更新 更多