Ddigital-Forensics-Lab-1

实验目的

理解计算机是如何存储和处理数据的。

实验环境

安装有kali linux的虚拟机、可以编译C程序。

实验步骤

Task1

1、输入touch Task1.c 指令在桌面创造一个空的C语言文件。

2、输入gedit Task1.c 指令使用gedit编辑器打开Task1.c文件。

3、输入gcc Task1.c -o Task1.out 指令编译Task1.c文件,生成Task1.out文件。

4、输入./Task1.out 指令运行Task1.out文件。

5、将显示结果记录到记录表1中。

变量类型 参数类型 字节数
student1.id 100 4
student1.province 101 3
student1.age 102 4
结构体Student 104 12

运行程序得到的结果

Task2

1、输入gcc -g Task1.c -o Task1 指令编译Task1.c文件,生成Task1文件。

2、输入gdb Task1 指令启动gdb。

3、输入break 15 指令在第15行设置断点。

4、输入r 指令运行Task1,程序会在第15行停下来。

5、输入x/4bt &student1.id 指令查看student1.id的内存情况;输入x/4bt &student1.province 指令查看student1.province的内存情况;输入x/4bt &student1.age 指令查看student1.age的内存情况;输入x/4bt &student1 指令查看student1的内存情况。

6、将显示结果记录到记录表1中。

变量 十六进制值的表示
student1.id 0x7fffffffddf4: 10001000 01101111 11111011 00000101
student1.province 0x7fffffffddfc: 00010010 00000000 000000000 00000000
student1.age 0x7fffffffddfc: 00010010 00000000 000000000 00000000
结构体Student 0x7fffffffddf4: 10001000 01101111 11111011 00000101

运行程序得到的结果

Task3

前面步骤都和Task2一致。

1、输入break 10 指令在第10行设置断点。

2、输入r 指令运行Task1,程序会在第10行停下来。

3、输入x/1bx &digits[0] 指令查看digits[0]的内容;输入x/1bx &digits[1] 指令查看digits[1]的内容;输入x/1bx &digits[2] 指令查看digits[2]的内容;输入x/1bx &digits[3] 指令查看digits[3]的内容。

4、将显示结果记录到记录表1中。

数字数组项 第一项 第二项 第三项 第四项
内存地址 0x7fffffffddf4 0x7fffffffddf5 0x7fffffffddf6 0x7fffffffddf7
存储的值 0x12 0x34 0x56 0x78

运行程序得到的结果