2008-10-06 51 views
2

我們正在經歷一個大規模的遷移項目,並試圖驗證部署到現場的代碼與源代碼控制中的代碼相匹配。比較VB6.exes

顯然.net代碼很容易比較,因爲我們可以反彙編。由於彙編的方式,我不相信在vb6 exes中這是可能的。

有沒有人有任何關於如何驗證源代碼和編譯的可執行文件與Live中的文件相匹配的想法。

謝謝

+0

聽起來像你需要更好的源代碼管理和/或策略。 – GEOCHET 2008-10-06 15:21:31

回答

3

Visual Basic有兩種編譯方式,一種是解釋器(稱爲P代碼),會導致較小的二進制文件,另一種是生成「常規」窗口.exe文件(稱爲本機)被引入是因爲它應該比p代碼更快;儘管編譯的文件大小隨着此選項而增加。 如果您的彙編使用的是p代碼,理論上可以恢復源代碼。

無論哪種方式,是相當困難的事,但也有聲稱他們可以部分地做到這一點,我知道的工具(從未嘗試過,但有一個試用版本)VB-反編譯 http://www.vb-decompiler.org/

+0

偉大的工具。這永遠不會是一個完美的科學。我們正在做的是使用exe反編譯並保存項目文件。然後我們使用Beyond Compare工具進行比較。 不完美,但它是一個開始。 謝謝 – 2008-10-07 11:00:29

0

不幸的是,這幾乎是不可能的。請記住,在不同機器上編譯的VB6代碼將具有不同的exe大小和部署要求。

這就是爲什麼舊VB'ers有專用機器來編譯他們的代碼。

0

這對已經部署的項目沒有任何幫助,但是如果您在每次編譯時都提高版本號(有一個項目設置會自動爲您完成),那麼您可以輕鬆比較版本號。

0

我的舊公司購買了VB-Decompiler的一個副本,並且在VB5/6生成P-Code extra之前注意到,該工具確實生成了一些代碼,如果不是可以「讀取」的彙編代碼。

0

如果您有編譯的所有代碼,則可以將該代碼的CRC與現場部署的代碼進行比較。但是,如果您沒有原始編譯代碼,則取決於您編譯代碼的方式(如果您使用P代碼而不是Native Code,則可能能夠反彙編,但反彙編看起來不像源代碼)。我懷疑你會將PDB的exe文件發給你,但是如果你這樣做的話,你當然可以使用這些文件來與存儲庫中的源代碼進行比較。

0

有一臺值得信賴的計算機,它可以檢查出您製作的各種庫和exe,並自動編譯它們。保持在只讀但可訪問的位置。然後在部署的網站和比較網站之間進行二進制比較。

但我不確定拆解complied單位的邏輯。我的公司和我知道的大多數其他地方都使用了構建計算機和單元測試的組合。在我們公司,我們製作的EXE是一堆超過一定庫的超薄外殼。例如,一個按鈕點擊將被傳遞給一個UI Active X DLL,它執行實際的處理。我們在構建完成後執行的是執行我們的單元測試列表的特殊EXE。如果他們全都通過了,我們知道我們的代碼庫90%都是好的。至於實際的EXE,我們有一個手工程序需要大約兩個小時才能完成,然後我們很好。對於在EXE中發生的任何錯誤,IIt很少見。