OS:XP SP3
编译器: DEV C++ 4.9.9.2
工具:
OD (ollydbg)
CFF Explorer
实验目的:了解程式如何储存资料
#include <stdio.h>#include <stdlib.h>void func(void);//全域变数 int g1=0;int g2=1;int main(){ //区域变数 int a=2; int b=3; func(); system("pause"); return 0; }void func(void){ //区域变数 int x=7; int y=8; }
1.代码区(.text):这个区域存储着被装入执行的二进制机器代码,处理器会到这个区域取指并执行。
2.数据区(.data):用于存储全局变量等。
3.数据段(.rdata):,资源数据段,程序用到什么资源数据都在这里(包括自己打包的,还有开发工具打包的)
4.堆区(heap):进程可以在堆区动态地请求一定大小的内存,并在用完之后归还给堆区。动态分配和回收是堆区的特点。
5.栈区(stack):用于动态地存储函数之间的调用关係,以保证被调用函数在返回时恢复到母函数中继续执行。
加上 imageBase: 00400000
(1)全域变数 (00400000+2000) (.data段)
(2)主函数的区域变数
(3)函数的区域变数
00400000+3000(数据段 资源区) (.rdata段)
system("pause") //这行用了 pause 字串
如有问题或错误欢迎指教,谢谢。