3

私たちの QA チームは、ビルド間で実際に変更された EXE と DLL に基づいてテストを集中したいと考えています。すばらしい svn 変更レポートがありますが、ソース バイナリと変更されたバイナリの関係は必ずしも明らかではありません。比較しているビルドは常に完全にクリーンなビルドであるため、ファイル システムのタイムスタンプは使用できません。Windows (および Windows CE) の PE バイナリを比較するためのツールを探しています。これらのツールは、埋め込まれたタイムスタンプやその他の問題を無視します。信頼できる「実際に変更されたバイナリ」レポートを生成するためのツールまたはその他の方法に関する推奨事項はありますか? ありがとう。

明確化: これまでの回答に感謝しますが、ソースが変更されていなくても、ビルドするたびにすべてのファイルが異なるように見えるため、単純なバイト単位の比較やチェックサムの比較によってレポートを生成することはできません。コンパイラが挿入するタイムスタンプのためです。問題は、偽陽性をどのように無視するかです。逆アセンブルと比較のアイデアは、私たちが必要としているものに最も近いと思います...

答えた!Bindiff はまさに私が探していたものです。どうもありがとう。

4

8 に答える 8

4

Bindiffを見たことがありますか?

于 2008-12-06T13:56:39.017 に答える
2

以前にこの問題に遭遇しました。私の解決策は、.EXE/.DLL 内のすべてのタイムスタンプを既知の値に設定するツールを作成することでした。ビルド後のステップとして実行します。その後、バイナリ差分は問題なく機能します。

于 2008-12-06T13:30:39.883 に答える
1

バイナリの種類がわからない(DLL?PE / WinCE実行可能ファイルのみ?その他?)たとえば、コミット時にソースコードのバージョンを更新するソース管理タグを使用して、バイナリにバージョン情報を埋め込むことは可能ですか?次に、新しいビルドが作成されると、バイナリのバージョン文字列も更新されます。バイナリファイルを比較する代わりに、バージョン文字列を使用して変更を確認することができます。

于 2008-12-06T08:23:13.963 に答える
1

NDependを見てください。

于 2008-12-06T13:51:52.413 に答える
1

おそらく、バイナリを逆アセンブルしてから、アセンブリで diff を実行できます...

これは、QA チームが間違ったアプローチを取っているように思えますが、コードがどのように見えるかは問題ではありません。やるべきことをやるだけです。

編集:ああ!もう一度読んで、あなたの質問を誤解していたことに気づきました。彼らは変更されたメソッドをテストしたいと思っていました...

その場合、MD5 ハッシュを取得して比較してみませんか? 最も小さな変更により、まったく異なるハッシュが生成されます。

于 2008-12-06T03:11:02.160 に答える
0

プロジェクトの依存関係グラフジェネレーターDependency-GrapherforC ++-プロジェクトはどちらも、GraphVizを使用して依存関係を視覚化します。ソースファイルや他の葉が変更された依存関係グラフのブランチを特別に強調表示することで、どちらかをニーズの基礎として使用できると思います。

MD5ハッシュまたはチェックサム(上記で提案)、空白を無視してコメントの変更を除外する単純な差分、またはバージョン管理システムからの変更リスト情報により、どのファイルが変更されたかを通知できます。

于 2008-12-06T08:21:53.687 に答える
0

gnubinutilsは特に文字列

于 2008-12-06T08:25:01.747 に答える
0

会社でインストール検証用の「自作」ツールに取り組んでいたとき、Beyond Compareを比較用のバックエンドとして使用しました。

優れたファイル/フォルダー比較 (バイナリも) とスクリプト機能があり、XML レポートを出力できます。

于 2008-12-06T03:26:30.053 に答える