diff --git a/.gitignore b/.gitignore index 91a919d..b95737c 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,6 @@ /m4/lt*.m4 /src/Makefile /src/Makefile.in +/src/frida/Makefile +/src/frida/Makefile.in /stamp-h1 diff --git a/configure.ac b/configure.ac index 312e1c4..64f1a7f 100644 --- a/configure.ac +++ b/configure.ac @@ -38,5 +38,6 @@ AC_SUBST(PYFRIDA_LIBS) AC_CONFIG_FILES([ Makefile src/Makefile + src/frida/Makefile ]) AC_OUTPUT diff --git a/src/Makefile.am b/src/Makefile.am index e9d3f51..7b81ddb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,5 @@ -pyexec_DATA = frida.py +SUBDIRS = frida + pyexec_LTLIBRARIES = _frida.la _frida_la_SOURCES = \ diff --git a/src/frida/Makefile.am b/src/frida/Makefile.am new file mode 100644 index 0000000..828edd3 --- /dev/null +++ b/src/frida/Makefile.am @@ -0,0 +1,6 @@ +frida_PYTHON = \ + __init__.py \ + core.py \ + tracer.py + +fridadir = $(pythondir)/frida diff --git a/src/frida/__init__.py b/src/frida/__init__.py new file mode 100644 index 0000000..c478093 --- /dev/null +++ b/src/frida/__init__.py @@ -0,0 +1,20 @@ +def spawn(command_line, device_id = None): + return get_device_manager().get_device(device_id).spawn(command_line) + +def resume(target, device_id = None): + return get_device_manager().get_device(device_id).resume(target) + +def attach(target, device_id = None): + return get_device_manager().get_device(device_id).attach(target) + + +global _device_manager +_device_manager = None +def get_device_manager(): + global _device_manager + if _device_manager is None: + from . import core + import _frida + _device_manager = core.DeviceManager(_frida.DeviceManager()) + _device_manager.enumerate_devices() # warm up + return _device_manager diff --git a/src/frida.py b/src/frida/core.py similarity index 92% rename from src/frida.py rename to src/frida/core.py index 4d4b363..78adc68 100644 --- a/src/frida.py +++ b/src/frida/core.py @@ -1,28 +1,7 @@ -import _frida import fnmatch import threading -def spawn(command_line, device_id = None): - return get_device_manager().get_device(device_id).spawn(command_line) - -def resume(target, device_id = None): - return get_device_manager().get_device(device_id).resume(target) - -def attach(target, device_id = None): - return get_device_manager().get_device(device_id).attach(target) - - -global _device_manager -_device_manager = None -def get_device_manager(): - global _device_manager - if _device_manager is None: - _device_manager = DeviceManager(_frida.DeviceManager()) - _device_manager.enumerate_devices() # warm up - return _device_manager - - class DeviceManager: def __init__(self, manager): self._manager = manager diff --git a/src/tracer.py b/src/frida/tracer.py similarity index 99% rename from src/tracer.py rename to src/frida/tracer.py index 6c697f8..c7edac6 100644 --- a/src/tracer.py +++ b/src/frida/tracer.py @@ -1,6 +1,7 @@ import fnmatch import sys + class TracerProfileBuilder(object): def __init__(self): self._spec = []