[ Return Home ]

バイナリファイル差分解析ソフト Version 1.0


2つのバイナリ形式ファイルの違いを発見するソフトとして、MS-DOSには fc というソフトが標準でありました。 しかしながら、現在のWindowsの世界となって fc は機能的に満足できない点が有ります。 一番問題なのが、スピードの遅さで、ファイルのリードバッファが非常に少ないため、 非常に頻繁にDiskのアクセス(それも2つのファイル交互に)発生するため、大きなファイルを比較させると Diskが悲鳴を上げているようにさえ聞こえてきます。
テキストファイルの差分解析ソフトは、マイクロソフトのWindiffというソフトが結構大きなファイルでもストレスなく 比較してくれます。(VC++を買うと中に入ってきますし、未確認ですがWin98の中にもあるようです。)
しかし、バイナリファイルの比較ソフトはありませんでした。
そこで作ったのがこの Nwdiff というプログラムなのですが、 長大なバイナリファイルの差分解析を行わせる ために作りました。特徴は以下のとおりです。
1) 比較するファイルサイズの上限は1テラバイト(2の40乗Byte) (実は上限のテストはしていません (・・;) )
2) 比較作業は画面表示とは別のスレッドで実行させるようにしましたので、比較最中でも終わった部分については画面で結果が参照できます。

(1) 動作環境
Windows95、98 または WindowsNT4.0
Win32の標準的な機能しか使っていないませんので、それ以降のバージョンでも動作できるでしょう。
ダウンロードしたファイルは 実行形式ファイルが一つきりでそれを適当なディレクトリに入れて使ってください。
(2) 基本機能
プログラムを立ち上げた後、メニューまたはToolBarよりOpenを選びます。 すると、ファイルを2回聞いてきますので、比較したいファイルをそれぞれ指定してください。 2回目の指定直後から、ファイルの比較処理が始まります。
画面は2つに別れていて、
左側は、縦軸にファイルの長さ(64KByte/Pixel)で横軸に64KByteごとに何パーセント同じ位置に 同じデータ(バイト単位)があったかをグラフ表示します。
右側は、最初64KByte単位のデータのBitmap表示が表示されています。 カーソルで、左側のグラフ内をクリックすると、該当のブロックのBitmap表示が表示されます。
Bitmap表示はそれぞれのファイルの該当64KByteとは別に、二つのファイルの「XOR演算結果」、 「色を変えてOR演算結果」の合計4つのBitmap表示を行います。 右側のBitmap表示をクリックすると該当位置のHexDumpが表示できます。 HexDumpでは、合っているバイトは紺色で合っていないバイトは赤で表示し、1行の中に一つでも 合っていないバイトがある場合は、アドレスの背景色が変ります。

画面イメージ (JPG 127Kbyte)
画面の説明 :
25Mbyte程度の2つのファイルを比較させているところの画面です。 画面右下 ETR というのは Estimated TIme Remaining の意味で比較作業の推定残時間が表示されます。 具体的には、33%の比較が終わって残り44秒で終了するだろう という事を表現しています。
表示されているブロックは 56% のデータが合っているのですが、BitmapのXOR表示のところを見ると 64KByteの後半に集中している事がわかります。
(3) LHAで圧縮してあります。
オリジナル nwdiff.exe 352Kbyte
配布状態 nwdiff.lzh 175Kbyte
最新版のウイルスチェッカでチェック済みです。

Download nwdiff.lzh

(5) 履歴
(A) 1999/1/18
V1.00リリース、機能はまだまだですが、自分自身これを使っています。