• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vb6で作成したexeのバイナリ比較)

vb6で作成したexeのバイナリ比較

このQ&Aのポイント
  • vb6で過去に作成済のexeファイルは、現在手元にあるソースからコンパイルして作成されたものかどうかを調査する方法について調査中です。
  • 現在手元にあるソースをコンパイルして比較先のexeファイルを作成し、過去に作成済のexeファイルとのバイナリ比較を行いましたが、多くの差異が出ました。
  • バイナリ比較方法が間違っているのか、別の方法があるのかについて質問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.4

> コンパイルした日付のみ違うEXEなので、タイムスタンプとチェックサムにだけ差異が現れて欲しかったのですが、RAWDATAにも違いが出ているので、 ちょっと差異の切り分けが難しいので駄目そうです。 私もやってみましたがそのようですね。 ただ、何回コンパイルし直したファイルを比較しても差異のでる位置は同じでした。 何故同じソースで差異が出るかは判りませんが差異は検出できるのではないかと思います。 ・VB6のプログラムを何回かコンパイルしてdiffを取り、差異の出る位置を確認する ・古いファイルと新しいファイルの差異を取り、その位置を調べる ・位置が同じだったら他は同一とみなす ・別な位置にも差異が出たらソースが違う可能性がある  (ただし、VB6のSPが同一である場合) 参考に、私がいろいろ調べた中で参考になりそうなWebサイトを上げておきます。 Windows実行ファイル「EXE」の謎に迫る http://codezine.jp/article/corner/61 Windows実行ファイルのバイナリ概要 http://codezine.jp/article/detail/403?p=2 EXEファイルの内部構造(PEヘッダ) http://codezine.jp/article/detail/412 EXEファイルの内部構造(セクション) http://codezine.jp/article/detail/413 プログラムからEXEファイルを生成してみよう http://codezine.jp/article/detail/419 http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html EXEファイルの構造 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=48037&forum=36

その他の回答 (3)

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.3

ANo.2の続きです。 exediff の最新バージョンは 1.12 で、下記からダウンロードできます。 http://code.google.com/p/exe-dll-diff/

guccyonn
質問者

お礼

回答ありがとうございます。 ツールを教えて頂き、ありがとうございます。 早速使用してみました。 コンパイルした日付のみ違うEXEを比較してみたところ、確かにタイムスタンプに違いが現れました。 が、RAWDATAにも違いが現れてしまいました。 コンパイルした日付のみ違うEXEなので、タイムスタンプとチェックサムにだけ差異が現れて欲しかったのですが、RAWDATAにも違いが出ているので、 ちょっと差異の切り分けが難しいので駄目そうです。

guccyonn
質問者

補足

回答を途中で送信してしまいましたので、補足で追記致します。 教えて頂いたツールはオープンソースでもあり、何をしているか把握できるので、よい勉強の機会になりそうです。 尚、本件の調査は、引き続き行っておりますので、 宜しくお願い致します。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.2

バイナリの比較は難しいようですね。 exediff - find differences between two exe/dll files というツールがあります。 http://hp.vector.co.jp/authors/VA002803/exediff.html 試しにVB6ではありませんが、ソースの変更なしに時間をずらしてコンパイルしたファイルを比較してみましたら、差が検出されました。 オプションの -n で数値を変えると良いかもしれません。 Windows 7 でも動きました。

回答No.1

この方法では1バイトでもずれると以降は全部差異としてカウントされる可能性が有ります。 VBだと特にちょっとした違いで差異が出るのでバイナリの比較では難しいかも知れません。 どうしてもなら目視で比較すれば差異なのかズレなのかは判りますが差異が何故あるかを理解することは困難でしょう。 逆アセンブリリストを比較する方が現実的でしょう。

guccyonn
質問者

お礼

ありがとうございます。 確かにちょっとした違いで差異が出てしまうので、解析は非常に困難です。 提示頂いた逆アセンブリリストで比較可能か、調査してみます。

guccyonn
質問者

補足

vb_decompiler_liteというソフトを使用して、逆コンパイルしてみました。 ですが、コンパイル日付のみ違うEXEを使用して、 逆コンパイルした結果のテキストコンペアした結果、差異が多分に出てしまい、 とても比較できるような結果は得られませんでした。 どうも無理っぽいですね^-^;

関連するQ&A