[TOC]

0x00 快速入门

编程相关缩写
缩写 | 全称 | 说明
— | — | —
cc | C Compiler |
gcc | Gnu Compiler Collection | 作为一个软件集被你下载下来编译安装的时候
gcc | Gnu C Compiler | 作为一个软件被你调用来编译C程序的时候
g++ | Gnu c++ compiler | 其实g++只是调用gcc,然后连接c++的库,并且作相应的一些编译设置而已
gcj | Gnu Compiler for Java |
gdb | Gnu DeBug |

file命令

描述:用来探测给定文件的类型,file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程.

#基础语法和参参数
file (选项) (参数) # parameters-> 文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件

WeiyiGeek.参数

示例:

#示例1.显示文件类型
$file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
$file PentextBox.zip
PentextBox.zip: Zip archive data, at least v2.0 to extract

$file -b PentextBox.zip #不显示文件名称
Zip archive data, at least v2.0 to extract

$file -b -i PentextBox.zip #显示MIME类别
application/zip; charset=binary
$file -b -i anaconda-ks.cfg
text/plain; charset=us-ascii


#示例2.判断当前系统的位数(运行的平台,以及架构和是不是支持裁剪stripped,)
$file /bin/ls
/bin/ls: [关键点]ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped


#示例3.显示符合链接的文件类型以及目录
$file anaconda-ks.ln
anaconda-ks.ln: symbolic link to `anaconda-ks.cfg`
$file /root/
/root/: directory


size 命令

描述:分析Linux程序内存段分布,但它的输出不包括stack和heap的部分,只包括文本段(text), 代码段(data),未初始化数据段(bss)三部分。

  • 1、文本段:包含程序的指令,它在程序的执行过程中一般不会改变。
  • 2、数据段:包含了经过初始化的全局变量和静态变量,以及他们的值。
  • 3、BSS段:包含未经初始化的全局变量和静态变量。
  • 4、堆栈段:包含了函数内部声明的局部变量。当然上面段的作用不仅于此具体的作用
#示例1.以C脚本来分析
[[email protected] ccodes]# cat test.c

// 论1:未初始化的全局变量保存在BSS段
int g_data; //4B(由于整型占用了4B)

//论2:经过初始化的全局变量保存在数据段中
int gg_data=1;

// 论6:const修饰的全局变量保存在文本段
const int g_data=1;

//论8:字符串常量保存在文本段/数据data段
char *pstr="123456789"; //文本占用9B,数据data段4B
//char ptrs[10]="123456789"; //这个只增加数据data段

int main()
{
//论3:未初始化的静态变量保存在BSS段中
static int sg_data;

//论4:经过初始化的静态变量保存在数据段中
static int sgg_data = 2;

//结论7:const修饰的局部变量保存在文本段
const int i_data=1;

return 1;
}

WeiyiGeek.案例演示