2012-05-26 85 views
1

我剛開始使用Dotfuscator的,我已經從一開始,當我Ibuild Dotfuscator的項目說,撞了南牆右:Dotfuscator的壞RVA

Writing Assemblies... 

Bad RVA found: 46 
Build Error. 

我無法找到這個問題的任何提及任何地方在線

我的項目分爲幾個部分,一個核心庫項目和幾個依賴於庫項目的應用程序。我現在只是試圖混淆圖書館項目。對於輸入程序集,我只是將Dotfuscator指向bin/x86/Release文件夾中的Library.dll。

我在這裏做錯了什麼,或者我真的打了Dotfuscator中以前未知的錯誤?

編輯:我只注意到了「僅調查」選項,這是我剛跑了反對該項目,它似乎只是很好地工作:

Build Finished. 
Build Statistics Total Renamed Percent Renamed 
Types:    271  63   23.25 % 
Methods:    1609  672   41.77 % 
Fields:    1099  852   77.53 % 
Dotfuscator Community Edition cannot rename generic types or methods. 
+0

這是屬於程序員而不是SO? –

+0

我不這麼認爲,構建Dotfuscator等工具只是開發過程的另一部分。 Imo像「我應該使用哪種模糊處理工具」這樣的問題可能想要繼續使用程序員,但不是像這樣的問題。 – Martin

+1

我認爲這裏沒問題。這是關於編程產品的一個具體技術問題。 – Robaticus

回答

0

的RVA是程序集元數據的一個組成部分,並代表「相對虛擬地址」。它是存儲在程序集頭文件中的一個數字,指向程序集中的某個虛擬地址。在Dotfuscator中,每個RVA在被給定的子系統處理時(但並非所有子系統都處理RVAs)檢查其有效性,並且如果發現了RVA,則該檢查將失敗,如果

A)在程序集元數據中沒有找到節頭,或

B)RVA指向落在所有找到的節頭的最後一個虛擬地址之前的地址。

一般來說,這些事情都不應該發生。檢查是否存在可能會改變庫裝配的構建後行爲。您可能還想嘗試運行PEVerify以查看您的圖書館檢查是否正常。未能通過PEVerify並不意味着代碼將不會運行,但它可能會干擾混淆(或對程序集元數據的任何處理)。如果PEVerify通過,您就得到了我:)也許手動檢查元數據以查看上面的條件A或B是否被命中。