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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user