diff options
author | Dominik Maier <domenukk@gmail.com> | 2021-07-15 11:45:10 +0200 |
---|---|---|
committer | Dominik Maier <domenukk@gmail.com> | 2021-07-15 11:45:10 +0200 |
commit | 50fcd60bc76c53e4b0bcf4ab586ce1de6ac83234 (patch) | |
tree | a35cda2ddcb4690d88a53486feeb71b8b3fd7d8a /frida_mode/test/proj4/get_symbol_addr.py | |
parent | 21215ac21cfca26f18c5b59ceb71a3b5a2920244 (diff) | |
parent | 458eb0813a6f7d63eed97f18696bca8274533123 (diff) | |
download | afl++-50fcd60bc76c53e4b0bcf4ab586ce1de6ac83234.tar.gz |
merged stable into dev
Diffstat (limited to 'frida_mode/test/proj4/get_symbol_addr.py')
-rwxr-xr-x | frida_mode/test/proj4/get_symbol_addr.py | 36 |
1 files changed, 36 insertions, 0 deletions
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) |