そのファイルを実行する前と実行中または実行後に .exe ファイルのチェックサムを生成すると、異なる結果が得られるかどうか疑問に思っています。私は境界ケースよりも一般的な方法 (firefox.exe のような人気のあるアプリの SHA ハッシュを生成するなど) に関心がありますが、どちらも興味深いものです。ありがとう。
4 に答える
ファイルが同一である限り、ファイルのハッシュは一定である必要があります (つまり、同じバイトのみを同じ順序で含む)。実行時にディスク上の表現を書き換えるアプリケーションを見つけることは非常にまれであるため、ハッシュは一定である必要があります。自己変更プログラムはありますが、ディスク コピーではなく、メモリ内にロードされたコードのコピーを操作する傾向があります。
編集: 「自己更新」アプリケーションを検討する必要がありますが、これらはコア アプリケーションをダウンロードして更新するための小さなヘルパー プログラムを起動する傾向があります。実行中に実行を更新するのは (特に Windows では) 困難です。UNIX システムは Copy on Write システムで動作する傾向があるため、ソフトウェアの更新によって実行可能ファイルが変更される可能性がありますが、これは「まれなケース」です。
ファイルが変更されると、ハッシュが変更されます。
EXE ファイルが単独で変更されることはめったにありません。firefox.exe
ユーザーが新しいバージョンに更新すると変更されます。
実行後にEXE ファイルの「変更日」属性 ( などfirefox.exe
) をチェックして、変更されているかどうかを確認できますが、おそらく変更されていないことがわかります。
ハッシュは、exe が変更された場合にのみ変更されます。これは、アプリがそれ自体を変更した場合にのみ発生し、アプリを再起動しないと Windows では発生しません。Firefox 自体が更新される場合があります (再起動を含む) が、そのような場合を除いて、ハッシュは同じままです。
最終アクセス時刻の変更を意味する場合でも、ファイル内ではなくファイル システム レベルで保存されるため、ハッシュは同じままです。