forked from jan/mem_edit
use pathlib
This commit is contained in:
parent
5a82f04f9e
commit
8f7955543c
@ -9,6 +9,7 @@ import signal
|
|||||||
import ctypes
|
import ctypes
|
||||||
import ctypes.util
|
import ctypes.util
|
||||||
import logging
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from .abstract import Process as AbstractProcess
|
from .abstract import Process as AbstractProcess
|
||||||
from .utils import ctypes_buffer_t, MemEditError
|
from .utils import ctypes_buffer_t, MemEditError
|
||||||
@ -70,19 +71,19 @@ class Process(AbstractProcess):
|
|||||||
self.pid = None
|
self.pid = None
|
||||||
|
|
||||||
def write_memory(self, base_address: int, write_buffer: ctypes_buffer_t) -> None:
|
def write_memory(self, base_address: int, write_buffer: ctypes_buffer_t) -> None:
|
||||||
with open(f'/proc/{self.pid}/mem', 'rb+') as mem:
|
with Path(f'/proc/{self.pid}/mem').open('rb+') as mem:
|
||||||
mem.seek(base_address)
|
mem.seek(base_address)
|
||||||
mem.write(write_buffer)
|
mem.write(write_buffer)
|
||||||
|
|
||||||
def read_memory(self, base_address: int, read_buffer: ctypes_buffer_t) -> ctypes_buffer_t:
|
def read_memory(self, base_address: int, read_buffer: ctypes_buffer_t) -> ctypes_buffer_t:
|
||||||
with open(f'/proc/{self.pid}/mem', 'rb+') as mem:
|
with Path(f'/proc/{self.pid}/mem').open('rb+') as mem:
|
||||||
mem.seek(base_address)
|
mem.seek(base_address)
|
||||||
mem.readinto(read_buffer)
|
mem.readinto(read_buffer)
|
||||||
return read_buffer
|
return read_buffer
|
||||||
|
|
||||||
def get_path(self) -> str | None:
|
def get_path(self) -> str | None:
|
||||||
try:
|
try:
|
||||||
with open(f'/proc/{self.pid}/cmdline', 'rb') as ff:
|
with Path(f'/proc/{self.pid}/cmdline').open('rb') as ff:
|
||||||
return ff.read().decode().split('\x00')[0]
|
return ff.read().decode().split('\x00')[0]
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return None
|
return None
|
||||||
@ -102,12 +103,12 @@ class Process(AbstractProcess):
|
|||||||
for pid in Process.list_available_pids():
|
for pid in Process.list_available_pids():
|
||||||
try:
|
try:
|
||||||
logger.debug(f'Checking name for pid {pid}')
|
logger.debug(f'Checking name for pid {pid}')
|
||||||
with open(f'/proc/{pid}/cmdline', 'rb') as cmdline:
|
with Path(f'/proc/{pid}/cmdline').open('rb') as cmdline:
|
||||||
path = cmdline.read().decode().split('\x00')[0]
|
path = cmdline.read().decode().split('\x00')[0]
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
name = os.path.basename(path)
|
name = Path(path).name
|
||||||
logger.debug(f'Name was "{name}"')
|
logger.debug(f'Name was "{name}"')
|
||||||
if path is not None and name == target_name:
|
if path is not None and name == target_name:
|
||||||
return pid
|
return pid
|
||||||
@ -117,7 +118,7 @@ class Process(AbstractProcess):
|
|||||||
|
|
||||||
def list_mapped_regions(self, writeable_only: bool = True) -> list[tuple[int, int]]:
|
def list_mapped_regions(self, writeable_only: bool = True) -> list[tuple[int, int]]:
|
||||||
regions = []
|
regions = []
|
||||||
with open(f'/proc/{self.pid}/maps', 'r') as maps:
|
with Path(f'/proc/{self.pid}/maps').open('r') as maps:
|
||||||
for line in maps:
|
for line in maps:
|
||||||
bounds, privileges = line.split()[0:2]
|
bounds, privileges = line.split()[0:2]
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ Implementation of Process class for Windows
|
|||||||
|
|
||||||
from math import floor
|
from math import floor
|
||||||
from os import strerror
|
from os import strerror
|
||||||
import os.path
|
from pathlib import Path
|
||||||
import ctypes
|
import ctypes
|
||||||
import ctypes.wintypes
|
import ctypes.wintypes
|
||||||
import logging
|
import logging
|
||||||
@ -233,7 +233,7 @@ class Process(AbstractProcess):
|
|||||||
if path is None:
|
if path is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
name = os.path.basename(path)
|
name = Path(path).name
|
||||||
logger.debug(f'Name was "{name}"')
|
logger.debug(f'Name was "{name}"')
|
||||||
if path is not None and name == target_name:
|
if path is not None and name == target_name:
|
||||||
return pid
|
return pid
|
||||||
|
Loading…
Reference in New Issue
Block a user