binary hacks读数笔记(objdump命令)】的更多相关文章

一.首先看一下几个常用参数的基本含义: objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: 1.objdump -f test       显示test的文件头信息 2.objdump -d test       反汇编test中的需要执行指令的那些section 3.objdump -D test       与-d类似,但反汇编test中的所有section 4.objdump -h test       显…
可以用readelf命令来查看elf文件内容,跟objdump相比,这个命令更详细. 1. readelf -h SimpleSection.o ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 45为E 4C为L 46为F Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V A…
nm命令(names):输出包含三个部分:1 符号值.默认显示十六进制,也可以指定: 2 符号类型.小写表示是本地符号,大写表示全局符号(external); 3 符号名称. 例如:nm SimpleSection.o 0000000000000000 T func1 0000000000000000 D global_init_var 0000000000000004 C global_uninit_var 0000000000000021 T main U printf 0000000000…
Linux od命令用于输出文件内容. od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来 -t<输出格式>或--format=<输出格式> 设置输出格式. 实例 创建 tmp 文件: $ echo abcdef g > tmp $ cat tmp abcdef g 使用 od 命令: $ od -b tmp 0000000 141 142 143 144 145 146 040 147 012 0000011 使用单字节八进制解释进行输出,注意最左侧一列表示距…
file命令的作用是用于检验文件的类型,并打印至终端.file命令检验文件类型按以下顺序来完成: 检验文件系统(Filesystem)中支持的文件类型. 检验magic file规则. 检验文件内容的语言和字符集. 检验文件系统(Filesystem)中支持的文件类型文件系统支持的文件类型指的是通过ls -l中第一个字符表示的文件类型:-(regular):正规文件(包括文本文件(ASCII)(会打印text),可执行文件(会打印excutable),其他二进制文件(会打印data))d(dir…
这块将介绍一下ld链接命令的具体使用.ld的作用:ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种.完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析.链接其实主要就是完成四个方面的工作:storage allocation.symbol management.libraries.relocation.ld可以识别一种Linker command Language表示的linker scriopt文件来显式的控…
一.首先对readelf常用的参数进行简单说明: readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍: 1.readelf -v       显示版本 2.readelf -h       显示帮助 3.readelf -a test           显示test的全部信息 4.readelf -h test           显示test的ELF Header的文件头信息(就是ELF文件开始的前5…
首先我们先看两段代码: a.c extern int shared; int main(){ int a=100; swap(&a,&shared); } b.c int shared=1; void swap(int* a,int* b){ *a^=*b^=*a^=*b; } gcc  -c a.c b.c 得到a.o 与b.o 1.查看a.o: [root@tlinux misc]# objdump -h a.o a.o: file format elf64-x86-64 Sectio…
共享库从文件结构上来讲,与共享对象没什么区别.Linux下,共享库就是普通的ELF共享对象. 1.共享库命名: libname.so.x.y.z :其中最前面使用前缀lib,中间是库的名字和后缀"so".最后三个数字组成的是版本号.其中,"x"表示主版本号,"y"表示次版本号,"z"表示发布版本号. 2.SO-NAME: 共享库主版本号与次版本号决定了一个共享库的接口.对于Linux系统来说,普遍采用一种叫做SO-NAME的命…
1.地址空间 在linux系统中,每个进程拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小是由计算机硬件决定的,具体地说,是由CPU的位数决定的.比如,32位硬件平台决定的虚拟地址空间大小:0--232-1.即0x00000000--0xFFFFFFFF. 在linux系统中,整个4GB内存空间被分成两部分.其中操作系统本身用去一部分,从地址0xC0000000到0xFFFFFFFF.剩下的低地址的0x00000000到0xBFFFFFFF的3GB虚拟空间由进程使用. 装载有两种方式--覆盖装…