C语言

滴水逆向三期—C语言

VC6开发环境

在这里插入图片描述
正常VC 6.0 进入新建立项目的界面,进去用简单来说的win32的来说,后面的Location项目存放位置,记得需要进行自己定义化一个需求的位置,Name就不用说了
在这里插入图片描述
创建一个最简单的一个hello world来说
在这里插入图片描述
看到源文件的cpp的这个可以知道,cpp是C++的后缀,C++是向下兼容的,所以C++里面去搞C语言的语法是没有问题的
在这里插入图片描述
打开后可以看到上面的那两行是注释,是解释下面的程序是干什么的,注释的内容是不影响编程的给自己看的
#include “ ” 就是这个程序运行的话,需要依赖一个文件,至于为什么依赖后面会说到

下面的代码是程序的入口,程序想要运行得需要有一个.exe的一个文件,快捷键F7,就是这个代码想要执行,必须我们要让他有一个exe,执行快捷键F5,在VC6里,我们想要把某个程序停下来按的是F9
在这里插入图片描述
看到这个里面了,在return0下的断点,如果不下的话就是一个黑框一闪而过了,因为我们不执行return0所以这个黑色的界面会一直存在上面有着我们需要输出的值,然后程序想要结束,我们就按shift+F5,或者选择断点的那一行,按F5

学C语言也需要看内存和寄存器窗口
在这里插入图片描述
下面菜单栏右键就可以找到Registers寄存器窗口点开后就是上面的样子
在这里插入图片描述
在这里插入图片描述
在内存窗口你想看谁的值,你就把那个相应的x或者y拉到内存窗口的第一位(好看,好找)我们就可以看到上面的x是多少了,我们可以知道我们程序中的变量现在的值都是什么,为什么说是现在的,因为我们的断点下的是return这里,如果我们下在了printf这里,那么我们下面就不会有值了

C函数的格式

函数是一段特定的程序,他可以执行特定的功能,他有入口,通过这个入口,把值传进去,还有入口,把执行完的值传出来,这样的一段程序叫做函数
C语言中的函数:
1.无参数,无返回值的函数格式
void 函数名()
{
//代码 每行以;结尾
}
void这个单词约定了,你返回来的这个数据是什么样子的,并不是所有的程序都这么写的,void在这里代表了,这个程序执行完了没有返回值
函数名规则:

在这里插入图片描述
C语言中有些名字不能起,有些名字已经有特殊的含义的
()里面是空的说明,我这段C语言写的程序,不需要参数,一段程序可以没有参数,没有返回值
在这里插入图片描述
在汇编里面调用一个程序是Call,那么我们在C语言里面可以直接写加一个分号,分号的意思就是,分号代表当前这行程序结束,所以没写一行程序都要加上分号
在这里插入图片描述
我们把Function拖进去后可以看到,所谓的函数名在我们底层里面就是一个地址
如果想看这个函数和我们汇编有什么区别的话
在这里插入图片描述
进入反汇编窗口
在这里插入图片描述
VC6为了方便我们看,把C语言对应的反汇编都写了上去对应了,如果不想看到C语言的程序在反汇编窗口
在这里插入图片描述
在这里插入图片描述
汇编都是一些二进制数给我们翻译过来的,我们把那些二进制数叫做硬编码,我们在VC6里面
在这里插入图片描述
在这里插入图片描述
在VC6里面我们想进入到一段程序当中我们直接用F11
在这里插入图片描述
在这里插入图片描述
可以看到和当时的堆栈图很像,由于这个函数什么都没写所以9,10是空的,里面什么都没有
在这里插入图片描述
降低堆栈 函数返回后面三个是

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值