doskonałe posty psoula odpowiadają na twoje pytanie, więc nie powielę jego dobrej pracy, ale uważam, że pomogłoby to wyjaśnić, dlaczego jest to jednocześnie całkowicie prawidłowe, ale także strasznie głupie pytanie. W końcu jest to miejsce do nauki, prawda?
Nowoczesne programy komputerowe są tworzone przez szereg konwersji, zaczynając od wprowadzenia czytelnego dla człowieka zbioru instrukcji tekstowych (zwanego „kodem źródłowym”), a kończąc na czytelnym dla komputera zestawie instrukcji (nazywanym alternatywnie „binarnym” lub „maszyną” kod").
Sposób, w jaki komputer uruchamia zestaw instrukcji kodu maszynowego, jest ostatecznie bardzo prosty. Każda czynność, którą może podjąć procesor (np. Odczyt z pamięci, dodanie dwóch wartości) jest reprezentowana przez kod numeryczny. Gdybym ci powiedział, że cyfra 1 oznacza krzyk, a cyfra 2 oznacza chichot, a następnie podniósł karty z 1 lub 2 na nich, oczekując, że będziesz krzyczeć lub chichotać odpowiednio, korzystałbym z tego samego systemu, którego używa komputer operować.
Plik binarny jest tylko zbiorem tych kodów (zwykle nazywanych „kodami operacji”) i informacji („argumentów”), na które działają kody operacji.
Teraz język asemblera to język komputerowy, w którym każde słowo polecenia w tym języku reprezentuje dokładnie jeden kod operacji na procesorze. Istnieje bezpośrednie tłumaczenie 1: 1 między poleceniem asemblera a kodem operacyjnym procesora. Dlatego zestaw kodowania dla procesora x386 różni się od zestawu kodowania dla procesora ARM.
Demontaż jest po prostu następujący: program odczytuje plik binarny (kod maszynowy), zastępując kody operacyjne ich odpowiednikami w języku asemblera, i wyświetla wynik w postaci pliku tekstowego. Ważne jest, aby to zrozumieć; jeśli twój komputer potrafi odczytać plik binarny, to możesz również odczytać plik binarny, albo ręcznie, korzystając z tabeli kodów operacyjnych w ręku (ick), albo poprzez deasembler.
Dezasemblery mają kilka nowych sztuczek, ale ważne jest, aby zrozumieć, że deasembler jest ostatecznie mechanizmem wyszukiwania i zastępowania. Dlatego każda umowa EULA, która tego zabrania, ostatecznie wieje gorącym powietrzem. Nie można jednocześnie zezwolić komputerowi na odczyt danych programu, a także zabronić komputerowi odczytu danych programu.
(Nie zrozum mnie źle, próbowano to zrobić. Działają one równie dobrze jak DRM w plikach utworów.)
Istnieją jednak zastrzeżenia dotyczące metody demontażu. Nazwy zmiennych nie istnieją; coś takiego nie istnieje w twoim CPU. Wywołania biblioteczne są mylące jak diabli i często wymagają demontażu kolejnych plików binarnych. A montaż jest trudny do odczytania w najlepszych warunkach.
Większość profesjonalnych programistów nie umie siedzieć i czytać asemblera bez bólu głowy. Dla amatora po prostu tak się nie stanie.
W każdym razie jest to nieco przesadne wyjaśnienie, ale mam nadzieję, że to pomoże. Każdy może skorygować wszelkie zniekształcenia z mojej strony; minęło trochę czasu. ;)