Jak otworzyć pliki .dll, aby zobaczyć, co jest w środku?

94

Zgubiłem rozwiązanie klasy-biblioteki, czy mogę otworzyć .dllplik utworzony przez class-library.

HaDe
źródło
10
Reflektor ......
Mitch Wheat
23
DotPeek .........
spender
7
Również: spróbuj użyć kontroli kodu źródłowego ...
Mitch Wheat,
1
możliwy duplikat otwierających i szpiegujących bibliotek DLL
Daniel Powell,

Odpowiedzi:

34

Wykonaj poniższe czynności.

  1. Przejdź do menu Start.
  2. Wpisz narzędzie Visual Studio.
  3. Przejdź do folderu powyżej.
  4. Kliknij „Wiersz polecenia dewelopera dla VS 2013” ​​w przypadku VS 2013 lub po prostu „Wiersz polecenia programu Visual Studio” w przypadku VS 2010.
  5. Po załadowaniu wiersza polecenia do typu ekranu ILDASM.EXEnaciśnij klawisz ENTER.
  6. ILDASMotworzy się okno. Przeciągnij .dllplik do okna z folderu lub kliknij., a następnie File->NewDodaj wymagany .dll plik.
  7. Po wykonaniu powyższych czynności pojawi się Mainfest i .dllplik. Kliknij dwukrotnie te pliki, aby zobaczyć, co zawiera.
Abhi
źródło
Postępowałem zgodnie z twoimi jasnymi instrukcjami, używając VS 2012 i 2015 / Windows 7 Pro. Jednak ILDASM wydała następujący komunikat dla pliku .dll próbowałem zbadać: has no valid CLR header and cannot be disassembled.
CODE-REaD
2
Ten proces służy do dezasemblacji języka pośredniego generowanego przez środowisko CLR.
mmushtaq
7

Myślę, że pobrałeś .NET Reflector i tę wtyczkę FileGenerator http://filegenreflector.codeplex.com/. Jeśli tak,

  1. Otwórz Reflector.exe,

  2. Przejdź do widoku i kliknij Dodatki,

  3. W oknie Dodatki kliknij Dodaj ...,

  4. Następnie znajdź pobrany plik dll

  5. FileGenerator.dll (który pojawił się z wtyczką FileGenerator),

  6. Następnie zamknij okno dodatków.

  7. Przejdź do Plik i kliknij Otwórz i wybierz plik dll, który chcesz zdekompilować,

  8. Po otwarciu pojawi się w widoku drzewa,

  9. Przejdź do Narzędzia i kliknij Generuj pliki (Crtl + Shift + G),

  10. wybierz katalog wyjściowy i wybierz odpowiednie ustawienia według własnego uznania, kliknij generuj pliki.

LUB

użyj http://ilspy.net/

wracać
źródło
konkretnie który radzisz? ILspy czy Reflector? plusy i minusy
T.Todua
3

Nie możesz uzyskać dokładnego kodu, ale możesz uzyskać jego zdekompilowaną wersję.

Najpopularniejszym (i najlepszym) narzędziem jest Reflector , ale są też inne dekompilatory .Net (takie jak Dis # ).

Możesz również zdekompilować IL przy użyciu ILDASM , który jest dostarczany w pakiecie z .Net Framework SDK Tools.

Rohit
źródło
1

Otwórz .dllplik w programie Visual Studio. Lub redaktor zasobów.

vusan
źródło
2
Kiedy próbowałem otworzyć plik .dll przy użyciu Visual Studio Express 2013 / Windows 7 Pro, wydał następujący komunikat:There is no editor available for (file I tried to open). Make sure the application for the file type (.dll) is installed.
CODE-REaD
1

Telerik's Just Decompile jest najlepszym, z jakiego korzystałem. To nic nie kosztuje, jeśli zarejestrujesz się przez e-mail.

wprowadź opis linku tutaj

Eric
źródło
1

Używam oprogramowania Jetbrains Dot peek, ty też możesz spróbować

user13570405
źródło
-11

Pliki * .dll są plikami archiwalnymi otwieranymi za pomocą winzip / 7zip itp. To nie znaczy, że wszystkie pliki .dll są archiwami. Możesz zapisać wszystko z rozszerzeniem .dll, jednak większość plików .dll systemu Windows jest generowanych jako archiwa. Przykładami tego są okna > twain_32.dll, który jest plikiem archiwum, jednak twain.dll nie jest, jeśli spojrzysz na twain.dll, zobaczysz MZŽ jako pierwsze trzy znaki notatnika, które oznaczają skompilowany plik / program C lub część programu. Natomiast MZ wydaje się archiwum.

Również większość plików .exe to archiwa zawierające głównie obraz ikony itp. Dla pliku oraz pakiety instalatora systemu Windows, a także zawierają wszystkie informacje potrzebne programowi do uruchamiania obrazów, filmów itp., A także katalogi, w tym informacje o instalacji i zwykły plik tekstowy.

Mam tutaj grę game.exe i zawiera ona pliki klas java obraz wskaźnik wskazujący plik .exe do uruchomienia pliku .bat. Oczywiście twój plik .bat uruchomi wywołanie javac z archiwum i uruchomi grę. Jest też kilka archiwów .dll zawierających również pliki klas java.

[autorun]
ICON=AUTORUN\MINCRAFTLOGO.ICO

Standardowe przekierowanie ikony tutaj .ico to plik obrazu w pliku .dll w pliku .exe. Tak więc obraz widoczny w pliku .exe to logo Minecrafta. Znajduje się w pliku o nazwie autorun.inf. Drugi przykład

[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

To jest plik autorun.inf solid edge zawarty w solidedge.exe Autostart \ to katalog Autostart.dll. open = autostart.exe określa plik autostart.exe do uruchomienia z oryginalnego archiwum solidedge.exe. Oto przykładowy program korzystający z plików .dll (biblioteka dołączana dynamicznie) http://www.flipcode.com/archives/Creating_And_Using_DLLs.shtml .

Pokazuje również, jak powstają. Jak widać, zawartość pliku dll jest wywoływana przez plik exe, jak wcześniej wyjaśniłem, również znajduje się tutaj samouczek http://msdn.microsoft.com/en-us/library/ms235636.aspx i jak powiedziałem wcześniej 7zip lub winzip otworzy bibliotekę dołączaną dynamicznie jako archiwum, o ile masz plik .dll. Jeśli zawartość biblioteki dołączanej dynamicznie została skompilowana, oczywiście potrzebujesz programu, który może odczytać plik.

Jednak ponieważ pliki .dll są z definicji tylko plikami bibliotek archiwalnych, sam plik dll powinien być czytelny, a nie skompilowany plik C, C # itp. utworzone, a wszelkie informacje przechowywane w pliku dll są szyfrowane. Przeważnie to szyfrowanie jest obsługiwane przez samo studio wizualne i zazwyczaj nie jest edytowane ręcznie. Podczas odczytywania zawartości pliku .dll jako .exe zawartość jest automatycznie odszyfrowywana. Teraz, kiedy mówimy o kompilowaniu programu, zmieniamy zawartość na kod bajtowy, który maszyna łatwo zinterpretuje.

Ten rozmiar pliku byłby mniejszy niż oryginalny plik o tej samej zawartości. Jednak rozmiar pliku jest większy, co sugeruje, że plik został faktycznie zaszyfrowany. Prawdopodobnie po to, aby uniemożliwić ludziom czytanie ich kodu. W rezultacie odczyt zawartości .dll jest określany jako deszyfrowanie, a nie dekompilacja. Dekompilacja konwertuje już skompilowane pliki txt na nieczytelny kod bajtowy. Użycie standardowych plików .dll z definicji nie jest oparte na otwartym kodzie źródłowym, ponieważ wiąże się z celowym zaciemnianiem kodu bajtowego.

David
źródło
8
Nie jestem pewien, czy w kręgach komputerowych liczyłoby się to jako apostazja czy herezja. Jak można to poprawić? Gdyby to było na papierze, mógłbym użyć zapałki, aby wyrwać go z nędzy.
brewmanz