Name all scripts created internally

This commit is contained in:
Ole André Vadla Ravnås
2015-04-16 02:46:14 +02:00
parent e0ea561f51
commit 3f8bd009ca
6 changed files with 32 additions and 38 deletions
+1 -1
View File
@@ -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
View File
@@ -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) {
+1 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
""")