Linuxでバイナリファイルを分析する方法

Linuxでバイナリファイルを分析する方法

この記事では、Linuxでバイナリファイルを分析する方法について説明します。

バイナリファイルを簡単に分析するのに役立つ簡単な5つのコマンドとツールについて説明します。Linuxは、バイナリの分析を簡単にする豊富なツールセットを提供します。Linuxで作業している場合は、職務が何であれ、これらのツールの基本を理解しておくと、システムをよりよく理解するのに役立ちます。

始めましょう。

1.ファイル

fileコマンドは、処理している正確なファイルタイプを識別するのに役立ちます。file、位置依存テストを含む特別にフォーマットされたファイルを指定します。デフォルトの位置依存テストとコンテキスト依存テストは実行されません。

このコマンドは、ファイルがどのように見えるかだけを伝え、ファイルが何であるかは伝えません(ファイルがコンテンツを見る場合)。内容が一致しないファイルにマジックナンバーを入れることで、プログラムをだますのは簡単です。したがって、このコマンドは、特定の状況以外ではセキュリティツールとして使用できません。

# file file.c
file.c: C program text

# file /bin/ls

bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=937708964f0f7e3673465d7749d6cf6a2601dea2, stripped, too many notes (256)

# file /etc/passwd
/etc/passwd: ASCII text

2. ldd

lddは、コマンドラインで指定された各プログラムまたは共有オブジェクトに必要な共有オブジェクト(共有ライブラリ)を出力します。ソフトウェアが開発されているとき、私たちは車輪の再発明をしないようにしています。出力の印刷や標準からの読み取り、ファイルのオープンなど、ほとんどのソフトウェアプログラムに必要な一連の一般的なタスクがあります。

これらの一般的なタスクはすべて、独自のバリアントを作成する代わりに、誰もが使用できる一連の一般的な関数に抽象化されています。これらの一般的な関数は、libcまたはglibcと呼ばれるライブラリに配置されます。

# ldd /bin/rm
linux-vdso.so.1 (0x00007ffcd6d7d000)
libc.so.6 => /lib64/libc.so.6 (0x00007f13d841c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f13d89f1000)

3.hexdump

hexdump-ファイルの内容を16進数、10進数、8進数、またはASCIIで表示します。hexdumpユーティリティは、指定されたファイル、またはファイルが指定されていない場合は標準入力をユーザー指定の形式で表示するフィルターです。

16進ダンプで不明なファイルを開くと、ファイルの内容を正確に確認できます。いくつかのコマンドラインオプションを使用して、ファイルに存在するデータのASCII表現を表示するように選択することもできます。これは、それがどのような種類のファイルであるかについての手がかりを与えるのに役立つかもしれません。

# hexdump -C /bin/ls | head
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF…………|
00000010 03 00 3e 00 01 00 00 00 00 5e 00 00 00 00 00 00 |..>……^……|
00000020 40 00 00 00 00 00 00 00 70 82 02 00 00 00 00 00 |@…….p…….|
00000030 00 00 00 00 40 00 38 00 0a 00 40 00 1f 00 1e 00 |…[email protected]…@…..|
00000040 06 00 00 00 04 00 00 00 40 00 00 00 00 00 00 00 |……..@…….|
00000050 40 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 |@…….@…….|
00000060 30 02 00 00 00 00 00 00 30 02 00 00 00 00 00 00 |0…….0…….|
00000070 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 |…………….|
00000080 70 02 00 00 00 00 00 00 70 02 00 00 00 00 00 00 |p…….p…….|
00000090 70 02 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 |p……………|

4 readelf

readelfは、1つ以上のELF形式のオブジェクトファイルに関する情報を表示します。オプションは、表示する特定の情報を制御します。ELF(Executable and Linkable File Format)は、Linuxだけでなく、さまざまなUNIXシステムでも、実行可能ファイルまたはバイナリの主要なファイル形式です。readelfを使用するときに、実際のELF仕様のリファレンスを手元に用意しておくと非常に便利です。

# readelf -h /bin/ls
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2’s complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x67d0
Start of program headers: 64 (bytes into file)
Start of section headers: 140224 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 13
Size of section headers: 64 (bytes)
Number of section headers: 30
Section header string table index: 29

5.objdump

objdump-オブジェクトファイルからの情報を表示します。objdumpは、1つ以上のオブジェクトファイルに関する情報を表示します。オプションは、表示する特定の情報を制御します。この情報は、プログラムをコンパイルして動作させたいだけのプログラマーとは対照的に、コンパイルツールに取り組んでいるプログラマーにとって主に役立ちます。このコンパイラは、ソースコードと同等の機械語命令を生成します。この命令は、CPUによって実行され、特定のタスクを実行できます。

# objdump -d /bin/ls | head

/bin/ls: file format elf64-x86-64

Disassembly of section .init:

0000000000004000 <.init>:
4000: f3 0f 1e fa endbr64
4004: 48 83 ec 08 sub $0x8,%rsp
4008: 48 8b 05 c9 ef 01 00 mov 0x1efc9(%rip),%rax # 22fd8 <__gmon_start__>

この記事では、Linuxでバイナリファイルを分析する方法を見てきました。

高性能のデュアルE5シリーズ専用サーバーと安価なKVMVPSを入手してください。


CentOS 7にCSF(ConfigServer Security&Firewall)をインストールして構成する方法

CentOS 7にCSF(ConfigServer Security&Firewall)をインストールして構成する方法

ConfigServer Security&Firewall(略してcsfとも呼ばれます)は、ステートフルパケットインスペクション(SPI)ファイアウォールです。CentOS7へのCSFのインストールと構成について学ぶ

CentOSにR1Softバックアップエージェントをインストールする方法

CentOSにR1Softバックアップエージェントをインストールする方法

CentOSにR1SoftBackupAgentをインストールして構成する方法を学びます。R1Soft Server Backup Managerは、サービスプロバイダーに柔軟でサーバーフレンドリーなソリューションを提供します。

CloudLinuxLVE制限を変更する方法

CloudLinuxLVE制限を変更する方法

この記事では、CloudLinuxLVE制限を変更する方法について説明しました。それでは、始めましょう。CloudLinux LVE制限は、LVEマネージャーを使用して変更できます。

ポートのSSHを変更する方法Linuxサーバー

ポートのSSHを変更する方法Linuxサーバー

LinuxサーバーのSSHポートを変更するには、SSH経由でサーバーにログインし、SSH構成ファイルを変更する必要があります。

CentOSにCentovaCastをインストールする方法

CentOSにCentovaCastをインストールする方法

Centova Castは、インターネットラジオストリームの主要な管理プラットフォームであり、ストリームホスティングプロバイダーに広範な洞察と制御を提供します。CentovaCast

メールサーバーでメールリレーを設定する方法

メールサーバーでメールリレーを設定する方法

次の電子メールリレー設定を使用すると、電子メール送信の問題を解決できます。

Ubuntu 18.04にApache、MariaDB、PHP、およびphpMyAdminをインストールする方法

Ubuntu 18.04にApache、MariaDB、PHP、およびphpMyAdminをインストールする方法

Ubuntu18.04サーバーにApacheMariaDBPHPとPHPMyAdminをインストールする方法を学習します。Apache、MySQL / MariaDB、およびPHPはパッケージで構成されています。それはランプとして知られています

Linuxでの基本的なユーザー管理を学ぶ

Linuxでの基本的なユーザー管理を学ぶ

Linuxでユーザーを追加、変更、または削除しますか?これがあなたにぴったりの記事です。

Linuxでの基本的なグループ管理について学ぶ

Linuxでの基本的なグループ管理について学ぶ

Linuxでのグループ管理の詳細をご覧ください。Linuxでグループを追加、グループを変更、グループを削除、メンバーを追加する方法。新しいグループを作成し、groupaddコマンドを使用します。

CentOS7にFail2banをインストールする方法を学ぶ

CentOS7にFail2banをインストールする方法を学ぶ

Fail2banは、SSH接続を保護するのに非常に役立ちます。これで、centos7にfail2banをインストールして構成し、サーバーにセキュリティのレイヤーを追加できるようになります。