実行可能ファイルのタイムスタンプが変更されないようにする方法を知っている人はいますか? .exe の一貫したハッシュ コードを生成しようとしていますが、タイムスタンプがそれを妨げている可能性があると思います。コード (VS C++) を再コンパイルするたびに、FastSum は異なるチェックサムを生成します。
ありがとう!
PE ファイル形式 (EXE など) には、タイムスタンプ フィールドがあります。このリンクで「表 2. IMAGE_FILE_HEADER フィールド」を確認してください: http://msdn.microsoft.com/en-us/library/ms809762.aspx
本当にやりたいのであればTimeDateStamp
、16 進エディタで編集するか、小さなプログラムを書いてそれを行うことができるようです。上記のドキュメントを正しく読むと、オフセット 10 で 4 バイトのように見えます。
これを変更した結果がどうなるかはわかりません。私の推測では、プログラムをデバッグするときにシンボルを見つけることができなくなる可能性があります。おそらく、バイナリでこのフィールドを変更する代わりに、PE ヘッダーの外側の領域をハッシュする必要があります。(私が提供するリンクは、それが意味のある場所を判断するのに役立つ場合があります。)
どのタイムスタンプ?最終アクセス? アクセスしている場合、その変更を防ぐことはできませんが、メモしてから元に戻すことはできますか?
ハッシュについて - どういう意味ですか? .exe が変更されていないことを確認する方法は? 私ならCRCを使います。
ファイルのタイムスタンプは、OS によって制御および維持されるものです。ファイル (実行可能ファイルを含む) 自体の内部にはありません。