用Reflector和FileDisassembler配合反編譯.net Windows程式 轉

來源:互聯網
上載者:User
用Reflector和FileDisassembler配合反編譯.net Windows程式 收藏

URL: http://www.cnblogs.com/verygis/archive/2008/12/02/1346072.html

 

用FileDisassembler反編譯Windows Application出現了問題,resx資源檔和cs檔案不匹配,項目編譯根本通不過,把resx檔案修改放入cs檔案夾後,雖然運行沒有

問題,但是不能直接在表單設計裡面"可視地"修改控制項,一來麻煩,二來不直觀,那麼就應該修改下原始碼,使其符合VS2008的源檔案布局.

下面總結一下修改的步驟:

1.由於FileDisassembler會給每個命名空間產生一個目錄,儲存這個空間的原始碼,而對於資源resx檔案就是直接加在項目目錄下,所有要把它放回源碼目錄下.例如

對於專案檔夾裡面的TryAssemb.Form1.resx,首先改為Form1.resx然後移動到TryAssemb目錄裡面.

2.然後對表單開啟"視圖設計器",發現會出現下面的錯誤:

修改方法就是對所有System.Windows.Forms.命名空間裡面的控制項需要全命名空間的 聲明,例如裡面的base.AutoScaleMode = AutoScaleMode.Font;就要改成base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;而TextBox textBox1; 也要改成private System.Windows.Forms.TextBox textBox1;這樣VS2008就能識別到這個控制項是要繪製在Form上面的.
 

PS.開始是的時候還以為要像VS一樣把Form1拆開成Form1.cs和Form1.Designer.cs.每次是都辛辛苦苦拆開,最後才發現原來根本不需要,^_^.

 

 

 

相信大多數.Net程式員都有使用Reflactor的經曆。無論出於什麼目的,當用Reflactor反編譯託管程式後,還想對其代碼加以修改,那麼本文所列舉的可能是一份有用的參考。

 

用Reflactor的FileGenerator外掛程式反編譯代碼後可以得到包括專案檔的原始碼,但代碼中存在各種問題,一般無法一次編譯通過,以下將詳談這些問題:

枚舉問題

 

為了代碼可讀,可能需要花點時間查閱metadata把int值修改回枚舉值,尤其是想利用表單設計器的,VS2008可能還不理解int值。

屬性問題

 

比如一個叫Names的屬性被反編譯後,可能還原為的set_Names(names),get_Names()方法,逐個替換可能很慢,可採用Regex整體替換。
對於set_Xxx(xxx)方法,可替換
set_{[a-z]*}\(

\1 = (
對於get_Xxx()方法,可替換
get_{[a-z]*}\(\)

\1
然後,再修複個別被誤換的方法。

委託和回呼函數問題

 

一般會被還原為add_Xxx(MethodsName)方法,需要改為 += MethodsName

資源問題

 

需要使用.Net Framework SDK 下的 resgen.exe 工具,反編譯嵌入資源檔*.resources為*.resx檔案,
文法為:ResGen.exe *.resources *.resx,然後將*.resx包含入項目,就會自動和同名的表單檔案*.cs關聯,如果沒有關聯可採用先排除再添加大法,一一搞定。

命名空間問題

 

如果需要切換到IDE的表單設計器,而不出錯,則還需要在*.cs中添加比如System.Windows.Forms的命名空間首碼。

表單設計器識別問題

 

需要把以下代碼
ComponentResourceManager manager = new ComponentResourceManager(typeof(ClassName));
替換為
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClassName));
表單設計器才能正常識別。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.