Как извлечь исходный код классов из файла DLL?
-
11-10-2019 - |
Вопрос
Есть ли какое -нибудь программное обеспечение для этого? Я не нашел никакой полезной информации в Интернете, поэтому спрашиваю здесь.
Решение
Вы не можете получить точный код, но вы можете получить декомпилированную версию.
Самый популярный (и лучший) инструмент Отражатель, но есть и другие декомпиляторы .NET (например, Dis#) Вы также можете декомпилировать IL, используя Ильд, который поставляется в комплекте с инструментами .NET Framework SDK.
Другие советы
Только управляемые языки, такие как c#
а также Java
может быть полностью разбито. Вы можете просмотреть полный исходный код. За Win32 dll
Вы не можете получить исходный код.
Для CSHARP DLLИспользовать Dotpeek потому что это бесплатно и работает так же, как и Redgate .net Compiler
Веселиться.
Использовать .NET Offeructor.
Вы можете использовать Отражатель а также используйте Добавить в FileGenerator Чтобы извлечь исходный код в проект.
Используйте рефрактор. Скачать из здесь.
- Откройте программное обеспечение после установки.
- Нажмите Ctrl + O и выберите свой файл DLL.
- DLL будет показан на левой панели.
- Щелкните правой кнопкой мыши на DLL и выберите исходный код экспорта.
- Выберите папку, в которой вы хотите экспортировать свои файлы
- Подождите некоторое время, это может занять 2-3 минуты
Если вы хотите узнать только некоторые основы внутри сборки DLL, например, классы, метод и т. Д., Чтобы загрузить их дьянамически
Вы можете использовать инструмент Disassembler IL, предоставленный Microsoft.
Обычно расположено по адресу: «C: Program Files (x86) Microsoft SDKS Windows v7.0a bin"
я использовал Рефрактор Чтобы восстановить мой скрипт/код из файла DLL.
Вы можете использовать DotpeekЕдинственное, что я должен сказать, это то, что при его использовании щелкните правой кнопкой мыши на классе, чтобы выбрать декомпилированный источник, а не дважды щелкнуть, в противном случае Dotpeek будет отображать только содержимое локального файла CS, а не декомпилированный контент.Вариант экземпляра
var destinationfilename = "";
if (System.IO.File.Exists("nameoffile.dll"))
{
destinationfilename = (@helperRoot + System.IO.Path.GetFileName(medRuleBook.Schemapath)).ToLower();
if (System.IO.File.Exists(destinationfilename)) System.IO.File.Delete(destinationfilename);
System.IO.File.Copy(@'nameoffile.dll", @destinationfilename);
}
// use dll-> XSD
var returnVal =
await DoProcess(
@helperRoot + "xsd.exe", "\"" + @destinationfilename + "\"");
destinationfilename = destinationfilename.Replace(".dll", ".xsd");
if (System.IO.File.Exists(@destinationfilename))
{
// now use XSD
returnVal =
await DoProcess(
@helperRoot + "xsd.exe", "/c /namespace:RuleBook /language:CS " + "\"" + @destinationfilename + "\"");
if (System.IO.File.Exists(@destinationfilename.Replace(".xsd", ".cs")))
{
var getXSD = System.IO.File.ReadAllText(@destinationfilename.Replace(".xsd", ".cs"));
}
}