Как открыть файлы .dll, чтобы посмотреть, что внутри написано?


96

Я потерял решение класса-библиотеки, могу ли я открыть .dllфайл, созданный с помощью class-library.


10
Отражатель ...
Митч Уит

23
DotPeek .........
транжира

7
Также: попробуйте использовать Контроль исходного кода ....
Митч Уит

1
возможный дубликат DLL
Дэниел Пауэлл,

Ответы:


114

вам лучше использовать декомпилятор, такой как рефлектор redgates .net или декомпилятор jetbrains resharper. есть также открытые исходники

http://www.jetbrains.com/decompiler/

http://ilspy.net/


Jetbrains.com/decompiler работал у меня. +1 за это. Спасибо за предложение!
Викрам

ilspy ++++++++++++++++++++
Имад

ildpy +1. Хороший.
sonsha

ILSpy. Что ты шпионишь?
gonzobrains

34

Следуйте инструкциям ниже ..

  1. Перейдите в меню "Пуск".
  2. Введите инструмент Visual Studio.
  3. Перейдите в папку выше.
  4. Щелкните «Командная строка разработчика для VS 2013» в случае VS 2013 или просто «Командная строка Visual Studio» в случае VS 2010.
  5. После загрузки командной строки на экран ILDASM.EXEнажмите клавишу ВВОД.
  6. ILDASMВ открывшемся окне перетащите .dllфайл в окно из своей папки или нажмите. File->NewЗатем Добавить нужный .dll файл.
  7. После вышеуказанных шагов появятся Mainfest и .dllфайл. Дважды щелкните эти файлы, чтобы увидеть, что они содержат.

Я выполнил ваши четкие инструкции, используя VS 2012 и 2015 / Windows 7 Pro. Тем не менее, ILDASM опубликовал следующее сообщение для файла .dll я попытался исследовать: has no valid CLR header and cannot be disassembled.
CODE-REaD

2
Этот процесс используется для дизассемблированного промежуточного языка, созданного CLR.
mmushtaq

7

Я думаю, вы скачали .NET Reflector и этот плагин FileGenerator http://filegenreflector.codeplex.com/ , если вы это сделаете,

  1. Откройте Reflector.exe,

  2. Перейдите в Просмотр и нажмите Надстройки,

  3. В окне надстройки нажмите Добавить ...,

  4. Затем найдите загруженную dll

  5. FileGenerator.dll (ведьма пришла с плагином FileGenerator),

  6. Затем закройте окно надстроек.

  7. Перейдите в File и нажмите Open и выберите dll, который вы хотите декомпилировать,

  8. После того, как вы его откроете, он появится в виде дерева,

  9. Перейдите в Инструменты и нажмите Создать файлы (Crtl + Shift + G),

  10. выберите выходной каталог и выберите соответствующие настройки по вашему желанию, нажмите «Создать файлы».

ИЛИ

используйте http://ilspy.net/


какой конкретно посоветуете? ILspy или Reflector? плюсы и минусы
T.Todua 04

3

Вы не можете получить точный код, но можете получить его декомпилированную версию.

Самым популярным (и лучшим) инструментом является Reflector , но существуют и другие декомпиляторы .Net (например, Dis # ).

Вы также можете декомпилировать IL с помощью ILDASM , который поставляется вместе с инструментами SDK .Net Framework.


1

Откройте .dllфайл в Visual Studio. Или редактор ресурсов.


2
Когда я попытался открыть файл .dll с помощью Visual Studio Express 2013 / Windows 7 Pro, он выдал следующее сообщение:There is no editor available for (file I tried to open). Make sure the application for the file type (.dll) is installed.
CODE-REaD



-11

Файлы * .dll - это архивные файлы, открытые с помощью winzip / 7zip и т. д. Это не означает, что все файлы .dll являются архивами, вы можете сохранить что угодно с расширением .dll, однако большинство файлов .dll для Windows создаются в качестве архивов, примерами этого являются окна > twain_32.dll, который является архивным файлом, а twain.dll - нет, если вы посмотрите на twain.dll, вы увидите MZŽ как первые три символа блокнота, которые обозначают скомпилированный файл / программу C или часть программы. А MZ вроде как архив.

Также большинство файлов .exe представляют собой архивы, в основном содержащие изображение значка и т. Д. Для файла и пакетов установщика Windows, а также они содержат всю информацию, необходимую программе для запуска изображений, фильмов и т. Д., А также каталоги, включая информацию об установке и простой текстовый файл.

У меня есть игра game.exe, и она содержит файлы классов java, изображение указателя, направляющее .exe для запуска файла .bat. Очевидно, что ваш .bat-файл будет запускать javac-вызов из архива и запускать игру. Также есть несколько .dll-архивов, содержащих файлы классов java.

[autorun]
ICON=AUTORUN\MINCRAFTLOGO.ICO

стандартное перенаправление значков здесь .ico - это файл изображения в файле .dll в файле .exe. Таким образом, изображение в .exe-файле является логотипом minecraft. Он находится в файле autorun.inf. Второй пример

[discstarter]
    startpage=Autostart\Disk1.html
    uselanguagestartpage=1
    windowcaption=Solid Edge
    licensee=Siemens PLM Software
    productguid=05B227DF-DB00-4934-B3C8-40B7D8FAA54A
    singleinstance=1
    hidesplashscreen=1
    noscrollbars=0
    showstatusbar=1
    splashscreentime=0
    windowwidth=750
    windowheight=775
    buttondir=Autostart
    toolbarcolor=16777215
    toolbar=goback,goforward,gohome,print,exit
    [autorun]
    open=autostart.exe
    icon=Autostart\ENGINE.ICO

Это сплошной файл autorun.inf, содержащийся в solidedge.exe Autostart \ - это каталог Autostart.dll. open = autostart.exe указывает файл autostart.exe для запуска из исходного архива solidedge.exe. Вот пример программы, использующей файлы .dll (библиотека динамической компоновки) http://www.flipcode.com/archives/Creating_And_Using_DLLs.shtml .

Здесь также показано, как они создаются. Как вы можете видеть, содержимое файла dll вызывается exe-файлом, как я ранее объяснял, также здесь есть учебное пособие http://msdn.microsoft.com/en-us/library/ms235636.aspx и, как я уже сказал ранее 7zip или winzip откроют библиотеку динамической компоновки в виде архива, если у вас есть файл .dll. Если содержимое библиотеки динамической компоновки было скомпилировано, очевидно, вам нужна программа, которая может читать файл.

Однако, поскольку файлы .dll по определению являются просто файлами архивной библиотеки, сама dll должна быть читаемой, а не скомпилированным файлом C, C # и т. Д. В основном .dll файлы являются архивами, и это должно быть, когда файл .dll создается в Visual Studio, dll - это создается, и любая информация, которую вы храните в файле DLL, зашифрована. В основном это шифрование обрабатывается самой Visual Studio и обычно не редактируется вручную. Когда вы читаете содержимое файла .dll как .exe, содержимое автоматически расшифровывается. Теперь, когда мы говорим о компиляции программы, мы меняем ее содержимое в байт-код, который машина легко интерпретирует.

Этот размер файла будет меньше исходного файла с таким же содержимым. Однако размер файла больше, что говорит о том, что файл действительно был зашифрован. Возможно, чтобы люди не читали свой код. В результате чтение содержимого .dll называется расшифровкой, а не декомпиляцией. Декомпиляция преобразует уже скомпилированные файлы txt в нечитаемый байтовый код. Использование стандартных файлов .dll по определению не является открытым исходным кодом, потому что оно предполагает преднамеренное запутывание байтового кода.


8
Я не уверен, будет ли это считаться отступничеством или ересью в компьютерных кругах. Как это можно было улучшить? Если бы это было на бумаге, я мог бы использовать спичку, чтобы избавиться от страданий.
brewmanz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.