troushoo

Linux コマンドのダンプをソースコードを用いて解析

概要

運用環境の Linux コマンドのダンプを取得して、取得したダンプを開発マシンでソースコードを用いて解析する方法を紹介します。

内容

ここでは、Ubuntu 16.04 にて sum コマンドを実行し、ユーザーの入力待ちの状態でダンプを取得・解析してみます。

ダンプの取得
1. [sum] を実行します。


2. 他ターミナルで [pgrep sum] を実行し、PID を取得します。


3. [gcore <pid>] でダンプを作成します。


デバッグシンボルのダウンロード
開発マシンで、デバッグシンボルのダウンロードを行います。(参考 URL)
開発マシンは、ライブラリ等が同じバージョンである必要があります。

1. [dpkg –search /usr/bin/sum] で、コマンドがどのパッケージに含まれるかを確認します。
ここでは、coreutils パッケージであることがわかりました。


2. [apt-get install coreutils-dbg] を実行してみます。
パッケージに「-dbg」をつけると、デバッグシンボルをダウンロードできることがあるためです。
ただし、coreutils では、デバッグシンボルをダウンロードできませんでした。


そのため、以下の方法にて、デバッグシンボルをダウンロードします。

3. レポジトリーを追加します。

echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | \
sudo tee -a /etc/apt/sources.list.d/ddebs.list
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | \
sudo tee -a /etc/apt/sources.list.d/ddebs.list



4. key を追加します。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5FDFF622


5. [apt-get update] を実行します。


6. [apt-cache policy coreutils] を実行し、現在インストールされているモジュールのバージョンを確認します。


7. パッケージに「-dbgsym」をつけた [apt-get install coreutils-dbgsym=8.25-2ubuntu2] を実行し、デバッグシンボルをダウンロードします。


ソースコードのダウンロード
開発マシンで、ソースコードのダウンロードを行います。

1. /etc/apt/sources.list の deb-src の「#」をはずし、コメントを解除します。


2. [apt-get update] を実行します。

3. [apt-get source coreutils] を実行し、ソースコードをダウンロードします。


ダンプの解析
開発マシンにダンプをコピーし、ダンプの解析を行います。

1. ソースがあるディレクトリで [gdb /usr/bin/sum /tmp/core.2535] を実行します。


2. [Ctrl + x, a] を押し、ソースコードを表示できるようにします。


3. [up] を複数回実行し、sum のフレームに移動します。
ソースコードが表示されることを確認します。
getc() で入力待ちしていたことがわかります。


関連記事
リバース実行を用いた gdb によるデバッグ
  1. 2017/03/12(日) 00:31:26|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0
<<nc : TCP のポートに ping できる Linux のツール | ホーム | タスクマネージャーの詳細をコピーする Tips>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/336-16892275
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (77)
ネットワーク (37)
Wireshark (43)
Visual Studio (55)
WinDbg (33)
SOS・Psscor2/Psscor4 (25)
Linux (19)
コンテナ (4)
Azure (17)
Tips (19)
AD (6)
.NET (24)
Python (5)
Java (5)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する