x64从asm调用createthread

时间:2018-12-04 13:39:47

标签: windows assembly x86-64

push 0 //tid
push 0 //flag
sub rsp, 20
mov r9,0 //parameter
mov rcx,0 //security attribute
mov rdx, 0 //stacksize
mov r8,threadmem //address
call kernel32.createthread

我以这种方式调用createthread。

但是,如果我在参数中输入任何地址,我的代码将无法正常工作。 只是使我的PC滞后,什么也没有发生,好像创建了线程,但是我的代码没有执行。 但是,如果我不放置参数并将其自身保留为0,则它​​可以工作。 谁能帮我吗?

1 个答案:

答案 0 :(得分:-1)

您并不严格遵循x64调用约定。 Push和sub rsp可能仅出现在序言中。

Windows会反汇编您的代码,因此无法访问的代码仍会挂起。我不得不完全放弃。