aboutsummaryrefslogtreecommitdiff
path: root/frida_mode
diff options
context:
space:
mode:
authorDominik Maier <domenukk@gmail.com>2021-07-15 11:45:10 +0200
committerDominik Maier <domenukk@gmail.com>2021-07-15 11:45:10 +0200
commit50fcd60bc76c53e4b0bcf4ab586ce1de6ac83234 (patch)
treea35cda2ddcb4690d88a53486feeb71b8b3fd7d8a /frida_mode
parent21215ac21cfca26f18c5b59ceb71a3b5a2920244 (diff)
parent458eb0813a6f7d63eed97f18696bca8274533123 (diff)
downloadafl++-50fcd60bc76c53e4b0bcf4ab586ce1de6ac83234.tar.gz
merged stable into dev
Diffstat (limited to 'frida_mode')
-rw-r--r--frida_mode/src/ranges.c5
-rw-r--r--frida_mode/src/stalker.c3
-rwxr-xr-xfrida_mode/test/jpeg/get_symbol_addr.py36
-rwxr-xr-xfrida_mode/test/proj4/get_symbol_addr.py36
4 files changed, 80 insertions, 0 deletions
diff --git a/frida_mode/src/ranges.c b/frida_mode/src/ranges.c
index 5e78fa60..6fdd65a7 100644
--- a/frida_mode/src/ranges.c
+++ b/frida_mode/src/ranges.c
@@ -582,6 +582,11 @@ void ranges_init(void) {
print_ranges("AFL_FRIDA_INST_RANGES", include_ranges);
print_ranges("AFL_FRIDA_EXCLUDE_RANGES", exclude_ranges);
+ OKF("Ranges - Instrument libraries [%c]", ranges_inst_libs ? 'X' : ' ');
+
+ print_ranges("AFL_FRIDA_INST_RANGES", include_ranges);
+ print_ranges("AFL_FRIDA_EXCLUDE_RANGES", exclude_ranges);
+
module_ranges = collect_module_ranges();
libs_ranges = collect_libs_ranges();
jit_ranges = collect_jit_ranges();
diff --git a/frida_mode/src/stalker.c b/frida_mode/src/stalker.c
index 5df0386f..5520b73a 100644
--- a/frida_mode/src/stalker.c
+++ b/frida_mode/src/stalker.c
@@ -43,6 +43,9 @@ void stalker_init(void) {
/* *NEVER* stalk the stalker, only bad things will ever come of this! */
gum_process_enumerate_ranges(GUM_PAGE_EXECUTE, stalker_exclude_self, NULL);
+ /* *NEVER* stalk the stalker, only bad things will ever come of this! */
+ gum_process_enumerate_ranges(GUM_PAGE_EXECUTE, stalker_exclude_self, NULL);
+
}
GumStalker *stalker_get(void) {
diff --git a/frida_mode/test/jpeg/get_symbol_addr.py b/frida_mode/test/jpeg/get_symbol_addr.py
new file mode 100755
index 00000000..1c46e010
--- /dev/null
+++ b/frida_mode/test/jpeg/get_symbol_addr.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python3
+import argparse
+from elftools.elf.elffile import ELFFile
+
+def process_file(file, symbol, base):
+ with open(file, 'rb') as f:
+ elf = ELFFile(f)
+ symtab = elf.get_section_by_name('.symtab')
+ mains = symtab.get_symbol_by_name(symbol)
+ if len(mains) != 1:
+ print ("Failed to find main")
+ return 1
+
+ main_addr = mains[0]['st_value']
+ main = base + main_addr
+ print ("0x%016x" % main)
+ return 0
+
+def hex_value(x):
+ return int(x, 16)
+
+def main():
+ parser = argparse.ArgumentParser(description='Process some integers.')
+ parser.add_argument('-f', '--file', dest='file', type=str,
+ help='elf file name', required=True)
+ parser.add_argument('-s', '--symbol', dest='symbol', type=str,
+ help='symbol name', required=True)
+ parser.add_argument('-b', '--base', dest='base', type=hex_value,
+ help='elf base address', required=True)
+
+ args = parser.parse_args()
+ return process_file (args.file, args.symbol, args.base)
+
+if __name__ == "__main__":
+ ret = main()
+ exit(ret)
diff --git a/frida_mode/test/proj4/get_symbol_addr.py b/frida_mode/test/proj4/get_symbol_addr.py
new file mode 100755
index 00000000..1c46e010
--- /dev/null
+++ b/frida_mode/test/proj4/get_symbol_addr.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python3
+import argparse
+from elftools.elf.elffile import ELFFile
+
+def process_file(file, symbol, base):
+ with open(file, 'rb') as f:
+ elf = ELFFile(f)
+ symtab = elf.get_section_by_name('.symtab')
+ mains = symtab.get_symbol_by_name(symbol)
+ if len(mains) != 1:
+ print ("Failed to find main")
+ return 1
+
+ main_addr = mains[0]['st_value']
+ main = base + main_addr
+ print ("0x%016x" % main)
+ return 0
+
+def hex_value(x):
+ return int(x, 16)
+
+def main():
+ parser = argparse.ArgumentParser(description='Process some integers.')
+ parser.add_argument('-f', '--file', dest='file', type=str,
+ help='elf file name', required=True)
+ parser.add_argument('-s', '--symbol', dest='symbol', type=str,
+ help='symbol name', required=True)
+ parser.add_argument('-b', '--base', dest='base', type=hex_value,
+ help='elf base address', required=True)
+
+ args = parser.parse_args()
+ return process_file (args.file, args.symbol, args.base)
+
+if __name__ == "__main__":
+ ret = main()
+ exit(ret)