at_shiita.ishigaki
2021年12月22日 9時19分
本ブログでは以下のコマンドで作成したa.outを使用します。
[armadillo ~]# apt install gcc
[armadillo ~]# cat hello.c
#include <stdio.h>
int main(void)
{
printf("Hello World\n");
return(0);
}
[armadillo ~]# gcc hello.c
[armadillo ~]# ls a.out
a.out
ファイルの中身を16進数で表示するにはhexdumpコマンドを使用します。
※ここでは例として、a.outの先頭100バイトを16進数で表示します。
[armadillo ~]# head -c 100 a.out | hexdump
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0003 0028 0001 0000 03fd 0000 0034 0000
0000020 1b40 0000 0400 0500 0034 0020 0009 0028
0000030 001d 001c 0001 7000 0580 0000 0580 0000
0000040 0580 0000 0008 0000 0008 0000 0004 0000
0000050 0004 0000 0006 0000 0034 0000 0034 0000
0000060 0034 0000
0000064
ファイルの中身を16進数で表示すると同時にASCII文字を表示するには-Cオプションを使用します。
[armadillo ~]# head -c 100 a.out | hexdump -C
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 28 00 01 00 00 00 fd 03 00 00 34 00 00 00 |..(.........4...|
00000020 40 1b 00 00 00 04 00 05 34 00 20 00 09 00 28 00 |@.......4. ...(.|
00000030 1d 00 1c 00 01 00 00 70 80 05 00 00 80 05 00 00 |.......p........|
00000040 80 05 00 00 08 00 00 00 08 00 00 00 04 00 00 00 |................|
00000050 04 00 00 00 06 00 00 00 34 00 00 00 34 00 00 00 |........4...4...|
00000060 34 00 00 00 |4...|
00000064
表示するバイト数を指定するには-nオプションを使用します。
[armadillo ~]# hexdump a.out -n 100
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0003 0028 0001 0000 03fd 0000 0034 0000
0000020 1b40 0000 0400 0500 0034 0020 0009 0028
0000030 001d 001c 0001 7000 0580 0000 0580 0000
0000040 0580 0000 0008 0000 0008 0000 0004 0000
0000050 0004 0000 0006 0000 0034 0000 0034 0000
0000060 0034 0000
0000064
先頭を読み飛ばすには-sオプションを使用します。
※ここでは例として、先頭50バイトを読み飛ばし、50バイト目から100バイト目を表示しています。
[armadillo ~]# hexdump a.out -n 50 -s 50
0000032 001c 0001 7000 0580 0000 0580 0000 0580
0000042 0000 0008 0000 0008 0000 0004 0000 0004
0000052 0000 0006 0000 0034 0000 0034 0000 0034
*
0000064