this commit contains many changes. the most important of which
is a completely rewritten Agent class, improving support for
early instrumentation.
pre this commit, because we we're injecting the frida gadget in
target applications, we expected communications to occur over
a tcp socket. as far back as frida 12.7+ support injecting the
frida-server into applications that are debuggable vastly
simplifies this process in jailed environments. as such, we can
use normal "usb" comms, and thereby more closely follow the
same logic as found in frida-* tools.
a small changelog for all the changes:
- remove the get_device_info() call that relied on frida scripts
to get information about the platform. instead we're now using
device.query_system_parameters()
- replace the old `explore` command with a new `start` command
- support spawning new applications
- support attaching to the frontmost application
- support enabling the node debug port, accessible via the chrome
debugger
- support immediately resuming apps
- replace os with pathlib in some places
- remove the `objection device_type` command
- add the `resume` repl command to resume apps
- add a prompt token to show the current process state (pause/run)
no tests were fixed, so expect most of them to fail :P
related issues: #473, #474