By 飘云/P.Y.G
http://bbs.chinapyg.com
http://www.dllhook.com


先写一段函数测试:

	/*
	000000013F991062   mov         r9,0x44444444444444
	000000013F99106C   mov         r8,0x333333333333333
	000000013F991076   mov         rdx,0x222222222222222
	000000013F991080   mov         rcx,0x111111111111111
	000000013F99108A   call        @ILT+0(?FunTest@@YAX_J000@Z)
	*/
	FunTest(0x111111111111111, 0x222222222222222, 0x333333333333333, 0x44444444444444); 
	
这里看到顺序是 rcx rdx r8 r9 从左到右 -- 返回值 RAX


再写一段更多参数的试试:
	/*
	000000013FFC32CF   mov         rax,0x77777777777777
	000000013FFC32D9   mov         [rsp+0x30],rax
	000000013FFC32DE   mov         rax,0x66666666666666
	000000013FFC32E8   mov         [rsp+0x28],rax
	000000013FFC32ED   mov         rax,0x555555555555555
	000000013FFC32F7   mov         [rsp+0x20],rax
	000000013FFC32FC   mov         r9,0x44444444444444
	000000013FFC3306   mov         r8,0x333333333333333
	000000013FFC3310   mov         rdx,0x222222222222222
	000000013FFC331A   mov         rcx,0x111111111111111
	000000013FFC3324   call        @ILT+10(?FunTest2@@YAX_J000000@Z)
	*/
	FunTest2(0x111111111111111, 0x222222222222222, 0x333333333333333, 0x44444444444444, 0x555555555555555, 0x66666666666666, 0x77777777777777);


这里可以看到前4个不变,,后面开始用栈传递--前四个寄存器占了32字节(0x20)   所以第五个参数开始从 [rsp+20] 传参 以此类推,,每8byte一组   [rsp+28]......

再写一段浮点参数的试试:
	/*
	000000013F5F3399   movss       xmm0,[000000013F5F692C]
	000000013F5F33A1   movss       [rsp+0x30],xmm0
	000000013F5F33A7   movss       xmm0,[000000013F5F6928]
	000000013F5F33AF   movss       [rsp+0x28],xmm0
	000000013F5F33B5   movss       xmm0,[000000013F5F6924]
	000000013F5F33BD   movss       [rsp+0x20],xmm0
	000000013F5F33C3   movss       xmm3,[000000013F5F6920]
	000000013F5F33CB   movss       xmm2,[000000013F5F691C]
	000000013F5F33D3   movss       xmm1,[000000013F5F6918]
	000000013F5F33DB   movss       xmm0,[000000013F5F6914]
	000000013F5F33E3   call        @ILT+15(?FunTest3@@YAXMMMMMMM@Z)
	*/
	FunTest3(11.0, 22.0, 33.0, 44.0, 55.0, 66.0, 77.0);
	
这里看到浮点从 xmm0-xmm3 固定顺序传入 前4参数   从左到右   其他和上面同理


微软官方文档:
http://msdn.microsoft.com/zh-cn/library/9z1stfyw.aspx

你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。