mirror of
https://github.com/lief-project/LIEF
synced 2026-06-08 15:30:44 +00:00
36 lines
872 B
Python
Executable File
36 lines
872 B
Python
Executable File
#!/usr/bin/env python
|
|
'''
|
|
This script disassembles an ELF/PE/Mach-O binary using LIEF's extended API
|
|
|
|
Note: this script is only working with the extended version of LIEF
|
|
'''
|
|
import argparse
|
|
import lief
|
|
|
|
from pathlib import Path
|
|
|
|
def disassemble(target: lief.Binary, addr: int):
|
|
for inst in target.disassemble(addr):
|
|
print(inst)
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("file", help='Target file', type=Path)
|
|
parser.add_argument("address", help='Address to disassemble',
|
|
type=lambda x: int(x,0))
|
|
|
|
args = parser.parse_args()
|
|
|
|
target_file = args.file
|
|
addr = args.address
|
|
|
|
target = lief.parse(target_file)
|
|
if target is None:
|
|
print(f"Can't load: {target_file}")
|
|
return 1
|
|
|
|
disassemble(target, addr)
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|