Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi CreateRemoteThreadEx和NtCreateThreadEx失败_Winapi_Process_Rust - Fatal编程技术网

Winapi CreateRemoteThreadEx和NtCreateThreadEx失败

Winapi CreateRemoteThreadEx和NtCreateThreadEx失败,winapi,process,rust,Winapi,Process,Rust,我目前正在尝试实现一个名为Rust的进程规避方法 我已经成功地创建了NTFS事务,进程,我已经在进程的PEB中写入了新的参数,但是我无法创建主线程 当我试图创建主线程时,我的程序崩溃 当我使用NtCreateThreadEx时,函数返回0xC0000022(状态\访问\拒绝) (我用process\u ALL\u ACCESS常量创建了这个进程,我以管理员身份运行) va_entrypoint变量等于所创建进程的PEB中的ImageBaseAddress,以及我加载到内存中的PE文件的可选头中的

我目前正在尝试实现一个名为Rust的进程规避方法

我已经成功地创建了NTFS事务,进程,我已经在进程的PEB中写入了新的参数,但是我无法创建主线程

当我试图创建主线程时,我的程序崩溃

当我使用
NtCreateThreadEx
时,函数返回0xC0000022(状态\访问\拒绝)

(我用
process\u ALL\u ACCESS
常量创建了这个进程,我以管理员身份运行)

va_entrypoint
变量等于所创建进程的PEB中的
ImageBaseAddress
,以及我加载到内存中的PE文件的可选头中的
AddressOfEntryPoint

我检查了进程是否正在运行,它是否正在运行,但我只能通过
tasklist.exe
输出中的
PID
来识别它,因为程序没有任何名称

我想这是正常的,因为我没有创建主线程,但我也不确定

我用一些过程分析工具手动检查了PEB的地址、图像的基址等,一切正常


当我尝试创建主线程时,我想我遗漏了一些东西-当我尝试创建主线程时,进程实际上会死亡。

transmute::(va_entrypoint),
似乎是错误的,除非这是开发的要点。你有C++的功能代码吗?@ SePiMeMIT它应该指向新创建的进程的入口点。我将其定义为:
let va_entrypoint:u64=std::mem::transmute:(peb.ImageBaseAddress)+nt_headers.OptionalHeader.AddressOfEntryPoint为u64 @ DavidHeffernan是在开发过程中使用的官方C++代码。我自己在它上面建立我的代码。你的程序在什么地方偏离了工作C++代码?
ntstatus = NtCreateThreadEx(
    &mut thread,
    THREAD_ALL_ACCESS,
    null_mut(),
    process,
    transmute::<u64, *mut c_void>(va_entrypoint),
    null_mut(),
    0, 0, 0, 0,
    null_mut()
);
let thread = CreateRemoteThreadEx(
    process,
    THREAD_ALL_ACCESS,
    0,
    transmute::<u64, *mut c_void>(va_entrypoint),
    null_mut(),
    0,
    null_mut(), &mut id
);