forked from jan/mem_edit
Compare commits
No commits in common. "master" and "v0.5" have entirely different histories.
5 changed files with 11 additions and 10 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
""" VERSION defintion. THIS FILE IS MANUALLY PARSED BY setup.py and REQUIRES A SPECIFIC FORMAT """
|
""" VERSION defintion. THIS FILE IS MANUALLY PARSED BY setup.py and REQUIRES A SPECIFIC FORMAT """
|
||||||
__version__ = '''
|
__version__ = '''
|
||||||
0.6
|
0.5
|
||||||
'''.strip()
|
'''
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ from . import utils
|
||||||
from .utils import ctypes_buffer_t
|
from .utils import ctypes_buffer_t
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ from .abstract import Process as AbstractProcess
|
||||||
from .utils import ctypes_buffer_t, MemEditError
|
from .utils import ctypes_buffer_t, MemEditError
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -58,9 +59,7 @@ class Process(AbstractProcess):
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
os.kill(self.pid, signal.SIGSTOP)
|
os.kill(self.pid, signal.SIGSTOP)
|
||||||
os.waitpid(self.pid, 0)
|
|
||||||
ptrace(ptrace_commands['PTRACE_DETACH'], self.pid, 0, 0)
|
ptrace(ptrace_commands['PTRACE_DETACH'], self.pid, 0, 0)
|
||||||
os.kill(self.pid, signal.SIGCONT)
|
|
||||||
self.pid = None
|
self.pid = None
|
||||||
|
|
||||||
def write_memory(self, base_address: int, write_buffer: ctypes_buffer_t):
|
def write_memory(self, base_address: int, write_buffer: ctypes_buffer_t):
|
||||||
|
|
@ -95,14 +94,14 @@ class Process(AbstractProcess):
|
||||||
def get_pid_by_name(target_name: str) -> Optional[int]:
|
def get_pid_by_name(target_name: str) -> Optional[int]:
|
||||||
for pid in Process.list_available_pids():
|
for pid in Process.list_available_pids():
|
||||||
try:
|
try:
|
||||||
logger.debug('Checking name for pid {}'.format(pid))
|
logger.info('Checking name for pid {}'.format(pid))
|
||||||
with open('/proc/{}/cmdline'.format(pid), 'rb') as cmdline:
|
with open('/proc/{}/cmdline'.format(pid), '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 = os.path.basename(path)
|
||||||
logger.debug('Name was "{}"'.format(name))
|
logger.info('Name was "{}"'.format(name))
|
||||||
if path is not None and name == target_name:
|
if path is not None and name == target_name:
|
||||||
return pid
|
return pid
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ from .abstract import Process as AbstractProcess
|
||||||
from .utils import ctypes_buffer_t, MemEditError
|
from .utils import ctypes_buffer_t, MemEditError
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -228,18 +229,18 @@ class Process(AbstractProcess):
|
||||||
def get_pid_by_name(target_name: str) -> Optional[int]:
|
def get_pid_by_name(target_name: str) -> Optional[int]:
|
||||||
for pid in Process.list_available_pids():
|
for pid in Process.list_available_pids():
|
||||||
try:
|
try:
|
||||||
logger.debug('Checking name for pid {}'.format(pid))
|
logger.info('Checking name for pid {}'.format(pid))
|
||||||
with Process.open_process(pid) as process:
|
with Process.open_process(pid) as process:
|
||||||
path = process.get_path()
|
path = process.get_path()
|
||||||
|
|
||||||
name = os.path.basename(path)
|
name = os.path.basename(path)
|
||||||
logger.debug('Name was "{}"'.format(name))
|
logger.info('Name was "{}"'.format(name))
|
||||||
if path is not None and name == target_name:
|
if path is not None and name == target_name:
|
||||||
return pid
|
return pid
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
except MemEditError as err:
|
except MemEditError as err:
|
||||||
logger.debug(repr(err))
|
logger.info(repr(err))
|
||||||
|
|
||||||
logger.info('Found no process with name {}'.format(target_name))
|
logger.info('Found no process with name {}'.format(target_name))
|
||||||
return None
|
return None
|
||||||
|
|
|
||||||
2
setup.py
2
setup.py
|
|
@ -15,7 +15,7 @@ setup(name='mem_edit',
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
long_description_content_type='text/markdown',
|
long_description_content_type='text/markdown',
|
||||||
author='Jan Petykiewicz',
|
author='Jan Petykiewicz',
|
||||||
author_email='jan@mpxd.net',
|
author_email='anewusername@gmail.com',
|
||||||
url='https://mpxd.net/code/jan/mem_edit',
|
url='https://mpxd.net/code/jan/mem_edit',
|
||||||
keywords=[
|
keywords=[
|
||||||
'memory',
|
'memory',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue