Deasembler bajtkodu EVM
Wklej bajtkod EVM i zobacz listę instrukcji z licznikiem pozycji, opkodami i argumentami PUSH.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćJak używać deasemblera bajtkodu EVM
Deasembler bajtkodu EVM zamienia ciąg hex na listę niskopoziomowych instrukcji. Wklej bajtkod do pola tekstowego i kliknij przycisk Dezasembluj. Wynik pojawi się na stronie jako lista kolejnych wierszy.
Po wczytaniu strony narzędzie od razu dezasembluje przykładowy bajtkod. Dzięki temu widzisz, jak wygląda wynik, jeszcze przed wklejeniem własnych danych. Aby sprawdzić własny kontrakt, zastąp przykładową wartość swoim bajtkodem i uruchom dezasemblację ponownie.
Domyślny przykład daje 21 instrukcji. Jeśli wkleisz inny bajtkod, liczba instrukcji będzie zależała od jego zawartości oraz od limitu wyświetlania.
- Wklej bajtkod do pola tekstowego.
- Kliknij Dezasembluj.
- Odczytaj wynik w kolejnych wierszach listy.
- Sprawdź podsumowanie: liczbę instrukcji i informację o nieznanych bajtach.
Każdy wiersz pokazuje pozycję, nazwę operacji i ewentualny argument. Przy dłuższych kontraktach lista bywa długa, dlatego narzędzie pokazuje maksymalnie 2000 instrukcji.
Format wejścia hex i białe znaki
Wejściem jest bajtkod zapisany jako ciąg znaków hex. W polu znajdziesz przykładową wartość rozpoczynającą się od 0x, a własny bajtkod wklejasz w tym samym formacie. Narzędzie usuwa białe znaki, więc możesz wkleić całość w jednej linii albo podzielić ją na wiele linii.
Białe znaki nie mają wpływu na wynik. Spacje, tabulatory i przejścia do nowej linii są pomijane, a liczy się kolejność znaków hex. Dwa znaki hex odpowiadają jednemu bajtowi, który staje się jednym krokiem analizy.
Wklejaj same ciągi hex bez dodatkowych opisów. Narzędzie nie interpretuje komentarzy ani nazw funkcji, bo na wejściu oczekuje wyłącznie bajtkodu. Dzięki temu możesz skupić się na instrukcjach, a nie na składni języka źródłowego.
Przykładowy bajtkod z pola tekstowego daje 21 instrukcji. To wygodny punkt startowy: najpierw sprawdzasz wygląd listy, a potem podmieniasz dane na własne.
Odczytywanie PC, opkodów i argumentów PUSH
Każdy wiersz wyniku opisuje jedną operację. Pierwsza kolumna to pozycja, nazywana licznikiem PC. Licznik zaczyna się od zera i rośnie po każdej instrukcji oraz po jej argumencie. Dzięki temu możesz wrócić do konkretnego miejsca w bajtkodzie i porównać je z innym listingiem.
Druga część wiersza to nazwa opkodu, czyli operacji EVM. Zobaczysz między innymi operacje arytmetyczne, logiczne, skoki, operacje na pamięci i typowe instrukcje kontraktu. Obok nazwy może pojawić się argument, jeśli dana operacja go wymaga.
Argumenty PUSH są pokazywane jako ciąg hex. PUSH1 przenosi jeden bajt, PUSH2 dwa bajty, a PUSH32 aż trzydzieści dwa bajty. Im większa liczba przy PUSH, tym więcej danych trafia do dalszego przetwarzania.
Jeżeli argument nie mieści się w dostępnym bajtkodzie, narzędzie dopisuje (ucięte). To sygnał, że wklejony materiał kończy się w połowie operacji. Wtedy sprawdź, czy bajtkod został skopiowany w całości.
Przykład domyślny ma 21 instrukcji. Liczba wierszy zależy od liczby opkodów i długości argumentów PUSH, dlatego dłuższe kontrakty zajmują więcej miejsca na liście.
Nieznane opkody, dane i metadane
Nie każdy bajt w bajtkodzie odpowiada znanej operacji EVM. Jeśli narzędzie nie znajdzie nazwy opkodu, pokazuje sam zapis hex z dopiskiem (nieznany). Taki bajt jest liczony do ogólnej liczby nieznanych bajtów w podsumowaniu.
Nieznane bajty nie muszą oznaczać błędu. W kontraktach często występują dane, stałe, adresy, fragmenty metadanych kompilatora albo inne informacje zapisane obok właściwego kodu. Deasembler czyta bajtkod liniowo, więc część danych może wyglądać jak instrukcje, choć w rzeczywistości pełni inną rolę.
Podsumowanie pokazuje liczbę instrukcji oraz informację o nieznanych bajtach. Gdy nieznane bajty wystąpią, zobaczysz dopisek, że często są to dane lub metadane kompilatora. To wskazówka, żeby nie traktować każdego wiersza jako wykonywalnej operacji.
Przy analizie kontraktu zwróć uwagę na koniec listy. Metadane kompilatora i dane pomocnicze często znajdują się na końcu bajtkodu. Jeśli interesuje Cię tylko logika, możesz pominąć końcowe fragmenty, które nie wyglądają jak typowe opkody.
Ograniczenia i czego narzędzie nie liczy
Deasembler bajtkodu EVM pokazuje instrukcje niskiego poziomu, ale nie odtwarza kodu źródłowego. Nie otrzymasz gotowego Solidity, nazw funkcji, komentarzy ani struktury projektu. To narzędzie do wglądu w bajtkod, a nie dekompilator.
Narzędzie nie wykonuje kontraktu. Nie symuluje transakcji, nie sprawdza stanu kontraktu, nie analizuje bezpieczeństwa i nie wykrywa podatności. Nie oblicza wyników działania funkcji ani wartości przechowywanych w kontrakcie. To nie jest kalkulator finansowy.
Wynik zależy od tego, co wkleisz. Jeśli bajtkod jest niekompletny, lista też będzie niekompletna. Jeśli zawiera dane zapisane między instrukcjami, narzędzie pokaże je liniowo i część z nich może wyglądać jak opkody. Sprawdź, czy analizowany fragment pochodzi z właściwego kontraktu.
Narzędzie pokazuje maksymalnie 2000 instrukcji. Przy dłuższym bajtkodzie podsumowanie doda informację, że pokazano pierwsze 2000. Nie pobiera kodu z sieci blockchain - musisz samodzielnie wkleić bajtkod, który chcesz przeanalizować.
Działa lokalnie, więc nie wysyła wklejonego bajtkodu do zewnętrznych serwerów. Nie łączy się z blockchainem, nie sprawdza adresów kontraktów i nie weryfikuje źródła. Ostateczną interpretację instrukcji oprzyj na własnej wiedzy lub dodatkowej analizie.
Nie licz na to, że narzędzie wskaże intencje autora kontraktu. Lista opkodów to surowy zapis maszynowy. Dopiero kontekst, kolejność operacji i znajomość EVM pozwalają wyciągać dalsze wnioski.
Najczęstsze pytania
Czym jest deasembler bajtkodu EVM?
To narzędzie, które zamienia hex bajtkodu na listę instrukcji EVM. Pokazuje pozycję, nazwę opkodu i argumenty PUSH. Dzięki temu możesz przejrzeć strukturę kontraktu bez uruchamiania go.
Jak używać deasemblera bajtkodu EVM?
Wklej hex do pola tekstowego i kliknij Dezasembluj. Wynik pojawi się na stronie jako lista wierszy. Domyślny przykład automatycznie daje 21 instrukcji.
Czy narzędzie usuwa spacje i entery z bajtkodu?
Tak, białe znaki są pomijane podczas przetwarzania. Możesz wkleić hex w jednej linii albo podzielony na wiele linii. Liczy się kolejność znaków hex.
Co oznaczają argumenty PUSH?
Argument przy PUSH to dane, które instrukcja odkłada na stos EVM. Narzędzie pokazuje je jako ciąg hex. Jeśli danych brakuje do końca bajtkodu, zobaczysz dopisek ucięte.
Co oznacza nieznany opkod?
Nieznany opkod to bajt, który nie ma nazwy w tabeli instrukcji. Narzędzie pokazuje go jako hex z dopiskiem nieznany i zlicza w podsumowaniu. Często są to dane lub metadane kompilatora, a nie prawdziwe instrukcje.
Czy deasembler pokaże kod Solidity?
Nie, narzędzie pokazuje wyłącznie niskopoziomowe instrukcje EVM. Nie odtwarza kodu źródłowego ani nazw funkcji. Na tej podstawie możesz analizować strukturę, ale nie otrzymasz gotowego Solidity.
Zobacz też — powiązane narzędzia
Narzędzie działa lokalnie w przeglądarce, a wynik ma charakter pomocniczy i nie zastępuje audytu bezpieczeństwa kontraktu.