2016-07-22 79 views
0

我有一個用C#編寫的DLL,我沒有源代碼。我已經嘗試了不同的C#反編譯器來修改DLL,但是他們都給我提供了錯誤,我嘗試重新編譯這些修改,我想由於IL反編譯的限制。是否可以將一個.cs文件添加到DLL的根目錄或者注入一個方法來添加功能? PS:這不是爲了破解軟件,而是爲了創建一個需要修改DLL的遊戲的模組。注入DLL中的C#文件

+0

你試過編譯沒有修改?如果可行,錯誤可能在於你的添加。你有沒有檢查所有的參考? – derpirscher

+0

沒有修改編譯也給我錯誤。這些參考文獻太多,不知道錯誤是否來自它們。 – cgcmake

+0

爲了能夠編譯,您必須設置一個有效的構建配置,其中還包括設置正確的引用。如果你不這樣做,你將無法編譯。你得到什麼錯誤? – derpirscher

回答

0

.NET Reflector的Reflexil插件可能會在DLL中注入方法或類,如其創建者在video中所示。 它防止反彙編 - 編譯錯誤,因爲它只是在程序集中注入IL代碼。

要安裝此插件,請按照these steps

2

你最好的方法可能是圍繞dll創建一個包裝項目來添加你想要的功能。你的代碼可以讓他們參考項目而不是DLL。只要這些類不被密封,你應該能夠繼承它們。

修改您無法訪問的代碼可能不是一個好主意。特別是如果將來可能會更新dll。

1

您還可以使用相同的名稱空間創建一個新的DLL。這可能會讓事情看起來好像它們在同一個位置,但這不是最佳實踐,並且可能會令人困惑,因爲命名空間需要與項目/ dll名稱匹配。

本傑明的包裝解決方案似乎是合理的。