Hướng dẫn python read memory of another process - python đọc bộ nhớ của một tiến trình khác

Tôi đang cố gắng viết một tập lệnh Python đọc một loạt các vị trí bộ nhớ của một quy trình cụ thể.

Làm thế nào tôi có thể làm điều này trong Python?

Tôi sẽ sử dụng Windows nếu nó quan trọng. Tôi có các quy trình mà tôi đang cố gắng đọc/chỉnh sửa.

Tôi sẽ phải hoàn nguyên để gọi readProcessMemory () và sử dụng ctypes?

Đã hỏi ngày 25 tháng 11 năm 2009 lúc 4:15Nov 25, 2009 at 4:15

Hướng dẫn python read memory of another process - python đọc bộ nhớ của một tiến trình khác

Filet-O-FishFilet-O-FishFilet-O-Fish

Huy hiệu vàng 1711 Huy hiệu bạc4 Huy hiệu đồng1 gold badge1 silver badge4 bronze badges

Tôi đã không thấy bất cứ điều gì trong các thư viện Python tiêu chuẩn nhưng tôi đã tìm thấy một ví dụ sử dụng CTYPE như bạn đã đề xuất trên một trang web khác:

from ctypes import *
from ctypes.wintypes import *

OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
CloseHandle = windll.kernel32.CloseHandle

PROCESS_ALL_ACCESS = 0x1F0FFF

pid = 4044   # I assume you have this from somewhere.
address = 0x1000000  # Likewise; for illustration I'll get the .exe header.

buffer = c_char_p("The data goes here")
bufferSize = len(buffer.value)
bytesRead = c_ulong(0)

processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
if ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead)):
    print "Success:", buffer
else:
    print "Failed."

CloseHandle(processHandle)

Đã trả lời ngày 25 tháng 11 năm 2009 lúc 4:44Nov 25, 2009 at 4:44

KINGNESTORKINGNESTORKingNestor

64K51 Huy hiệu vàng119 Huy hiệu bạc151 Huy hiệu Đồng51 gold badges119 silver badges151 bronze badges

1

Có,

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
5 (hoặc
from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
6) và
from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
7 chính xác là con đường để đi. Bạn đang tìm kiếm một cái gì đó thêm/khác nhau? Những gì, đặc biệt là?

Đã trả lời ngày 25 tháng 11 năm 2009 lúc 4:45Nov 25, 2009 at 4:45

Alex Martellialex MartelliAlex Martelli

830K164 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng164 gold badges1205 silver badges1385 bronze badges

2

ReadWriteMemory

Hướng dẫn python read memory of another process - python đọc bộ nhớ của một tiến trình khác

Sự mô tả

Lớp ReadWriteMemory được thực hiện trên Python để đọc và viết vào bộ nhớ của bất kỳ quá trình nào. Lớp này không phụ thuộc vào bất kỳ mô -đun bổ sung nào và chỉ sử dụng các thư viện Python tiêu chuẩn như CTYPES.


ReadWriteMemory


Sự mô tả

Tài liệu
OS: Windows 7, 8 and 10


Yêu cầu

Python 3.4+ HĐH: Windows 7, 8 và 10
GetProcessImageFileName
OpenProcess
Process Security and Access Rights
CloseHandle
GetLastError
ReadProcessMemory
WriteProcessMemory


API Windows trong mô -đun này:

EnumProcesses getProcessImageFileName Quy trình mở Bảo mật và quyền truy cập Quyền gần gũi GetLasterror ReadProcessMemory WriteProcessMemory

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

Cách sử dụng

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name('ac_client.exe')

Nhập và khởi tạo lớp

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_id(1337)

Nhận một quy trình theo tên

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

processes_ids = rwm.enumerate_processes()

Nhận một quy trình theo ID

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name('ac_client.exe')
print(process.__dict__)

Nhận danh sách các quy trình đang chạy ID của hệ thống hiện tại

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name('ac_client.exe')
help(process)

In thông tin quy trình

from ReadWriteMemory import ReadWriteMemory
from ReadWriteMemory import ReadWriteMemoryError

rwm = ReadWriteMemory()
try:
    process = rwm.get_process_by_name('ac_client.exe')
except ReadWriteMemoryError as error:
    print(error)

Mở quy trình

Để có thể đọc hoặc ghi vào bộ nhớ của quy trình trước tiên, bạn cần gọi phương thức Open ().

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name('ac_client.exe')
process.open()

Ví dụ, đặt con trỏ: để có được sức khỏe, đạn và lựu đạn

Các độ lệch phải là một danh sách theo đúng thứ tự, nếu địa chỉ không có bất kỳ độ lệch nào thì chỉ cần chuyển địa chỉ. Bạn cần phải vượt qua hai đối số, đầu tiên là địa chỉ quy trình là hex và một danh sách các lần bù là hex.

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name('ac_client.exe')
process.open()

health_pointer = process.get_pointer(0x004e4dbc, offsets=[0xf4])
ammo_pointer = process.get_pointer(0x004df73c, offsets=[0x378, 0x14, 0x0])
grenade_pointer = process.get_pointer(0x004df73c, offsets=[0x35c, 0x14, 0x0])

Đọc các giá trị cho sức khỏe, đạn và lựu đạn từ bộ nhớ của quy trình

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
0

In các giá trị sức khỏe, đạn và lựu đạn

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
1

Viết một số giá trị ngẫu nhiên cho sức khỏe, đạn và lựu đạn vào bộ nhớ của quy trình

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
2

Đóng xử lý quy trình khi bạn hoàn thành bằng cách sử dụng nó.

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
3

Ví dụ

Kiểm tra mã bên trong thư mục thử nghiệm trên tệp Python có tên Test_script.py. Trò chơi AssaultCube được sử dụng cho thử nghiệm này là phiên bản v1.1.0.4 Nếu bạn sử dụng phiên bản khác thì bạn sẽ phải sử dụng CheatEngine để tìm địa chỉ bộ nhớ. https://github.com/AssaultCube/ac/releases/tag/v1.1.0.4 Để biết thêm ví dụ, hãy xem Trò chơi trò chơi AssaultCube: https://github.com/vsantiago113/actrainer
For more examples check out the AssaultCube game trainer: https://github.com/vsantiago113/ACTrainer

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()
4

Làm thế nào tôi có thể đọc bộ nhớ của một quá trình khác trong Python trong Windows?

Bạn có thể sử dụng TaskList.exe để liệt kê các quy trình, sau đó xóa kết quả.Sau đó sử dụng Taskkill.exe (hoặc tstskill.exe) để kết thúc chúng.

Quá trình có thể đọc bộ nhớ quy trình khác?

Các quy trình không thể truy cập vào bộ nhớ của các quy trình khác về nguyên tắc.Trong thực tế, hệ điều hành cơ bản thường cung cấp cơ chế này cho các quy trình đặc quyền.. In practice the underlying operating system usually offers this mechanism to privileged processes.

Bạn có thể đọc bộ nhớ với Python không?

Lớp ReadWriteMemory được thực hiện trên Python để đọc và viết vào bộ nhớ của bất kỳ quá trình nào.Lớp này không phụ thuộc vào bất kỳ mô -đun bổ sung nào và chỉ sử dụng các thư viện Python tiêu chuẩn như CTYPES.. This Class does not depend on any extra modules and only uses standard Python libraries like ctypes.