你真的会写 HelloWorld 吗?

目录

Hello World

写一个批处理命令行脚本

关于include

关于程序的入口

输出充定向

在内存的存储详情

WinHex工具介绍


初学C语言时,第一个程序一定是Hello World!。但是Hello World的具体实现细节你真的了解吗?

Hello World

C语言代码如下:

#include<stdio.h>

int main()
{
	int n = 999;
	printf("Hello world!%d\r\n",n);
	return 0;
}

写一个批处理命令行脚本

del *.obj                // 删除obj文件
del 8.exe                // 删除exe文件
cl /c /W4 /WX hello.c    // 编程源文件,生成obj文件
link hello.obj           // 链接,打包生成可执行程序
hello.exe                // 运行exe
pause                    // 暂停进程

关于include

实际上处理时就是吧inlcude包含的文件里的代码放进c文件里,相当于替换

  • #include<.h> .h文件,声明性代码,不会产生处理器行为,声明函数等
  • #include<.c>      .c文件,功能性代码,会产生处理器行为,定义全局变量(占空间)等

<> 只找环境变量 一般是官方库, "" 先找当前目录,如果没有,再找环境变量 一般是作者或他人自定义

可以使用这条命令,会生成预处理的文件,代开看看就会发现,Include本质就是一个替换操作。

cl /c /W4 /P Hello.c

指向某个文件在电脑磁盘上的位置。

关于程序的入口

一般都说C语言的程序的入口是main函数,但实际并非如此。在VC98中,有一个文件CRT0.c的文件,其缩写是C Run Time,是C语言真正的入口。

作用:它的执行开始在exe之前,初始化堆栈,线程,IO等,支持main函数的运行,所以CTR0.c才是程序的运行的环境

关于VC98:

VC98是指Microsoft Visual C++ 6.0(也称为Visual C++ 98),是一款由微软开发的集成开发环境(IDE),用于C和C++编程。

Visual C++ 6.0是在1998年发布的,它提供了一套工具和库,用于开发Windows平台下的应用程序。它包括了一个代码编辑器、调试器、编译器以及可视化的界面设计器等。

Visual C++ 6.0是一个相对较旧的版本,它在其发布时是非常受欢迎的,并广泛用于Windows应用程序开发。然而,由于时间的推移和微软的后续版本发布,如Visual Studio 2005、2010、2015等,Visual C++ 6.0逐渐被淘汰。

如果你打算使用Visual C++进行编程,建议考虑使用最新版本的Visual Studio,以获得更好的开发工具和更强大的功能支持。

里面还有很多的具体细节,之后会随着进一步学习慢慢了解

输出充定向

输出重定向,把输出内容重定向到磁盘

hello > 1.txt

 Windows中文乱码解决

chcp 65001

效果如下:

在内存的存储详情

观察 999 在内存的存储情况

int main()
{
	int n = 999;
	printf("n的内存地址是:%p \n",&n);
	system("pause");
	return 0;
}

运行批处理命令,打印 999 在内存中的存储地址

使用WinHex查看 999 在内存地址的存储情况,8字节

 999 的16进制形式: 00000000000003E7

内存存储情况

结论:999 在内存中的存储形式是低位存储在低地址,高位在高地址

对比x64dbg,在x64dbg中使用快捷键 CTRL+G,可以出入指定的地址并查看

从内存布局窗口可以看出,地址的每次变化是8,正对应8各字节,也就是16位16进制数据。

WinHex工具介绍

这里主要用于分析查看可执行文件在内存的存储情况,熟悉内存。

在菜单栏下有一个open ram,打开内存

找到你想要分析的进程,选中它即可

查看内存

        Primary Memory 主要内存

        Entire Memory 全部内存

内存中找数据

        寻找999,找999的 16进制的值,进行查找内存地址

程序运行时,除了可执行程序外还有dll动态链接库支持

主要页面

通过这个功能可以跳转到指定到内存地址

因为主要是使用的这款工具分析查看进程程序的内存状况,所以并不会全面的介绍学习这款工具.

猜你喜欢

转载自blog.csdn.net/qq_61553520/article/details/131357696