前言
基于VC6来实现C语言学习,这里能装在WIN10上是下载了VC6绿色版
一、HELLO WORLD
新建文件
文件 新建 输入名称 win32应用 建立helloworld程序
点开fileview 找到source file
图中//后面是注释,而int main开始可以看成函数的入口
这个时候按下F7(build建立),发现根目录下有一个hello.exe的文件生成,在窗口按下F5执行,一闪而过。快速结束 shift + F5
下断点
鼠标左键在return0前,然后按下F9
打开寄存器窗口
在return前F9下断点,改动程序重新按F7,按下F5
右键点调试窗口,点register
和之前系列文章里的差不多,但是注意EFL拆标志寄存器里面的值
内存窗口
在return前F9下断点,改动程序重新按F7,按下F5
右键点调试窗口,点memory
内存里面的值是倒着看的
二、C语言函数格式
1.无参数,无返回值
void 函数名()
{
//代码 每行以;结尾
}
函数名前代表这段函数返回的值是什么类型,这里void就是表明无返回值的类型
接下来写函数名,函数名只能包含字母数字,且不能以数字开头
()里面是参数,这里没有参数就是无参数
打开反汇编窗口:
在Function后下断点,按下F7,F5运行后,右键 go to disassembly
这个时候,右键,code bytes
在OD里,进入程序是F7,在这里,F11
shift F5 结束观看
2.有参数,有返回值
如图进行一个2个数加法
int plus1(int x,int y)
{
return x + y;
}
int main(int argc, char* argv[])
{
plus1(1,2); //1,2分别传入 int x, int y
return 0;
}
上面的call进行跳转
JMP再次跳转
上图可以看出,eax中就是返回值
三位数加法可以用的关键代码
t = plus1(x,y);
r = plus1(t,z)