package wrapper type WrapArgument struct { Config string `short:"c" required help:"User config.json" type:"existingfile"` Out string `short:"o" required name:"outfile" help:"Modified Mach-O/Fat binary output file" type:"path"` Bcell string `short:"b" required help:"bcell.dat output file" type:"path"` Signed bool `short:"s" required help:"Output Protobuf for bcell.dat"` OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` } type VltkArgument struct { Out string `short:"o" required name:"outfile" help:"Modified Mach-O/Fat binary output file" type:"path"` OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` } type InfoArgument struct { OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` All bool `short:"a" help:"If print all information"` Arch string `help:"Only print information in this arch"` } type RemoveCodesignArgument struct { Out string `short:"o" required name:"outfile" help:"Modified Mach-O/Fat binary output file" type:"path"` OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` } type RemoveImportsArgument struct { Out string `short:"o" required name:"outfile" help:"Modified Mach-O/Fat binary output file" type:"path"` Bcell string `short:"b" required help:"bcell.dat output file" type:"path"` OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` } type SignedBcellArgument struct { Out string `short:"o" required name:"outfile" help:"bcell.dat.signed output file" type:"existingfile"` Bcell string `arg short:"b" required help:"bcell.dat input file" type:"existingfile"` } type DisplayBcellArgument struct { Bcell string `arg short:"b" required help:"Protobuf bcell.dat input file" type:"existingfile"` } type Addr2LineArgument struct { Load string `short:"l" required help:"Load address of binary"` Dwarf string `short:"d" required help:"Path to Mach-O DWARF binary file" type:"existingfile"` Addresses []string `arg help:"Addresses to resolve"` } type LipoArgument struct { Join struct { Out string `short:"o" required help:"Output Fat binary file" type:"path"` Macho []string `arg help:"Macho binaries to join" type:"existingfile"` } `cmd help:"Join Macho binaries into Fat binary"` Split struct { Fat string `arg help:"Fat binary to split" type:"existingfile"` } `cmd help:"Split fat binary into files, named _"` } type PepeArgument struct { Out string `short:"o" required name:"outfile" help:"Output file after transformation" type:"path"` Bcell string `short:"b" required help:"bcell.dat output file" type:"path"` OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` Dylibs []string `short:"l" help:"Add more LC_DYLIB"` Rpath []string `short:"r" help:"Add more LC_RPATH"` RemoveStrings bool `default:"false" negatable:"" help:"Remove static strings found in DATA and DATA_CONST section"` RemoveCodeSign bool `default:"false" negatable:"" help:"Remove LC_CODE_SIGNATURE"` RemoveExports bool `default:"false" negatable:"" help:"Clear the export table/trie"` RemoveSymbolTable bool `default:"false" negatable:"" help:"Remove LC_SYMTAB and LC_DYSYMTAB"` RemoveOthers bool `default:"false" negatable:"" help:"Remove LC_FUNCTION_STARTS, LC_DATA_IN_CODE, ..."` RemoveID bool `default:"false" negatable:"" help:"(TODO) Remove LC_ID_DYLIB"` RemoveInitFunctions bool `default:"false" name:"remove-inits" negatable:"" help:"Clear MOD_INIT_FUNC section"` RemoveBindSymbols bool `default:"false" name:"remove-imports" negatable:"" help:"Remove all bind symbols information"` RemoveObjCString bool `default:"false" negatable:"" help:"(TODO) Remove references, string litteral to Objctive-C strings"` RebuildLinkEdit bool `default:"false" negatable:"" help:"(TODO) Rebuild the LINKEDIT section"` FullRemoval bool `default:"false" help:"Apply every removal possible"` KeepImports []string `short:"keep" help:"Do not remove import symbols and allow dyld resolve. If symbols is found with more than 1 occurrances, specify the library with a comma or else all occurrances will be kept. e.g., _symbol,libLIB.dylib"` } type BcellToHeaderArgument struct { Out string `short:"o" required name:"outfile" help:"Header file name to output to" type:"path"` Bcell string `short:"b" required help:"Input bcell.dat file" type:"existingfile"` } type Argument struct { Wrap WrapArgument `cmd help:"Modifies Mach-O/Fat binary"` Vltk VltkArgument `cmd help:"Modifies Mach-O/Fat binary"` Info InfoArgument `cmd help:"Show Mach-O/Fat binary information"` RemoveImports RemoveImportsArgument `cmd aliases:"remove-imports" name:"remove-imports" help:"Remove imports"` RemoveCodesign RemoveCodesignArgument `cmd aliases:"remove-signature" name:"remove-codesign" help:"Remove LC_CODE_SIGNATURE from Mach-O/Fat binary"` SignedBcell SignedBcellArgument `cmd name:"signed-bcell" help:"Change Protobuf into Protobuf"` DisplayBcell DisplayBcellArgument `cmd name:"display-bcell" help:"Display Protobuf content"` Addr2Line Addr2LineArgument `cmd name:"addr2line" help:"Resolve crash address from DWARF file"` Lipo LipoArgument `cmd help:"split Fat binary or join Mach-O binares"` Pepe PepeArgument `cmd help:"custom command"` BcellToHeader BcellToHeaderArgument `cmd name:"bcell2header" help:"Build C header file from bcell file"` AddSection struct { Out string `short:"o" required name:"outfile" help:"Output file after transformation"` Data string `arg help:"Input data file to fill in this section, or null if not provided" type:"existingfile"` OFile string `arg help:"Path to Mach-O/Fat binary file" type:"existingfile"` Segment string `required help:"Segment name"` Section string `required help:"Section name"` Size int `required help:"Size of segment/section"` } `cmd:"" default:"false" help:"(TODO) Add a new segment with 1 section, segment starts at the end of last segment"` }