diff options
author | llzmb <46303940+llzmb@users.noreply.github.com> | 2021-11-30 20:28:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-30 20:28:20 +0100 |
commit | da13111117efdb70f81deb162bd9e64c9a7d778a (patch) | |
tree | 2d9dbe7aac1212e5729a0a744a5b37e957d0d8a0 /frida_mode/test/bloaty/get_symbol_addr.py | |
parent | f2ff029cc25e81fec36abd0b8c676f1dd6a39c77 (diff) | |
parent | 5525f8c9ef8bb879dadd0eb942d524827d1b0362 (diff) | |
download | afl++-da13111117efdb70f81deb162bd9e64c9a7d778a.tar.gz |
Merge branch 'dev' into docs_edit_readme_frida_mode_qemu_mode
Diffstat (limited to 'frida_mode/test/bloaty/get_symbol_addr.py')
-rwxr-xr-x | frida_mode/test/bloaty/get_symbol_addr.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/frida_mode/test/bloaty/get_symbol_addr.py b/frida_mode/test/bloaty/get_symbol_addr.py new file mode 100755 index 00000000..1c46e010 --- /dev/null +++ b/frida_mode/test/bloaty/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) |