C语言第一课学习目标:
1. 运行第一个C语言的程序2. 熟悉VC开发环境3. C函数的格式4. C函数的调用5. 函数的反汇编分析——空函数6. 函数的反汇编分析——简单功能7. 函数的反汇编分析——嵌套调用
运行第一个C语言的程序,熟悉VC开发环境
#include <stdio.h> //头文件 int main() //程序入口点 { printf("Hello Word!"); return 0; }
1. 运行第一个C语言的程序2. 熟悉VC开发环境3. C函数的格式4. C函数的调用5. 函数的反汇编分析——空函数6. 函数的反汇编分析——简单功能7. 函数的反汇编分析——嵌套调用
#include <stdio.h> //头文件 int main() //程序入口点 { printf("Hello Word!"); return 0; }
无参数、无返回值的函数格式
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}}