以前以下の質問しました。
http://q.hatena.ne.jp/1368768302
ビルド毎に生成されたexe/dllをバイナリで比較すると、PEヘッダのTimeDateStampだけが違いがあることがわかっています。
ソースコードに全く変更がなく単なるリビルドしたバイナリを同一のものと判断するべく、ビルド後にPEヘッダのTimeDateStampを0などに変更しようと計画しています。
exe/dllを使用するにあたりPEヘッダのTimeDateStampが0であると何か問題が発生するのでしょうか?
ご存知の方がいらっしゃれば教えてください。
コメント(2件)
PE ヘッダのタイムスタンプを書き換えるツールがあるようでしたので、試してみました。
■ PE形式バイナリ変換ツール
http://coexe.web.fc2.com/hackbin.html
TimeDateStampを「0」にすると「1970/01/01 09:00」に設定されるようです。
開発時にバイナリ比較で差異が無いことを確認することが目的ということであれば、一時的に、変更するのはアリだと思いますが「0」に変えてリリースするのは、リスクがあるような気がします。
特に、セキュリティ対策ソフトは、PE ヘッダが正常か?をチェックしている場合があるようですのであり得ない値が入っていると、改ざんとして検知されることもあり得そうです。
<参考情報>
■ 悪性コード分析担当者が見たPE構造 - セキュリティサービスのアンラボ
http://www.ahnlab.co.jp/securityinfo/asec_report.asp?seq=2473
また、少し話はそれますが、メガデモの類のプログラムだと、プログラムサイズ削減の為、PE ヘッダを極限まで削除することもしているようです。構造を熟知している場合に成せる技だと思いますが。。。
■ ドイツのプログラミングイベントで部門優勝した4KBメガデモが話題 | スラッシュドット・ジャパン
http://slashdot.jp/story/09/04/18/1241233/%E3%83%89%E3%82%A4%E3%83%84%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%81%A7%E9%83%A8%E9%96%80%E5%84%AA%E5%8B%9D%E3%81%97%E3%81%9F4KB%E3%83%A1%E3%82%AC%E3%83%87%E3%83%A2%E3%81%8C%E8%A9%B1%E9%A1%8C
コメントありがとうございます。
>「0」に変えてリリースするのは、リスクがあるような気がします。
まさにこれで、使用にあたっては特段問題なさそうなんですけど、意外な何かで引っかかるかも?という漠然とした不安はありますね。
0にすると現実的ではない昔になってしまいますが、リリース予定日(近い未来)とか、プロジェクト開始日(近い過去)なら大丈夫かなと思うのですが、書き換えることの影響がどの程度あるかハッキリとわかりませんね..