43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
import argparse
|
|
from typing import List
|
|
|
|
import frida
|
|
|
|
from frida_tools.application import ConsoleApplication, expand_target, infer_target
|
|
|
|
|
|
class KillApplication(ConsoleApplication):
|
|
def _usage(self) -> str:
|
|
return "%(prog)s [options] process"
|
|
|
|
def _add_options(self, parser: argparse.ArgumentParser) -> None:
|
|
parser.add_argument("process", help="process name or pid")
|
|
|
|
def _initialize(self, parser: argparse.ArgumentParser, options: argparse.Namespace, args: List[str]) -> None:
|
|
process = expand_target(infer_target(options.process))
|
|
if process[0] == "file":
|
|
parser.error("process name or pid must be specified")
|
|
|
|
self._process = process[1]
|
|
|
|
def _start(self) -> None:
|
|
try:
|
|
assert self._device is not None
|
|
self._device.kill(self._process)
|
|
except frida.ProcessNotFoundError:
|
|
self._update_status(f"unable to find process: {self._process}")
|
|
self._exit(1)
|
|
self._exit(0)
|
|
|
|
|
|
def main() -> None:
|
|
app = KillApplication()
|
|
app.run()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except KeyboardInterrupt:
|
|
pass
|