mirror of
https://github.com/frida/frida-python
synced 2026-06-08 14:16:17 +00:00
Name all scripts created internally
This commit is contained in:
@@ -58,7 +58,7 @@ class Capture(NSObject):
|
||||
try:
|
||||
session = self.device.attach(pid)
|
||||
session.on('detached', self._onSessionDetached)
|
||||
script = session.session.create_script(SCRIPT_TEMPLATE % {
|
||||
script = session.create_script(name="cpushark", source=SCRIPT_TEMPLATE % {
|
||||
'trigger_port': triggerPort
|
||||
})
|
||||
script.on('message', self._onScriptMessage)
|
||||
|
||||
+16
-20
@@ -108,18 +108,17 @@ class Session(FunctionContainer):
|
||||
|
||||
def enumerate_modules(self):
|
||||
if self._modules is None:
|
||||
script = self.create_script(
|
||||
"""
|
||||
var modules = [];
|
||||
Process.enumerateModules({
|
||||
onMatch: function (module) {
|
||||
modules.push(module);
|
||||
},
|
||||
onComplete: function () {
|
||||
send(modules);
|
||||
}
|
||||
});
|
||||
""")
|
||||
script = self.create_script(name="session-enumerate-modules", source="""\
|
||||
var modules = [];
|
||||
Process.enumerateModules({
|
||||
onMatch: function (module) {
|
||||
modules.push(module);
|
||||
},
|
||||
onComplete: function () {
|
||||
send(modules);
|
||||
}
|
||||
});
|
||||
""")
|
||||
self._modules = [Module(data['name'], int(data['base'], 16), data['size'], data['path'], self) for data in _execute_script(script)]
|
||||
return self._modules
|
||||
|
||||
@@ -127,8 +126,7 @@ class Session(FunctionContainer):
|
||||
@param protection example '--x'
|
||||
"""
|
||||
def enumerate_ranges(self, protection):
|
||||
script = self.create_script(
|
||||
"""
|
||||
script = self.create_script(name="session-enumerate-ranges", source="""\
|
||||
var ranges = [];
|
||||
Process.enumerateRanges(\"%s\", {
|
||||
onMatch: function (range) {
|
||||
@@ -195,8 +193,8 @@ recv(function (string) {
|
||||
def off(self, signal, callback):
|
||||
self._impl.off(signal, callback)
|
||||
|
||||
def _exec_script(self, script_source, post_hook=None):
|
||||
script = self.create_script(script_source)
|
||||
def _exec_script(self, source, post_hook=None):
|
||||
script = self.create_script(name="exec", source=source)
|
||||
return _execute_script(script, post_hook)
|
||||
|
||||
def _do_ensure_function(self, absolute_address):
|
||||
@@ -243,8 +241,7 @@ class Module(FunctionContainer):
|
||||
|
||||
def enumerate_exports(self):
|
||||
if self._exports is None:
|
||||
script = self._session.create_script(
|
||||
"""
|
||||
script = self._session.create_script(name="module-enumerate-exports", source="""\
|
||||
var exports = [];
|
||||
Module.enumerateExports(\"%s\", {
|
||||
onMatch: function (exp) {
|
||||
@@ -268,8 +265,7 @@ Module.enumerateExports(\"%s\", {
|
||||
@param protection example '--x'
|
||||
"""
|
||||
def enumerate_ranges(self, protection):
|
||||
script = self._session.create_script(
|
||||
"""
|
||||
script = self._session.create_script(name="module-enumerate-ranges", source="""\
|
||||
var ranges = [];
|
||||
Module.enumerateRanges(\"%s\", \"%s\", {
|
||||
onMatch: function (range) {
|
||||
|
||||
@@ -21,8 +21,7 @@ class Discoverer(object):
|
||||
def start(self, session, ui):
|
||||
def on_message(message, data):
|
||||
self._reactor.schedule(lambda: self._process_message(message, data, session, ui))
|
||||
source = self._create_discover_script()
|
||||
self._script = session.create_script(source)
|
||||
self._script = session.create_script(name="discoverer", source=self._create_discover_script())
|
||||
self._script.on('message', on_message)
|
||||
self._script.load()
|
||||
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ def main():
|
||||
self._prompt_string = self._create_prompt()
|
||||
def on_message(message, data):
|
||||
self._reactor.schedule(lambda: self._process_message(message, data))
|
||||
self._script = self._session.create_script(self._create_repl_script())
|
||||
self._script = self._session.create_script(name="repl", source=self._create_repl_script())
|
||||
self._script.on('message', on_message)
|
||||
self._script.load()
|
||||
if self._spawned_argv is not None:
|
||||
|
||||
+12
-13
@@ -23,7 +23,7 @@ class TracerProfileBuilder(object):
|
||||
|
||||
def exclude_modules(self, *module_name_globs):
|
||||
for m in module_name_globs:
|
||||
self._spec.append(("exclude", 'module', m))
|
||||
self._spec.append(('exclude', 'module', m))
|
||||
return self
|
||||
|
||||
def include(self, *function_name_globs):
|
||||
@@ -33,7 +33,7 @@ class TracerProfileBuilder(object):
|
||||
|
||||
def exclude(self, *function_name_globs):
|
||||
for f in function_name_globs:
|
||||
self._spec.append(("exclude", 'function', f))
|
||||
self._spec.append(('exclude', 'function', f))
|
||||
return self
|
||||
|
||||
def include_objc_method(self, *function_name_globs):
|
||||
@@ -64,12 +64,12 @@ class TracerProfile(object):
|
||||
if scope == 'module':
|
||||
if operation == 'include':
|
||||
working_set = working_set.union(self._include_module(param, all_modules))
|
||||
elif operation == "exclude":
|
||||
elif operation == 'exclude':
|
||||
working_set = self._exclude_module(param, working_set)
|
||||
elif scope == 'function':
|
||||
if operation == 'include':
|
||||
working_set = working_set.union(self._include_function(param, all_modules))
|
||||
elif operation == "exclude":
|
||||
elif operation == 'exclude':
|
||||
working_set = self._exclude_function(param, working_set)
|
||||
elif scope == 'objc_method':
|
||||
if operation == 'include':
|
||||
@@ -118,10 +118,10 @@ class TracerProfile(object):
|
||||
|
||||
mtype, cls, method = match.groups()
|
||||
|
||||
script = '''
|
||||
var mtype = '%(mtype)s';
|
||||
var cls = '%(cls)s';
|
||||
var method = '%(method)s';
|
||||
script = """
|
||||
var mtype = "%(mtype)s";
|
||||
var cls = "%(cls)s";
|
||||
var method = "%(method)s";
|
||||
|
||||
if (ObjC.available) {
|
||||
var funs = {};
|
||||
@@ -132,7 +132,7 @@ if (ObjC.available) {
|
||||
object_getClass: 1
|
||||
};
|
||||
Object.keys(funArgs).forEach(function (name) {
|
||||
var funPtr = Module.findExportByName('libobjc.A.dylib', name);
|
||||
var funPtr = Module.findExportByName("libobjc.A.dylib", name);
|
||||
var args = funArgs[name];
|
||||
var argsArr = [];
|
||||
for (var i = 0; i !== args; i++) {
|
||||
@@ -199,9 +199,9 @@ if (ObjC.available) {
|
||||
|
||||
send({success: true, addresses: traceAddresses});
|
||||
} else {
|
||||
send({success: false, error: 'Objective C runtime is not available'})
|
||||
send({success: false, error: "Objective C runtime is not available"})
|
||||
}
|
||||
''' % {"mtype": mtype, "cls": cls, "method": method}
|
||||
""" % {"mtype": mtype, "cls": cls, "method": method}
|
||||
|
||||
result = session._exec_script(script)
|
||||
|
||||
@@ -248,9 +248,8 @@ class Tracer(object):
|
||||
|
||||
ui.on_trace_progress('resolve')
|
||||
working_set = self._profile.resolve(session)
|
||||
source = self._create_trace_script()
|
||||
ui.on_trace_progress('instrument')
|
||||
self._script = session.create_script(source)
|
||||
self._script = session.create_script(name="tracer", source=self._create_trace_script())
|
||||
self._script.on('message', on_message)
|
||||
self._script.load()
|
||||
for chunk in [working_set[i:i+1000] for i in range(0, len(working_set), 1000)]:
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ class TestCore(unittest.TestCase):
|
||||
result['address'] = int(message['payload'], 16)
|
||||
event.set()
|
||||
|
||||
script = self.session.create_script("""\
|
||||
script = self.session.create_script(name="test-memory-access", source="""\
|
||||
hello = Memory.allocUtf8String("Hello");
|
||||
send(hello);
|
||||
""")
|
||||
|
||||
Reference in New Issue
Block a user