質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.02%

  • date

    55questions

    dateは、date型や日付に関する関数や処理についてのタグです

バイナリーデータ 解析したい

解決済

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 235

lock

score 17

友人からdatファイルをもらいました。
中身を見るとバイナリーデータとなってます。バイナリーデータがどのような内容で作られているのかを知りたいと思い解析したいと考えました。

ファイルの中をみていると MZから始まる文章なので実行ファイルなのだということはわかりました。しかし、どういった処理が行われているかがわかりません。
なのでできるだけ早く解析する方法があればよいなと思い質問しました。
そもそもバイナリーデータは読みくのに時間がかかるように作られているものだと思うのですが 読み解くために素早い方法があれば教えてください。よろしくお願いします。

MZ・         ク       @                                   P  コ エ    ヘ!クLヘ!This program cannot be run in DOS mode.
tnョF゙/<uΠA潟'茂メィヂ6xlセu&,9|メFタフ"p"壬?€@・・f・xn)$;・漣M・ュゥ
,j゚r#゙・鐓ュ€51ミl1O瀁&#)E。)檸・・苙・ⅴ・エ・・oヒJ=ヒィu{Sキ艮0{ヘ愚hヌ*
M(N<浣コL昂2ヘ(J<@j;!ユ・孝 H・H・・ノト+B・XK_K~居イ・ノホ;ネu久D9キ*\セ€タ}    マ
qb?Rミマ侊Jチm゚j
テWcDC・・a~カィハAタt゙Ia'゙UuOhtチ笹W・?Fヲ€・・ナrワ0ョ\痩キキッ|!・ロ/l@]・&~,[y驪・n旨
・キol}9Vネ4SLRNC08。8P妓´Cチァ^P-・>匤擬T 9・√4|ウq$・_ムワ]m「肩@・・htd~[}ーQ;Jッノ~
uAbt1*・:イQ・}hシP・Dハu・ク ・鰕ヌ・・・・ワt・δ(・ `
・・|€ャ 5牀・03R・eヨネ![Tチ゚タ    ツ
uD・罇!≫ア竸2!Sフ"・5H
・゙4b。3i@=揆N1・0`メエ#=イーPフ・・・u8ぺラヌA「zX/。t*。フ・ヨ顛﨏イo・・@」ゥ・ィ豊・,2フワ?テL猿・峻ソョ寸ニ_II・ @3$zRfレ~C|    ゚・ヨ・モhK8€ $キ・・ 。u゚・    ロチ!・. エXAサタ郡゙ネt咩恥製・Rv"Y0ユ0_業^(, #フ^?_坑iaタ$ワ竄櫞N$・ヨ|p夘=bX・コチ晰 sメ^・・」]UWツⅧ・k・エ<]顴Q&V/}リt0yt&9ョ[操lゥホ ・EW豐ト8


実際に記入されている内容の一部です。

わかる点がありましたらよろしくお願いします

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+7

すばやく簡単に、と言う訳には行かないと思いますよ。

「解析」と言われているのがどんなレベルの解析なのかにもよるのですが、もし、バイナリファイルが実行ファイルで、その動作内容(何をするのか)まで解析したいと言うのであれば、それこそ簡単にはいきません。

未知の実行プログラムの動作を理解するには、デバッガーと呼ばれるものにかけてひとつづつ動作を追う必要があります。アセンブリ言語の知識やOSの知識も総動員して解析しないと、理解できません。そのような行為は「リバースエンジニアリング」と呼ばれます。未知のコンピューターウイルスやマルウェアの解析には必ず行われるはずのものですが、正規の方法によって配布されたファイルでは、ものによっては使用許諾違反になります。(リバースエンジニアリングの禁止)

一例ですが、例えば以下のC言語のプログラムは単純に"Hello World!"と画面に表示するだけのものですが、これをコンパイルして実行ファイルになると、マシン語と初期データの"かたまり"になります。それがバイナリファイルと言うわけで、(分かりやすく簡単に書いてますが、実はそれほど単純ではないです)

#include <stdio.h>

int main(int argc, char* argv[]) {
    printf("Hello World!\n");
    return 0;
}


これをデバッガー(下図はVisual Studio 2017)にかけると、下のように見えます。この内容をひとつひとつ追って解析することになりますが、マシン語とアセンブリ言語なので、これらを理解している必要があります。※マシン語の理解は必須ではありませんが。。。
イメージ説明
反対に言えば、こんな簡単なプログラムですら、このような形になってしまうということです。「逆アセンブラー」と呼ばれるマシン語からアセンブリ言語ソースファイルを作ってくれるソフトウェアもありますが、アセンブリ言語の理解が必要なのは同じです。

動作内容まで解析する必要は無い、と言うのであれば、各種のファイル解析ツールがあります。
Linux等のUNIX系OSではfileコマンドと言うのがあって、ファイルを指定すれば「どんなファイルなのか?」を簡単にレポートしてくれます。以下は、Cygwinと言うWindowsの環境で動作するUNIX(ぽい)環境でfileコマンドを実行した例です。ConsoleApp1.exe は上記の実行ファイルです。

# 実行ファイルConsoleApp.exe を解析
$ file ConsoleApp1.exe
ConsoleApp1.exe: PE32 executable (console) Intel 80386, for MS Windows

# JPEGファイル sample.jpg を解析
$ file sample.jpg
sample.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: "CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90", baseline, precision 8, 1920x1080, frames 3

実行ファイルConsoleApp1.exe であれば「Windowsで動作する32ビット版のコンソールプログラム」と言うことが分かりますし、JPEGファイルsample.jpg であればJPEGの様々な情報が出力されています。これであれば「素早く簡単に」と言えるでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/21 20:48

    ご回答ありがとうございます。
    大変わかりやすく丁寧な回答です。
    動作内容を解析するには途方もない時間がかかるということ、またツールを使用すれば簡単な情報であれば調べることができるということ。わかりやすかったです。
    このたびは本当にありがとうございました!

    キャンセル

  • 2017/10/22 00:01

    コメントありがとうございます。少しでもお役に立てて良かったです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • date

    55questions

    dateは、date型や日付に関する関数や処理についてのタグです