ソースとDLLが同じ事を確認できませんか?

解決


hum  2006-04-26 01:52:57  No: 61436

初投稿です。宜しくお願いします。
当方、MSのVC++6  にて開発しております。

環境的、初歩的な質問なのですが。
一部ソース修正してビルドしたDLLと、リビルドしたDLLは
バイナリ比較すると別物になってしまいました。
また、SP3環境にてリビルドしたDLLと、SP6環境にてリビルドした
DLLはバイナリ比較すると別物になってしまいます。

ソースと、DLLの内容が同じ事の確認、コンパイルした環境を
確認する良い方法がありましたらご教授頂きたいです。
宜しくお願いします。


Ban  2006-04-26 02:33:55  No: 61437

> ソースと、DLLの内容が同じ事の確認、

一般にはできません。

最適化オプションとか入っていると、一行返るだけで関数単位で処理が変わりますし、
そもそも、単純なバイナリ比較で確認することはできません。

> コンパイルした環境を確認する

こちらはコンパイル時に情報を格納しておけばよろしいかと。


ななし  2006-04-26 04:28:34  No: 61438

まず無理です
バージョン管理をしっかりしましょう


hum  2006-04-26 18:49:46  No: 61439

アドバイスありがとう御座います。
まず無理ですか。そうですよねぇ...
一般ではなく、特殊に?でも出来るのなら
お聞きしたいところですが...

大規模開発でC++使っているのもどうなの?なんですが
「バイナリあれどソース無し。」なんてのは日常茶飯ゴトだと
思うのですがどうねんでしょうか。
...運用設計もしっかりしないとという事で。
お邪魔しました。


Blue  2006-04-26 18:59:40  No: 61440

> 「バイナリあれどソース無し。」なんてのは日常茶飯ゴトだと
> 思うのですがどうねんでしょうか
きちんとバージョン管理ツール(Visual SourceSafeとか)を使っていれば
そんな状態にはならないような気がしますけど。
(VSSを過信しすぎカナ。。。)


Ban  2006-04-26 21:25:51  No: 61441

> 一般ではなく、特殊に?でも出来るのなら
> お聞きしたいところですが...

無理です。

# 特殊的な前提とその手順。(どんなスキルと工数がいるのか…
# [前提]
# ・最適化コンパイラの出力コードの癖を完全に理解している。
# ・使用ライブラリ、プラットフォームのバイナリ特性を完全に理解している。
# ・PE等のファイルフォーマットを熟知している。
# [手順1]
# ・実行コードを逆アセンブリしてソースから生成されるであろう処理と比較する。
# ・これらの確認をミスなく、根気よく、全実行コードに対して実施。
# [手順2]
# ・もう少しマシなのは、生成したバイナリの差分をアセンブリレベルで検証する。
# ・これらの確認をミスなく、根気よく、全差分に対して実施。

# 版管理は重要だと思いますが、VSSである必要は感じてません。


hum  2006-04-26 22:10:38  No: 61442

度々、有難う御座いました。
解決、としてますが、解決してないんですよね。
ご覧になる方に..念のため。

既に愚痴モードなのでこれで止めます。
版権はユーザ持ちなので
逆アセンブルもトライしましたが当然?無理。(私の知識では)
ビルド時の中間ファイルはあるから、それみながら
何世代かあるプロジェクトのソースファイルを
ちまちま入替えて、リビルドしながら実機で検証
....て感じで。
ちなみに、VSSで管理されてます(泣)
(使ってるだけ、で管理されていないという意ですが)
きちんと運用出来なければ意味なしです。


通りすがり  2006-04-26 23:15:01  No: 61443

バイナリとPDBを一致させるのならシンボルサーバを構築すれば簡単に出来ますけど、
バイナリからそれに対応したソースを探すのはまず無理ですね…

>大規模開発でC++使っているのもどうなの?
別に珍しくも無いと思います。
なぜビルド環境が統一されてないのかが理解に苦しみますが…

>「バイナリあれどソース無し。」なんてのは日常茶飯ゴトだと
>思うのですがどうねんでしょうか。
いやそれはない…

私が所属しているプロジェクトでは、ビルド用マシンを用意して
・VSSにビルド日時のラベルを貼って
・ソースを取得してビルド、
・出来たバイナリはビルド日時を名前としてつけたフォルダに自動コピー
・シンボルファイル(リリース版でも作るよう設定)をシンボルサーバに登録
を行うバッチファイルを作成し一日二回朝夕に自動実行させています。
リリースする物件もこの自動ビルドされたものを利用するのでソースとバイナリの対応が不明になったりはしてません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加