MCPcopy Create free account
hub / github.com/echQoQ/RustSL / exec

Function exec

src/exec/create_thread_veh_syscall.rs:28–66  ·  view source on GitHub ↗
(p: usize)

Source from the content-addressed store, hash-verified

26) -> i32;
27
28pub unsafe fn exec(p: usize) -> Result<(), String> {
29 const THREAD_ALL_ACCESS: u32 = 0x001F_0FFF;
30
31 let mut thread_handle = HANDLE(0);
32
33 let status = syscall!(
34 "NtCreateThreadEx",
35 NtCreateThreadEx,
36 &mut thread_handle as *mut HANDLE,
37 THREAD_ALL_ACCESS,
38 ptr::null_mut(),
39 HANDLE(-1isize as isize),
40 p as *mut c_void,
41 ptr::null_mut(),
42 0,
43 0,
44 0,
45 0,
46 ptr::null_mut()
47 );
48
49 if status != 0 {
50 return Err(format!("NtCreateThreadEx failed with status: 0x{:x}", status));
51 }
52
53 let wait_status = syscall!(
54 "NtWaitForSingleObject",
55 NtWaitForSingleObject,
56 thread_handle,
57 0u8,
58 ptr::null_mut()
59 );
60
61 if wait_status == 0 {
62 Ok(())
63 } else {
64 Err(format!("NtWaitForSingleObject failed with status: 0x{:x}", wait_status))
65 }
66}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected