error_handling/
error_handling.rs

1//! Comprehensive error handling example
2//! Author: BlackTechX
3
4use process_ghosting::{GhostingBuilder, init, parse_hex_string};
5
6fn main() {
7    init();
8
9    println!("[*] Error Handling Example\n");
10
11    // Test 1: Invalid file
12    println!("[Test 1] Loading non-existent file:");
13    match GhostingBuilder::from_file("nonexistent.exe") {
14        Ok(_) => println!("    Unexpected success"),
15        Err(e) => println!("    Expected error: {}", e),
16    }
17    println!();
18
19    // Test 2: Invalid hex string
20    println!("[Test 2] Parsing invalid hex:");
21    match parse_hex_string("ZZZZ") {
22        Ok(_) => println!("    Unexpected success"),
23        Err(e) => println!("    Expected error: {}", e),
24    }
25    println!();
26
27    // Test 3: Invalid PE (not MZ header)
28    println!("[Test 3] Executing invalid PE:");
29    let invalid_pe = vec![0x00, 0x00, 0x00, 0x00]; // Not MZ
30    match GhostingBuilder::new(&invalid_pe).x64().execute() {
31        Ok(_) => println!("    Unexpected success"),
32        Err(e) => println!("    Expected error: {}", e),
33    }
34    println!();
35
36    // Test 4: Empty payload
37    println!("[Test 4] Empty payload:");
38    match GhostingBuilder::new(&[]).x64().execute() {
39        Ok(_) => println!("    Unexpected success"),
40        Err(e) => println!("    Expected error: {}", e),
41    }
42    println!();
43
44    // Test 5: Truncated PE
45    println!("[Test 5] Truncated PE (only MZ header):");
46    let truncated_pe = vec![0x4D, 0x5A]; // Just MZ
47    match GhostingBuilder::new(&truncated_pe).x64().execute() {
48        Ok(_) => println!("    Unexpected success"),
49        Err(e) => println!("    Expected error: {}", e),
50    }
51    println!();
52
53    println!("[*] Error handling tests complete.");
54}