我已經丟失了源代碼到一個dotnet 3.5 dll,其中包含我所有的字符串(html文檔)和圖像。我現在需要更新其中一個文件和一些圖像。對我來說,更新文件中字符串的最佳方式是什麼(它們會有不同的長度,這很重要嗎?)dotnet資源的dll,替換一個字符串(丟失的源代碼)
0
A
回答
1
直接編輯已編譯的程序集很粗略。我會用decompiler將它反編譯回源代碼並修復它。把它放回到源代碼管理中。
0
所以,事實證明,它更容易
編輯DLL用十六進制編輯
比它要重新開始這是通常的建議。
1
步驟#1:拆卸組件。
使用下面的命令來拆卸您的.NET EXE或DLL:
ildasm /out=assembly_name.il assembly_name.dll
(更換您的DLL或EXE名稱assembly_name.dll)。
這將輸出大量的數據文件。我們對這些感興趣:
- * .resources - 二進制資源文件。
- assembly_name.res - 資源清單。
- assembly_name.il - 實際的MSIL代碼。
步驟#2:編輯資源文件。
準備修改後的/新的資源,它的名字並不重要,但格式應該與最初包含在程序集中的格式相同(例如替換位圖的位圖,圖標的圖標)。
使用資源編輯器編輯資源文件。我使用Lutz Roeder的Resourcer for DotNet(http://www.aisto.com/roeder/dotnet/),它是免費軟件。順便說一下,同一個作者也寫了Reflector.NET,這是一個非常棒的.NET開發工具。
如果您使用的Resourcer,這裏是所需的步驟:
- 打開.resources文件要修改並重新命名原始資源項目。
- 按Ctrl-F插入文件並從您的文件系統中選擇修改後的版本。
- 將新項目重命名爲與上一個項目具有相同的原始名稱(您不能複製/粘貼該項目,出於某種原因,它只是複製整個項目而不是僅包含文本)。
步驟#3:重新裝配組件。
使用下面的命令來拆卸您的.NET EXE或DLL:
重要:這會覆蓋原來的DLL/EXE!
ilasm /resource=assembly_name.res /dll /output=assembly_name.dll /key=signing_key.snk assembly_name.il
(將assembly_name.dll替換爲您的dll或exe名稱,當然如果需要的話將/ dll更改爲/ exe)。
簽名密鑰參數是可選的,如果原裝配簽署時,才需要。
當然,如果它是由別人來防止回火簽字,你將不能夠除非您提供原始簽名密鑰,我以爲你不會有使用修改後的裝配。但這就是.NET的工作原理。
相關問題
- 1. 轉換c源代碼到一個dll
- 2. 字符串資源
- 3. 編碼問題。一個密封的資源丟失或無效
- 4. flexigrid的資源字符串
- 5. 魔法代碼? - .aspx字段丟失並從源代碼消失
- 6. 項目中的資源組替換爲資源目錄,編碼失敗構建
- 7. 在託管代碼中使用非託管dll中的資源字符串表
- 8. 丟失的OS X Java源代碼
- 9. 字符串資源路徑轉換器
- 10. 類似字符串的源代碼
- 11. Visual Studio - 使用資源替代硬編碼字符串的工具
- 12. 如何從源字符串中替換一些字符串,不應該更改源字符串的大小寫
- 13. 從代碼訪問Android的字符串資源
- 14. 本地資源文件中代碼中字符串的翻譯
- 15. 如何獲取WP7中c#代碼中的資源字符串?
- 16. 丟失的資源經由的Xaml
- 17. C源代碼DLL
- 18. 如何用Android Gradle替換字符串資源
- 19. 如何從WPF中的其他字符串資源構建字符串資源?
- 20. android資源字符串%
- 21. 資源字符串位置
- 22. ResourceNotFoundException - 字符串資源ID
- 23. qt「資源」字符串
- 24. 添加字符串資源
- 25. 訪問字符串資源
- 26. 所有字符串資源
- 27. 保護DLL的源代碼
- 28. 替換HTML源代碼中的特殊字符
- 29. MySQL源代碼丟失配置文件
- 30. Android培訓 - 源代碼丟失?
你能定義「粗略」嗎? – frumbert
[手繪](http://www.urbandictionary.com/define.php?term=sketchy)基本上意味着你要麼不應該這樣做,或者實在是太難以得到的合理時間內正確完成。我的觀點是:不要嘗試編輯二進制程序集;將它們反編譯爲源代碼,然後才能正常使用。通常十歲上下。 – bluevector
我評估是否將是更容易從DOTNET的黎明採取這種古老的DLL,只是編輯需要改變,並再次將其保存在一個小東西 - 或者經過不必再次生成它的過程從頭開始(這是我看過的大多數反編譯器都要求我做 - 他們向我展示代碼,但我必須手動再次創建它)。哪個花錢。 – frumbert