find differences between two windows binary files(exe/dll)

Release 1.x

Version:
1.12
Author:
Hiroshi Kuno <hkuno-exediff-tool@microhouse.co.jp>
License:
New BSD License Copyright © 2004,2009 by Hiroshi Kuno
本ソフトウェアは無保証かつ無償で提供します。利用、再配布、改変は自由です。

はじめに

exediffは、Win32実行ファイル(exe/dll)のロードイメージを比較し、差異を表示するコンソールアプリケーションです。 二つのプログラムファイルの、同一性や違いを確認するのに便利です。

特徴

動作環境

WindowsNT3.1/Windows95以降。 Windows98SE/Windows2000/WindowsXP にて動作確認済み。

インストール方法

配布ファイル windiff.exe を、PATHが通ったフォルダにコピーしてください。 アインインストールするには、そのコピーしたファイルを削除してください。

使い方

usage :exediff [-h?tcdq][-n#] (FILE1 FILE2 | DIR1 DIR2 [WILD] | DIR1 DIR2¥WILD)
  version 1.12
  -h -?   this help
  -t      ignore time stamp
  -c      ignore check sum
  -d      dump file image
  -q      quiet mode
  -n#     max length of differ rawdatas. default is 4
  FILE1/2 compare exe/dll file
  DIR1/2  compare folder
  WILD    compare files pattern in DIR2. default is *

出力例

exediff C:¥WINDOWS¥system32¥msvcp50.dll C:¥WINDOWS¥system32¥msvcp60.dll 

FileHeader.NumberOfSections:
<0006
>0005

FileHeader.TimeDateStamp:
<33FA7CF2(Wed Aug 20 14:13:22 1997)
>4802C105(Mon Apr 14 11:27:17 2008)

OptionalHeader.LinkerVersion:
<5.0
>7.10

OptionalHeader.SizeOfCode:
<00053C00
>0002B000

OptionalHeader.SizeOfInitializedData:
<00035C00
>00039000

OptionalHeader.AddressOfEntryPoint:
<00050410
>0000131E

OptionalHeader.BaseOfData:
<00055000
>0002C000

OptionalHeader.ImageBase:
<780C0000
>75FD0000

OptionalHeader.FileAlignment:
<00000200
>00001000

OptionalHeader.SizeOfImage:
<0008D000
>00065000

OptionalHeader.SizeOfHeaders:
<00000400
>00001000

OptionalHeader.CheckSum:
<00098B09
>0007475E

Section Header[1].VirtualSize:
<00053B32
>0002A250

Section Header[1].SizeOfRawData:
<00053C00
>0002B000

Section RawData[1] .text <=> .text:
+00000000: B0(.) <=> 90(.)
+00000001: 01(.) <=> 90(.)
+00000002: C3(テ) <=> 90(.)
+00000005: 90(.) <=> 8B(.)
	<snip> differ more than 4 bytes.

Section Header[2].VirtualSize:
<0002E6BF
>0003250A

Section Header[2].VirtualAddress:
<00055000
>0002C000

Section Header[2].SizeOfRawData:
<0002E800
>00033000

Section Header[2].PointerToRawData:
<00054C00
>0002C000

Section RawData[2] .rdata <=> .rdata:
+00000000: 00(.) <=> FD(.)
+00000001: 00(.) <=> 49(I)
+00000002: 80(.) <=> 84(.)
+00000003: 00(.) <=> 7C(|)
	<snip> differ more than 4 bytes.

Section Header[3].VirtualSize:
<00001784
>000016AC

Section Header[3].VirtualAddress:
<00084000
>0005F000

Section Header[3].SizeOfRawData:
<00001200
>00002000

Section Header[3].PointerToRawData:
<00083400
>0005F000

Section RawData[3] .data <=> .data:
+00000000: 00(.) <=> C8(ネ)
+00000001: 00(.) <=> C3(テ)
+00000002: 00(.) <=> FF(.)
+00000003: 00(.) <=> 75(u)
	<snip> differ more than 4 bytes.

Section Header[4].Name:
<.idata
>.rsrc

Section Header[4].VirtualSize:
<00000770
>000003A8

Section Header[4].VirtualAddress:
<00086000
>00061000

Section Header[4].SizeOfRawData:
<00000800
>00001000

Section Header[4].PointerToRawData:
<00084600
>00061000

Section RawData[4] .idata <=> .rsrc:
+00000000: 6C(l) <=> 00(.)
+00000001: 60(`) <=> 00(.)
+00000002: 08(.) <=> 00(.)
+00000004: FF(.) <=> 00(.)
	<snip> differ more than 4 bytes.

Section Header[5].Name:
<.rsrc
>.reloc

Section Header[5].VirtualSize:
<000003A0
>000029E8

Section Header[5].VirtualAddress:
<00087000
>00062000

Section Header[5].SizeOfRawData:
<00000400
>00003000

Section Header[5].PointerToRawData:
<00084E00
>00062000

Section Header[5].Characteristics:
<40000040(data, read)
>42000040(data, discardable, read)

Section RawData[5] .rsrc <=> .reloc:
+00000001: 00(.) <=> 10(.)
+00000004: 7C(|) <=> 78(x)
+00000005: 8E(.) <=> 01(.)
+00000006: 0B(.) <=> 00(.)
	<snip> differ more than 4 bytes.
.reloc section is only in "C:¥WINDOWS¥system32¥msvcp50.dll"
"C:¥WINDOWS¥system32¥msvcp50.dll" and "C:¥WINDOWS¥system32¥msvcp60.dll" differ

欠けている機能

リンク

ダウンロード

改訂履歴

version 1.12 [October 3, 2009] チェックサム無視対応版

Release 1.11 [June 30, 2004] 公開初版


Generated on Sat Oct 3 17:40:45 2009 for exediff by  doxygen 1.6.1