mirror of
https://github.com/QuasarApp/LIEF.git
synced 2025-04-28 21:34:32 +00:00
42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
# Description
|
||
# -----------
|
||
# Remove the section table from an ELF binary
|
||
# so that some tools are blow minded (e.g. gdb)
|
||
#
|
||
# Example:
|
||
# $ python elf_remove_section_table.py /bin/ls ls_without_sections
|
||
# $ ls
|
||
# elf_remove_section_table.py ls_without_sections
|
||
# $ ls_without_sections
|
||
# $ elf_remove_section_table.py ls_without_sections
|
||
# $ readelf -S ls_without_sections
|
||
#
|
||
# Il n'y a pas de section dans ce fichier.
|
||
# $ gdb ls_without_sections
|
||
# "ls_without_sections": not in executable format: File format not recognized
|
||
|
||
import sys
|
||
import lief
|
||
from lief import ELF
|
||
|
||
def remove_section_table(filename, output):
|
||
binary = lief.parse(filename) # Build an ELF binary
|
||
|
||
header = binary.header
|
||
header.section_header_offset = 0;
|
||
header.numberof_sections = 0;
|
||
|
||
binary.write(output);
|
||
|
||
|
||
if __name__ == "__main__":
|
||
|
||
if len(sys.argv) != 3:
|
||
print("Usage: {} <elf binary> <output>".format(sys.argv[0]))
|
||
sys.exit(1)
|
||
|
||
remove_section_table(sys.argv[1], sys.argv[2])
|