流沙团
C语言中的裸函数
2017-10-20 流沙团


最简单的代码:










//裸函数
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
}
}












发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容