原创 0基础学逆向
写一个裸函数,实现三个任意参数加上三个任意局部变量的和。
#include<stdio.h> #include<stdlib.h> int function(int a, int b, int c) { __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 [ebp-0x40] rep stosd // 给局部变量赋值 mov dword ptr [ebp-0x4],2 mov dword ptr [ebp-0x8],3 mov dword ptr [ebp-0xC],4 // 计算总和 mov eax,dword ptr [ebp+0x8] // a = 1 add eax,dword ptr [ebp+0xC] // a + b = 1+2 add eax,dword ptr [ebp+0x10] // a + b + c = 1+2+3 add eax,dword ptr [ebp-0x4] // +2 add eax,dword ptr [ebp-0x8] // +3 add eax,dword ptr [ebp-0xC] // +4 pop edi pop esi pop ebx mov esp, ebp pop ebp ret } } int main() { int m = function(1,2,3); printf("%d", m); // 输出结果:15 return 0; }