Я не знаком с управлением памятью.То, что я собираюсь сделать, это прочитать данные в памяти.Я ищу, как получить адрес памяти процесса и получить базовый адрес.
получить pid процесса
def get_pid(process_name):
for proc in psutil.process_iter():
if process_name in str(proc.name):
print ("target: {}, pid: {}".format(process_name, proc.pid))
return proc.pid
найти базовый адрес процесса
process = ctypes.windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, False, pid)
modules = win32process.EnumProcessModules(process)
print(hex(modules))
1015 * результат: 1017 * 0x140000000 0x7ff972560000 0x7ff96b650000 0x7ff971d90000 0x7ff96eb70000 0x7ff96cb60000 0x7ff950ee0000 0x7ff971e50000 0x7ff971fd0000 0x7ff970f30000 0x7ff9721f0000 0x7ff972500000 0x7ff96f0e0000 0x7ff96f040000 0x7ff96edf0000 0x7ff9718d0000 0x7ff96f020000 0x7ff9724d0000 0x7ff96cb30000 0x7ff96cad0000 0x7ff96e930000 0x7ff96efa0000 0x7ff9723a0000 0x7ff9715a0000 0x7ff9720e0000 0x7ff970ed0000 0x7ff96fa90000 0x7ff96f2e0000 0x7ff96e8f0000 0x7ff96e8d0000 0x7ff96e870000 0x7ff96e8c0000 0x7ff9713e0000 0x7ff971f00000 ...
На этом шаге я получу список модулей, длина модулей - 137, я предполагаю, что это адрес динамической памяти, есть ли способ доказать, что это динамическая память?
читать данные в адрес
1025 *
Результат: b'0100000000000000902c806c000000000e00000000000000ffffffffffffffffe4323038380000000000000000000000307837666639366236353030303000' b'0100000000000000902c806c000000000b00000000000000ffffffffffffffffe4323038380000000000000000000000307831343030303030303000' b'0100000000000000902c806c000000000e00000000000000ffffffffffffffffe4000000000000000000000000000000307837666639373235363030303000' ...
1031*
Как я могу получить читаемые данные?Большое спасибо.