mirror of
https://github.com/brain-hackers/lab
synced 2024-11-14 22:28:00 +09:00
30 lines
672 B
Python
Executable File
30 lines
672 B
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
from elftools.elf.elffile import ELFFile # pip install pyelftools
|
|
|
|
|
|
def main():
|
|
if len(sys.argv) < 3:
|
|
print(f'Usage: {sys.argv[0]} in.elf out.bin')
|
|
sys.exit(1)
|
|
|
|
with open(sys.argv[1], 'rb') as f:
|
|
extract(ELFFile(f))
|
|
|
|
|
|
def extract(elf):
|
|
text = elf.get_section_by_name('.text')
|
|
if text is None:
|
|
print('Input ELF has no .text section', file=sys.stderr)
|
|
|
|
with open(sys.argv[2], 'wb') as f:
|
|
elf.stream.seek(0)
|
|
elf.stream.read(text.header.sh_offset)
|
|
f.write(elf.stream.read())
|
|
|
|
print(f'Successfully extracted the necessary sections to "{sys.argv[2]}"')
|
|
|
|
|
|
main()
|