AFLplusplus/frida_mode/test/cmplog/get_section_addrs.py
WorksButNotTested 39ad3b8946
Frida persistent (#880)
* Added x64 support for persistent mode (function call only), in-memory teest cases and complog

* Review changes, fix NeverZero and code to parse the .text section of the main executable. Excluded ranges TBC

* Various minor fixes and finished support for AFL_INST_LIBS

* Review changes

Co-authored-by: Your Name <you@example.com>
2021-04-28 10:25:26 +02:00

50 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
from elftools.elf.elffile import ELFFile
def process_file(file, section, base):
with open(file, "rb") as f:
for sect in ELFFile(f).iter_sections():
if sect.name == section:
start = base + sect.header["sh_offset"]
end = start + sect.header["sh_size"]
print("0x%016x-0x%016x" % (start, end))
return
print("Section '%s' not found in '%s'" % (section, file))
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",
"--section",
dest="section",
type=str,
help="elf section name",
required=True,
)
parser.add_argument(
"-b",
"--base",
dest="base",
type=hex_value,
help="elf base address",
required=True,
)
args = parser.parse_args()
process_file(args.file, args.section, args.base)
if __name__ == "__main__":
main()