1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#!/usr/bin/env python3
# encoding: utf-8
import argparse
import sys
from typing import Any, Dict, Iterable, List, Tuple
from webkitpy import mach_o
def main(args: List[str]):
parser = argparse.ArgumentParser()
parser.add_argument("binary")
parser.add_argument("variables", nargs="+")
options = parser.parse_args(args)
with open(options.binary, "r+b") as binary_file:
mach_o_file = mach_o.MachOFile(binary_file)
for mach_o_header in mach_o_file.headers:
mach_o_header.filter_commands(lambda command: not isinstance(command, mach_o.MachODyldEnvironmentCommand))
for variable_pair in options.variables:
mach_o_header.commands.append(mach_o.MachODyldEnvironmentCommand.build(variable_pair))
mach_o_header.update_file(binary_file)
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
|