【逆向】第十章 VC6 C语言概述


前言

基于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)

猜你喜欢

转载自blog.csdn.net/qq_46441427/article/details/112975629