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ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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