diff options
author | van Hauser <vh@thc.org> | 2021-12-13 22:58:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-13 22:58:19 +0100 |
commit | 22e2362f0fd5685548696f487639104a0059e3eb (patch) | |
tree | f59a3c6d5fb0f42056252f400f3bab1e1010432b /frida_mode/test/libxml/get_symbol_addr.py | |
parent | 08ca4d54a55fe73e64a994c41a12af61f52e497e (diff) | |
parent | c6bad07d75aa36671ebc32a722566cb145414b08 (diff) | |
download | afl++-22e2362f0fd5685548696f487639104a0059e3eb.tar.gz |
Merge pull request #1213 from AFLplusplus/dev
push to stable
Diffstat (limited to 'frida_mode/test/libxml/get_symbol_addr.py')
-rwxr-xr-x | frida_mode/test/libxml/get_symbol_addr.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/frida_mode/test/libxml/get_symbol_addr.py b/frida_mode/test/libxml/get_symbol_addr.py new file mode 100755 index 00000000..1c46e010 --- /dev/null +++ b/frida_mode/test/libxml/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) |