Plik .exe jest plikiem, który może być uruchamiany przez system Windows, ale co dokładnie zawiera? Język złożenia, który jest specyficzny dla procesora? Lub jakieś pośrednie oświadczenie, które jest rozpoznawane przez okna, które zamienia je w zestaw dla konkretnego procesora? Co dokładnie robi system Windows z plikiem, gdy "wykonuje" go?co zawiera plik .exe?
Odpowiedz
MSDN ma artykuł "An In-Depth Look into the Win32 Portable Executable File Format", który opisuje strukturę pliku wykonywalnego.
Zasadniczo .exe zawiera kilka plam danych i instrukcje, w jaki sposób powinny być ładowane do pamięci Niektóre z tych sekcji zawierają kod maszynowy, który można wykonać (inne sekcje zawierają dane programu, zasoby, informacje o relokacji, informacje o importowaniu itd.).
Proponuję uzyskać kopię Windows Internals, aby uzyskać pełny opis tego, co się dzieje po uruchomieniu exe.
Dla natywnego pliku wykonywalnego kod maszyny jest zależny od platformy. Nagłówek .exe wskazuje, z jakiej platformy pochodzi .exe.
Podczas pracy rodem EXE z poniższych sytuacji rażąco (-i):
- Obiekt proces tworzenia.
- Plik exe jest wczytany do pamięci tego procesu. Różne sekcje pliku .exe (kod, dane itp.) Są odwzorowywane osobno i mają różne uprawnienia (kod jest wykonywany, dane to odczyt/zapis, stałe są tylko do odczytu).
- Przeniesienia występują w rozszerzeniu .exe (adresy są załatane, jeśli plik .exe nie został załadowany na preferowanym przez siebie adresie).
- Tabela importowania jest chodzona i zależne biblioteki DLL są ładowane.
- Pliki DLL są odwzorowywane w podobny sposób do plików .exe, przy zachowaniu delokalizacji i załadowaniu zależnych bibliotek DLL. Zaimportowane funkcje z bibliotek DLL są rozwiązywane.
- Proces rozpoczyna wykonywanie przy początkowym stub w pliku NTDLL.
- Początkowy program ładujący uruchamia punkty wejściowe dla każdej biblioteki DLL, a następnie przeskakuje do punktu wejścia pliku .exe.
Zarządzane pliki wykonywalne zawierają MSIL (Microsoft Intermediate Language) i mogą być kompilowane, aby mogły być ukierunkowane na dowolny procesor obsługiwany przez CLR. Nie jestem zaznajomiony z wewnętrznym działaniem programu ładującego CLR (jakiego kodu źródłowego początkowo uruchamia pasek startowy CLR i zacząć interpretować MSIL) - być może ktoś inny może to rozwinąć.
1 i 0!
This wikipedia link poda wszystkie potrzebne informacje w formacie Portable Executable używanym w aplikacjach Windows.
Chciałem zająć ci fałszywą odpowiedź, dopóki nie zobaczyłem, że "To" było w rzeczywistości linkiem, a nie odniesieniem do "1's and 0's". Mam nadzieję, że nie przeszkadza mi, jeśli zmienię go tak, aby był nieco jaśniejszy. – paxdiablo
W moim dniu nie mieliśmy 1s, które musieliśmy zrobić z 0s –
Mogę powiedzieć, co zawierają dwa pierwsze bajty w plikach .exe - "MZ". Mam na myśli postacie "MZ".
Faktycznie przedstawia: Marka Żbińskiego. Facet, który zaprojektował format pliku exe.
Śliczni i intrygujący (zdecydowanie będę podążał za tym łączem), ale nie niezwykle istotne dla danego pytania. – Twisol
Tak, mimo interesującego fragmentu, wyjaśnia on tylko dwa pierwsze bajty pliku PE. To niewiele, procentowo. – paxdiablo
Po prostu z ciekawości: czy zaprojektował go dla Microsoftu? – MasterMastic
plik EXE jest naprawdę typ pliku zwanym Portable wykonywalny. Zawiera dane binarne, które mogą być odczytane przez procesor i wykonane (zasadniczo instrukcje x86.) Istnieje również lot danych nagłówka i innych różnych treści. Rzeczywisty kod wykonywalny znajduje się w sekcji o nazwie .text
i jest przechowywany jako instrukcje maszynowe (zależne od procesora). Ten kod (jak również inne części .EXE) są umieszczane w pamięci, a procesor jest wysyłany do niego, gdzie rozpoczyna wykonywanie. (Zauważ, że faktycznie dzieje się o wiele więcej interfejsów, to jest uproszczone wyjaśnienie).
- 1. Co robi plik collect2.exe?
- 2. Jak otworzyć plik .exe z innego pliku C++ .exe?
- 3. Client.ipa nie zawiera plik
- 4. C++ Osadź zewnętrzny plik .exe w moim skompilowanym pliku .exe
- 5. co zawiera ostrzeżenie rpmbuild "Plik wymieniony dwukrotnie" FAKULTATYCZNIE?
- 6. Uruchom plik EXE z innego katalogu?
- 7. Co zawiera MEF 2?
- 8. Co zawiera ramka audio?
- 9. Uruchom plik exe z kodu C#
- 10. Zbuduj plik .exe w .NET Core RC2
- 11. Osadź plik w pliku EXE w VB6
- 12. Jak utworzyć plik exe aplikacji konsolowej?
- 13. F # Typ Dostawca skompilowany jako plik * .exe
- 14. Skompiluj skrypt R w samodzielny plik .exe?
- 15. Pobierz plik URL zawiera „e”
- 16. Co oznacza plik .ipa?
- 17. Co nie zawiera folder .git?
- 18. Co zawiera obiekt proxy Hibernuj?
- 19. Jak wiemy, czy macierz FileInfo [] zawiera plik
- 20. Czy można dezasemblować plik exe programu Visual FoxPro 9.0?
- 21. Zbuduj aplikację .NET Core Console, aby wyprowadzić plik EXE?
- 22. Jak wykonać plik exe z agenta lub zadania sql?
- 23. Osadzanie wspieranegoRunime w pliku exe
- 24. Dlaczego pusty plik tekstowy zawiera 3 bajty?
- 25. Uwarunkowanie warunkowe XSLT zawiera zewnętrzny plik
- 26. Zdekompilowany plik .winmd zawiera tylko wywołania zewnętrzne
- 27. Freebase: Jaki plik zrzutu danych zawiera "imdb_id"?
- 28. Sprawdzanie, czy plik (txt) zawiera ciąg/zmienną
- 29. Uruchamianie .exe z JavaScript
- 30. Wbudowany * .exe do dll
Cholera, pokonaj mnie! :) –