C语言中的裸函数

最简单的代码:



//裸函数
void __declspec(naked) testGyarmy()
{
	__asm{
		ret
	}
}


//加法



//裸函数加法
int __declspec(naked) testGyarmyPlus(int x,int y)
{
	__asm{
		//提升堆栈
		push ebp
		mov ebp,esp
		sub esp,0x40
		//保存现场
		push ebx
		push esi
		push edi

		//填充堆栈
		mov eax,0xCCCCCCCC
		mov ecx,0x10
		lea edi,DWORD ptr ds:[ebp-0x40]
		rep stosd
		
		//核心功能
		mov eax,DWORD ptr ds:[ebp+8]
		add eax,DWORD ptr ds:[ebp+0xC]

		//还原现场
		pop edi
		pop esi
		pop ebx
	
		//恢复堆栈
		mov esp,ebp
		pop ebp

		ret
	}
}




原文链接: C语言中的裸函数 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( http://gyarmy.com/post-287.html )

发表评论

0则评论给“C语言中的裸函数”