architecture_selection/
architecture_selection.rs1use process_ghosting::{GhostingBuilder, Architecture, init};
5use std::env;
6
7fn main() {
8 init();
9
10 println!("[*] Architecture Selection Example\n");
11
12 let args: Vec<String> = env::args().collect();
13
14 let (file_path, arch) = if args.len() >= 3 {
16 let arch = match args[2].to_lowercase().as_str() {
17 "x86" | "32" | "i386" => Architecture::X86,
18 "x64" | "64" | "amd64" => Architecture::X64,
19 _ => {
20 eprintln!("[-] Unknown architecture: {}", args[2]);
21 eprintln!(" Use: x86, x64, 32, or 64");
22 return;
23 }
24 };
25 (args[1].as_str(), arch)
26 } else if args.len() == 2 {
27 (args[1].as_str(), Architecture::X64) } else {
29 println!("Usage: {} <payload.exe> [arch]", args[0]);
30 println!();
31 println!("Architectures:");
32 println!(" x86, 32, i386 - 32-bit");
33 println!(" x64, 64, amd64 - 64-bit (default)");
34 return;
35 };
36
37 println!("[*] File: {}", file_path);
38 println!("[*] Architecture: {}", arch);
39 println!();
40
41 match GhostingBuilder::from_file(file_path) {
42 Ok(builder) => {
43 let result = builder
44 .architecture(arch)
45 .with_logging()
46 .execute();
47
48 match result {
49 Ok(_) => println!("\n[+] Success!"),
50 Err(e) => eprintln!("\n[-] Failed: {}", e),
51 }
52 }
53 Err(e) => eprintln!("[-] Error: {}", e),
54 }
55}