私のプレーヤーの健康状態を読み取ろうとしています。私はロールしているが、問題にぶつかっている。私は特定の住所にある情報のタイプを読むことができますが、実際の値が何であるかを読み取ることはできません。Pythonがctypesを使用してプロセスメモリを読み取っています
<ctypes.c_char_Array_64 object at 0x0000000002EBF9C8>
私はc_char_Array_64オブジェクトにどのような情報が保持されているのか探していますが、どうすればいいのか分かりません。 docsから
print(ar2.value)
:あなたが値を取得する必要が
class User:
ctypes.wintypes.DWORD = "Entity"
ctypes.wintypes.c_int = "Team"
ctypes.wintypes.c_int = "Health"
ctypes.wintypes.c_int = "Player"
def getSelfInfo(self):
adr1 = clientdll + dw_LocalPlayer
adr2 = ctypes.create_string_buffer(64)
bytes_read = ctypes.c_size_t()
(rPM(PROCESS.handle, adr1, adr2, sys.getsizeof(ctypes.wintypes.DWORD), ctypes.byref(bytes_read)))
print adr2
t = User()
t.getSelfInfo()
余談:: 'sys.getsizeof(ctypes.wintypes。あなたは(その最初の
NUL
バイトが同等のPythonstr
を終了)Cスタイルの文字列としてそれを読みたい場合は、.value
を使用したいですDWORD) 'はあなたを有用な価値にしていません。これは、Pythonレベルクラスを格納するPythonインタプリタの(オーバーヘッド)オーバーヘッドを伝えています。 Cの 'DWORD'のサイズを望むなら、' ctypes.sizeof(ctypes.wintypes.DWORD) 'が必要です。 'ctypes.wintypes.DWORD =" Entity "'などとすることもできません。それは変数を宣言する方法ではなく(実際には 'DWORD'型を上書きします)。私は 'ctypes'構造体を作ることをあなたの目標としています。 [これを行う方法についてのドキュメント]をご覧ください(https://docs.python.org/3/library/ctypes.html#structures-and-unions) – ShadowRanger