
在之前的文章中,我们已经简单的了解了64位的一些参数的知识,下面我们从不同的情况对64位的堆栈与函数做详细的讲解。
首先,对于64位的函数,他的参数并不都是以push压栈的方式进行传递的,他的前4个参数分别通过RCX,RDX,R8,R9这几个寄存器进行传递(如图)

从图中的函数可以发现,64位的函数是不会对参数进行push的,而是将前4个参数传递给了RCX-R9这4个寄存器。从参数窗口,可以轻易的看到这些参数的数值。
那么在这种情况下如何分辨具体用到了哪些参数呢?
首先在函数调用处进行观察,一般来说,函数的参数在调用处附近会传递给RCX-R9这4个寄存器,并在函数内部进行调用。所以观察在函数调用前,看哪些寄存器被进行赋值。
其次在被调用函数头部进行观察,看4个寄存器中的哪些在函数中对其他内存进行赋值(如图)