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

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

新規登録して質問してみよう
ただいま回答率
85.37%
date

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

Q&A

解決済

1回答

24118閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

date

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

0グッド

2クリップ

投稿2017/10/20 17:05

友人から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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

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

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

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

C

1#include <stdio.h> 2 3int main(int argc, char* argv[]) { 4 printf("Hello World!\n"); 5 return 0; 6}

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

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

Bash

1# 実行ファイルConsoleApp.exe を解析 2$ file ConsoleApp1.exe 3ConsoleApp1.exe: PE32 executable (console) Intel 80386, for MS Windows 4 5# JPEGファイル sample.jpg を解析 6$ file sample.jpg 7sample.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/20 18:59

dodox86

総合スコア9254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/21 11:48

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

2017/10/21 15:01

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問