DDR爱好者之家 Design By 杰米

C语言第一课学习目标:

1. 运行第一个C语言的程序2. 熟悉VC开发环境3. C函数的格式4. C函数的调用5. 函数的反汇编分析——空函数6. 函数的反汇编分析——简单功能7. 函数的反汇编分析——嵌套调用

运行第一个C语言的程序,熟悉VC开发环境

    #include <stdio.h>  //头文件    int main()  //程序入口点    {        printf("Hello Word!");        return 0;    }

C函数的格式

  1. 无参数、无返回值的函数格式

    void 函数名(){        //代码}
  • 有参数,无返回值的函数格式

    void 函数名(参数类型 参数名,参数类型 参数名){         //代码}
  • 裸函数

    void __declspec(naked) Function(){          //此处可以无任何代码}
  • 如何在C语言里写汇编

    void __declspec(naked) Function(){//通过汇编写一个函数实现任意两个数相加__ASM{      //提升堆栈   push ebp   mov ebp,esp   add esp,0x40   //保护现场   push ebx   push esi   push edi   //填充溢出缓冲区   mov ecx,0x10   mov eax,0xCCCCCCCC   lea edi,dword ptr ss:[ebp-0x40]   ret stos dword ptr es:[edi]   //实现功能   mov eax,dword ptr ss:[ebp+8]   add eax,dword ptr ss:[ebp+c]   //恢复现场   pop edi   pop esi   pop ebx   //恢复原始堆栈   mov esp,ebp   pop ebp   //返回调用Call的下一行   ret   //平衡堆栈(假设传了两个参数)   add esp,0x8}}

  • 调用约定

    调用约定参数压栈顺序平衡堆栈__cdecl