| 91 | } |
| 92 | |
| 93 | fn parser() -> ArgMatches { |
| 94 | Command::new("RustPacker") |
| 95 | .author("by Nariod") |
| 96 | .version("0.10") |
| 97 | .about("Shellcode packer written in Rust.") |
| 98 | .arg_required_else_help(true) |
| 99 | .arg(Arg::new("Path to shellcode file").short('f').required(true)) |
| 100 | .arg( |
| 101 | Arg::new("Binary output format") |
| 102 | .short('b') |
| 103 | .required(true) |
| 104 | .value_parser([ |
| 105 | clap::builder::PossibleValue::new("exe").help("EXE format"), |
| 106 | clap::builder::PossibleValue::new("dll").help("DLL format"), |
| 107 | ]), |
| 108 | ) |
| 109 | .arg( |
| 110 | Arg::new("Execution technique") |
| 111 | .short('i') |
| 112 | .required(true) |
| 113 | .value_parser([ |
| 114 | // PossibleValue::new("ct").help("Create Thread"), |
| 115 | // PossibleValue::new("crt").help("Create Remote Thread"), |
| 116 | clap::builder::PossibleValue::new("ntapc") |
| 117 | .help("Self inject using APC low level APIs"), |
| 118 | clap::builder::PossibleValue::new("ntcrt") |
| 119 | .help("Create Remote Thread using low level APIs"), |
| 120 | clap::builder::PossibleValue::new("syscrt") |
| 121 | .help("Create Remote Thread using indirect syscalls"), |
| 122 | clap::builder::PossibleValue::new("wincrt") |
| 123 | .help("Create Remote Thread using the official Windows Crate"), |
| 124 | clap::builder::PossibleValue::new("winfiber") |
| 125 | .help("Self execute using Fibers and the official Windows Crate"), |
| 126 | clap::builder::PossibleValue::new("ntfiber") |
| 127 | .help("Self execute using Fibers and low level APIs"), |
| 128 | clap::builder::PossibleValue::new("sysfiber") |
| 129 | .help("Self execute using Fibers and indirect syscalls"), |
| 130 | clap::builder::PossibleValue::new("earlycascade") |
| 131 | .help("EarlyCascade injection via shim engine callback hijacking"), |
| 132 | ]), |
| 133 | ) |
| 134 | .arg( |
| 135 | Arg::new("Target process").short('t').help( |
| 136 | "Target processes to inject into, defaults to 'dllhost.exe'. Case sensitive!", |
| 137 | ), |
| 138 | ) |
| 139 | .arg( |
| 140 | Arg::new("Encryption / encoding method") |
| 141 | .short('e') |
| 142 | .required(true) |
| 143 | .value_parser([ |
| 144 | clap::builder::PossibleValue::new("xor").help("'Exclusive or' encoding"), |
| 145 | clap::builder::PossibleValue::new("aes").help("AES 256 encryption"), |
| 146 | clap::builder::PossibleValue::new("uuid").help("UUID-based shellcode encoding"), |
| 147 | ]), |
| 148 | ) |
| 149 | .arg( |
| 150 | Arg::new("Output path") |