Opcje sieci binarnych montażowych sieciowych


Netwel asembler: NASM Netwide Disassembler, NDISASM Netwide Disassembler jest małym programem towarzyszącym dla Netwide Assembler, NASM. Wydawało się to wstydu, że posiadanie asembleru x86, wraz z pełnym zestawem instrukcji, a nie jak najwięcej wykorzystania, więc dzieje się to z rozbiciem, które dzieli tablicę instrukcji (i niektóre inne fragmenty kodu) z NASM. Program Netwide Disassembler nie robi nic, tylko z utworzeniem dezasemblacji binarnych plików źródłowych. NDISASM nie ma zrozumienia dla formatów obiektów, takich jak objdump. i nie będzie w stanie zrozumieć plików DOS. EXE, takich jak debugowanie. To po prostu rozbiera. Informacje na temat instalacji można znaleźć w sekcji 1.3. NDISASM, podobnie jak NASM, zawiera stronę podręcznika, na którą możesz umieścić coś użytecznego, jeśli jesteś w systemie Unix. Aby zdemontować plik, zwykle użyjesz polecenia z formularza NDISASM, który może z łatwością rozmontować 16-, 32- lub 64-bitowy kod, pod warunkiem oczywiście, że pamiętasz, aby określić, z którymi ma pracować. Jeśli nie ma przełącznika - b, NDISASM działa domyślnie w trybie 16-bitowym. Przełącznik - u (dla USE32) również wywołuje tryb 32-bitowy. Dwie inne opcje wiersza polecenia to - r, które raportują numer wersji NDISASM, na którym jest uruchomiony, a - h, który zawiera krótkie podsumowanie opcji wiersza polecenia. Aby dezasemblować plik DOS prawidłowo, dezasembler musi założyć, że pierwsza instrukcja w pliku jest ładowana pod adresem 0x100. a nie na zero. NDISASM, który zakłada domyślnie, że każdy plik, który podajesz, jest załadowany do zera, dlatego też musi być o tym poinformowany. Opcja - o umożliwia zadeklarowanie innego pochodzenia dla pliku, który ma zostać rozmontowany. Jej argument może być wyrażony w dowolnym formacie liczbowym NASM: dziesiętny domyślnie, jeśli zaczyna się od lub 0x lub kończy się w jego hex. jeśli kończy się w ó jej ósmym. a jeśli kończy się w B jego binarnym. W związku z tym, aby dezasemblować plik: zrobi sztuczkę. Załóżmy, że jesteś demontażem pliku zawierającego niektóre dane, które nie jest kodem maszyny, a następnie zawiera jakiś kod maszyny. NDISASM będzie wiernie przeszukiwał sekcję danych, produkując instrukcje maszyn, gdzie tylko będzie to możliwe (choć większość z nich wygląda dziwnie, a niektóre mogą mieć nietypowe prefiksy, np. FS OR AX, 0x240A) i generowania instrukcji DB tak często, . Następnie dotrze do sekcji kodu. Załóżmy, że NDISASM właśnie skończył generowanie dziwnej instrukcji maszynowej z części sekcji danych, a jej położenie pliku jest teraz na poziomie jednego bajtu przed rozpoczęciem sekcji kodu. Jest zupełnie możliwe, że kolejna fałszywa instrukcja zostanie wygenerowana, począwszy od ostatniego bajtu sekcji danych, a następnie poprawna pierwsza instrukcja w sekcji kodu nie będzie widoczna, ponieważ punkt początkowy pominął go. To nie jest naprawdę idealne. Aby temu zapobiec, możesz określić punkt synchronizacji lub rzeczywiście tyle punktów synchronizacji ile chcesz (chociaż NDISASM może obsługiwać wewnętrznie 2147483647 punktów synchronizacji). Definicja punktu synchronizacji jest następująca: NDISASM gwarantuje dokładne trafienie punktów synchronizacji podczas demontażu. Jeśli chodzi o generowanie instrukcji, która spowodowałaby przeskakiwanie punktu synchronizacji, odrzuci to instrukcje i zamiast tego wyda db. W ten sposób rozpocznie się demontaż dokładnie z punktu synchronizacji i zobaczysz wszystkie instrukcje w sekcji kodu. Punkty synchronizacji są określone przy użyciu opcji - s: są mierzone pod kątem pochodzenia programu, a nie pozycji pliku. Jeśli chcesz zsynchronizować po 32 bajtach pliku, musisz to zrobić. Jak stwierdzono powyżej, możesz określić wiele znaczników synchronizacji, jeśli trzeba, wystarczy powtórzyć opcję - s. Załóżmy, że demontujesz sektor rozruchowy dyskietek DOS (może ma wirusa i musisz zrozumieć wirusa, abyś wiedział, jakie szkody mógłbyś zrobić). Zazwyczaj będzie to zawierać instrukcję JMP, a następnie niektóre dane, a następnie resztę kodu. Jest więc bardzo duża szansa, że ​​NDISASM będzie niezgodny z zasadami, gdy dane się kończą, a kod zaczyna się. Dlatego potrzebny jest punkt synchronizacji. Z drugiej strony, dlaczego trzeba ręcznie określić punkt synchronizacji Co zrobisz, aby znaleźć miejsce, w którym punktem synchronizacji byłby na pewno byłby przeczytanie instrukcji JMP, a następnie użycie adresu docelowego jako punktu synchronizacji . Czy NDISASM może to zrobić dla Ciebie? Oczywiście odpowiedź brzmi tak: użycie jednego z przełączników synonimowych - a (automatycznej synchronizacji) lub - i (dla inteligentnej synchronizacji) spowoduje włączenie trybu autosynchronizowania. Tryb autosynchronizacji automatycznie generuje punkt synchronizacji dla dowolnego, skoroszytu odnoszącego się do przeskakiwania lub połączenia, odnoszącego się do komputera, odnoszącego się do NDISASM. (Ponieważ NDISASM jest jednoprzebiegowy, jeśli napotka skok względny PC, którego cel został już przetworzony, nie ma wiele do zrobienia.) Tylko skomplikowane skoki PC są przetwarzane, ponieważ skok absolutny jest albo poprzez rejestr (w tym przypadku NDISASM nie wie, co zawiera rejestr) lub obejmuje adres segmentu (w tym przypadku docelowy kod nie znajduje się w tym samym segmencie, w którym pracuje NDISASM, a więc punkt synchronizacji nie może być umieszczony w dowolnym miejscu). W przypadku niektórych plików ten mechanizm automatycznie wprowadza punkty synchronizacji we wszystkich właściwych miejscach i nie wymaga ręcznego wprowadzania punktów synchronizacji. Należy jednak podkreślić, że tryb automatycznej synchronizacji nie gwarantuje złapania wszystkich punktów synchronizacji i może być konieczne ręczne umieszczenie. Tryb automatycznego zsynchronizowania nie uniemożliwia deklarowania ręcznych punktów synchronizacji: dodaje tylko te generowane automatycznie do tych, które podajesz. Jego całkiem możliwe do określenia - i i niektórych opcji. Innym zastrzeżeniem z trybem automatycznego zsynchronizowania jest to, że jeśli przez jakiś nieprzyjemny wypadek coś w twojej sekcji danych powinno się rozmontować do względnego połączenia z komputerem lub instrukcji skoku, NDISASM może posłusznie umieścić punkt synchronizacji w zupełnie przypadkowym miejscu, na przykład w pośrodku jednej z instrukcji w sekcji kodu. Może więc skończyć się złym demasażem, nawet jeśli używasz automatycznej synchronizacji. Ponownie, nie mogę tego wiele zrobić. Jeśli masz problemy, musisz użyć ręcznych punktów synchronizacji lub użyć opcji - k (udokumentowanej poniżej), aby zlikwidować demontaż obszaru danych. Opcja - e pomija nagłówek pliku, ignorując pierwsze N ​​bajty. Oznacza to, że nagłówek nie jest liczony w kierunku przesunięcia demontażu: jeśli podajesz e10 -10. demontaż rozpoczyna się od bajtu 10 w pliku, co będzie miało przesunięcie 10, a nie 20. Opcja - k jest zaopatrzona w dwa argumenty liczbowe oddzielone przecinkami, z których pierwszy to przesunięcie zespolone, a drugie to liczba by pominąć. Spowoduje to pominięcie pominiętych bajtów w kierunku przesunięcia montażowego: jego użycie polega na tłumieniu demontażu sekcji danych, która nie zawierałaby niczego, co chcielibyście zobaczyć. Nie ma znanych błędów. Niemniej jednak, jeśli to możliwe, znajdziesz je z poprawkami, które należy przesłać do nasm-bugslists. sourceforge. lub na stronę programistów w firmie nasm. us i staraj się je naprawić. Zapraszam do wysyłania składek i nowych funkcji, a także pliki do pobrania w trybie buforowanym w bibliotece CDN dostępnych dla licencjonowanych klientów. Nigdy nie doświadczaj 404 łamań ponownie Dowiedz się więcej. Pakiet ten został zatwierdzony przez moderatora ferventcodera pod numerem 8182018. Netwella Assembler, NASM, jest asemblerem 80x86 i x86-64 przeznaczonym do przenoszenia i modułowości. Obsługuje wiele formatów plików obiektów, w tym Linux i BSD a. out, ELF, COFF, Mach-O, Microsoft 16-bitowy OBJ, Win32 i Win64. Wysyła również zwykłe pliki binarne. Jego składnia ma być prosta i łatwa do zrozumienia, podobnie jak Intels, ale mniej złożona. Obsługuje wszystkie obecnie znane rozszerzenia architektury x86 i ma silne wsparcie dla makr. Aby zainstalować program NetWide Assembler, należy uruchomić następujące polecenie z wiersza polecenia lub z programu PowerShell: C: gt choco install nasm Aby uaktualnić program NetWide Assembler, uruchom poniższe polecenie z wiersza polecenia lub z programu PowerShell: C: gt choco upgrade nasm Wyniki skanowania wirusów w przypadku znalezienia rzeczywistego złośliwego oprogramowania, pakiety mogą zostać usunięte. Oprogramowanie czasem ma fałszywe dane. Moderatorzy niekoniecznie sprawdzają bezpieczeństwo oprogramowania bazowego, tylko że pakiet pobiera oprogramowanie od oficjalnego punktu dystrybucji i sprawdza poprawność oprogramowania wbudowanego w stosunku do oficjalnego punktu dystrybucji (gdzie prawa dystrybucyjne umożliwiają redystrybucję). Chocolatey Pro zapewnia ochronę w czasie rzeczywistym przed potencjalnym szkodliwym oprogramowaniem. Zależności Ten pakiet nie ma zależności. Prowadzący (a) Software Autor Simon Tatham i Julian Hall i jest obecnie prowadzony przez zespół prowadzony przez H. Peter Anvin. Prawa autorskie 1996-2018 Autorzy NASM - wszystkie prawa zastrzeżone. Omówienie pakietu NetWide Assembler Package Zasady podstawowe: ta dyskusja dotyczy tylko NetWide Assembler i pakietu NetWide Assembler. Jeśli masz opinię dotyczącą Chocolatey, skontaktuj się z grupą google. Ta dyskusja obejmie wiele wersji. Jeśli masz komentarz dotyczący określonej wersji, pamiętaj, że w komentarzach. Opiekunowie tego pakietu Chocolatey będą informowani o nowych komentarzach zamieszczonych w tym wątku Disqus, jednak nie jest to gwarancja, że ​​otrzymasz odpowiedź. Jeśli po opublikowaniu poniższego komunikatu nie otrzymasz odpowiedzi od opiekunów, wykonaj dalsze czynności, korzystając z linku znajdującego się po lewej stronie tej strony lub skorzystaj z tego linku, aby skontaktować się z opiekunami. Jeśli nadal nic nie słychać, postępuj zgodnie z procedurą triage pakietów. Powiedz nam, co lubisz na temat pakietu lub NetWide Assembler lub powiedz nam, co wymaga poprawy. Podziel się swoimi doświadczeniami z pakietem lub dodatkową konfiguracją lub gotchami, które zostały znalezione. Jeśli używasz adresu URL, komentarz zostanie oznaczony jako moderacja, dopóki nie będziesz na białej liście. Dyskusje moderowanych komentarzy są zatwierdzane w harmonogramie tygodniowym, jeśli nie wcześniej. Może to potrwać od 1-5 dni, aby Twój komentarz pojawił się. Zapoznaj się najpierw z nowymi funkcjami, publikacjami dotyczącymi zabezpieczeń i nowościami dotyczącymi Chocolatey. nasm (1) - Linux man page nasm - Netwella Assembler, przenośny plik assemblerowy nasm-response-file - f - o-outfile - l listfile. nazwa pliku nasm - h nasm - v Opis Polecenie nasm zmontuje nazwę pliku i kieruje dane wyjściowe do pliku outfile, jeśli zostało podane. Jeśli plik nie zostanie określony, nasm będzie pobierał domyślną nazwę pliku wyjściowego z nazwy pliku wejściowego, zwykle przez dodanie rozszerzenia. o lub. obj lub usunięcie wszystkich rozszerzeń dla surowego pliku binarnego. W przeciwnym wypadku nazwa pliku wyjściowego będzie nasm. out. OPCJE - nazwa_pliku Powoduje, że nasm przetwarza opcje z nazwy pliku tak, jakby były one dołączone do wiersza poleceń. - a Powoduje, że firma nasm zmontuje dany plik wejściowy bez wcześniejszego zastosowania preprocesora makro. - D macrovalue Określa makro-wiersz. - d makrovalue Tak samo jak opcja - D. - e Powoduje, że nasm przetwarza wstępnie dany plik wejściowy i zapisze wyjście na stdout (lub określoną nazwę pliku wyjściowego) i nie zmontuje niczego. - f format Określa format pliku wyjściowego. Aby zobaczyć listę prawidłowych formatów wyjściowych, użyj opcji - hf. - g Powoduje, że nasm generuje informacje o debugowaniu w wybranym formacie Powoduje nasm natychmiastowe wyjście, po podaniu podsumowania jego opcji wywołania. Tak samo jak - h. ale także zawiera listę wszystkich prawidłowych formatów wyjściowych. - I katalog Dodaje katalog do ścieżki wyszukiwania zawierającej pliki. Specyfikacja katalogu musi zawierać ukośnik ukośny, ponieważ będzie on bezpośrednio przedkładany do nazwy pliku dołączającego. - i katalog Tak samo jak opcja - I. - l listfile Powoduje, że lista zestawów zostanie skierowana do podanego pliku, w którym po prawej stronie jest wyświetlane oryginalne źródło (plus źródło dołączonych plików i rozszerzenia makr wielo-linii), a wygenerowany kod jest wyświetlany w po lewej stronie. - M Powoduje, że nasm powoduje wydzielanie zależności typu Makefile do stdout normalnego wyjścia. - O liczba optymalizuje odejmowania oddziałów (-O0 wyłącza, domyślnie). - o outfile Określa dokładną nazwę pliku wyjściowego, zastępując domyślne sposoby określania tego parametru przez nasm. - P plik Określa plik, który ma być wstępnie dołączony przed rozpoczęciem przetwarzania głównego pliku źródłowego. - p plik Tak samo jak opcja - P. - r Powoduje nasm natychmiastowe wyjście, po wyświetleniu jego numeru wersji. (przestarzałe) powoduje, że nasm wysyła komunikaty o błędach i / lub tekst pomocy do stdout zamiast stderr. Powoduje, że nasm zmontuje się w trybie kompatybilnym ze standardem TASM w programie SciTech. - U makro Określa jedno makroekonomiczne. - u makro Tak samo jak opcja - U. - v Powoduje, że nasm natychmiast wyjdzie, po wyświetleniu jego numeru wersji. - w - foo Powoduje, że nasm włącza lub wyłącza pewne klasy komunikatów ostrzegawczych, na przykład - sanphan-label lub - w-macro-params - X określa format raportowania błędów (gnu lub vc). - Z nazwa_pliku powoduje, że nasm przekierowuje komunikaty o błędach do nazwy pliku. Ta opcja istnieje w celu obsługi systemów operacyjnych, na których nie można łatwo przekierować stderr. SYNTAX Ta strona podręcznika nie opisuje w pełni składni języka montażu Nasm, ale podsumowuje różnice między różnymi instalatorami. Rejestry nie mają wiodącego znaku, w przeciwieństwie do gazu. i rejestry stosu zmiennoprzecinkowego są określane jako st0. st1. i tak dalej. Instrukcje zmiennoprzecinkowe mogą używać formatu pojedynczego operandu lub podwójnego. Do tego celu podane jest słowo kluczowe TO, można albo napisać fadd st1, st0, albo użyć alternatywnych form pojedynczych operacji na st1 Niezainicjowany magazyn jest zarezerwowany przy użyciu RESB. RESW. RESD. RESQ. REST i RESO pseudo-opcodes, z których każdy przyjmuje jeden parametr, który daje liczbę bajtów, słów, podwójnych słów kluczowych, quadwords lub dziesięciu bajtów słów do odłożenia. Powtarzanie danych nie jest wykonywane słowem kluczowym DUP, jak widać w instalatorach DOS, ale z użyciem prefiksu TIMES w następujący sposób: message: times 3 db abc times 64-wiadomość db 0, która definiuje ciąg abcabcabc, a następnie właściwą liczbę zero-bajtów, aby uzyskać całkowitą długość do 64 bajtów. Odwołania symboliczne są zawsze rozumiane jako bezpośrednie (to znaczy adres symbolu), chyba że są używane nawiasy kwadratowe, w których to przypadku wykorzystywana jest zawartość miejsca pamięci. Tak więc: mov axe, wordvar ładuje AX z adresem zmiennej wordvar, podczas gdy mov axe, es: wordvarbx wszystkie odnoszą się do zawartości lokalizacji pamięci. Składnia es mov axe, wordvar1 nie są w ogóle prawomocne, chociaż użycie nazwy rejestru segmentów jako przedrostka instrukcji jest poprawne i może być użyte z instrukcjami, takimi jak LODSB, które nie mogą być przesłonięte w żaden inny sposób. Stałe można wyrazić liczbowo w większości formatów: tylne H, Q lub B oznaczają odpowiednio sześciokąty, ósemkowe lub binarne, a także prowadzące 0x lub oznaczają również heks. Wiodące zera nie są specjalnie traktowane. Stałe znaków mogą być zawarte w pojedynczych lub podwójnych cudzysłowach, nie ma znaku ucieczki. Zamawianie jest niewielkie (odwrócone), tak że stała liczba znaków abcd oznacza 0x64636261, a nie 0x61626364. Lokalne etykiety zaczynają się od okresu, a ich lokacja jest przyznawana przez asembler poprzedzający nazwę poprzedniego symbolu nielokalnego. W ten sposób deklarując etykietę. pętl po etykiecie etykiety faktycznie zdefiniowano symbol zwany label. loop. DYREKTYWY Nazwa sekcji lub nazwa SEGMENT powoduje, że nasm kieruje wszystkie poniższy kod do wskazanej sekcji. Nazwy sekcji różnią się w zależności od formatu pliku wyjściowego, chociaż większość formatów obsługuje nazwy. text..data i. bss. (Wyjątkiem jest format obj, w którym wszystkie segmenty są definiowane przez użytkownika). Adres ABSOLUTE powoduje, że nasm ustawia swój punkt konwersji na adres absolutny: więc nie można wygenerować kodu ani danych, ale można użyć RESB. RESW i RESD, aby przenieść punkt montażu dalej i można zdefiniować etykiety. Dyrektywa ta może więc służyć do definiowania struktur danych. Po zakończeniu montażu bezwzględnego należy wydać kolejną dyrektywę SEKCJA, aby powrócić do normalnego montażu. BITS 16, BITS 32 lub BITS 64 przełączają domyślny tryb procesora, dla którego firma nasm tworzy kod: jest to odpowiednik USE16 lub USE32 w instalatorach DOS. Symbol EXTERN oraz definicje symbolu importu i eksportu symbolu GLOBAL, odpowiednio, zi do innych modułów. Zauważ, że dyrektywa GLOBAL musi pojawić się przed definicją symbolu, do którego się odnosi. STRUC strucname i ENDSTRUC. gdy jest używany do przymocowania wielu RESB. RESW lub podobne instrukcje, definiować strukturę danych. Oprócz definiowania przesunięć elementów konstrukcyjnych, konstrukt definiuje również symbol wielkości struktury, która jest po prostu nazwą struktury o rozmiarze przymocowanym do końca. DODATKOWE DYREKTYWY FORMATOWE Adres ORG jest używany przez binarny format wyjściowy bufora i określa adres, pod który kod wyjściowy zostanie w końcu załadowany. GRpname grupy seg1 seg2. jest używany przez format wyjściowy obj (Microsoft 16-bit) i definiuje grupy segmentów. Ten format wykorzystuje również UPPERCASE. co powoduje, że wszystkie nazwy segmentów, grup i symboli wyjściowych do pliku obiektów powinny być wielkimi literami. Należy zauważyć, że rzeczywisty montaż jest nadal rozróżniana wielkość liter. LIBIBARY libname jest używany przez format wyjściowy rdf i powoduje zapisanie rekordu zależności do pliku wyjściowego, który wskazuje, że program wymaga pewnej biblioteki w celu uruchomienia. MAKRO PREPROCESSOR Makrojednoznaczne makra są definiowane przy użyciu komend define lub idefine w podobny sposób do preprocesora C. Mogą być przeciążone pod względem liczby parametrów, chociaż definiowanie makra bez parametrów uniemożliwia definicję makra o tej samej nazwie, biorąc pod uwagę parametry i vice versa. Definiuje makra, których nazwy pasują do wielkości liter, podczas gdy idefine definiuje makra nie uwzględniające wielkości liter. Wielopoziomowe makra są definiowane przy użyciu makra i imacro (rozróżnienie jest takie samo jak definicji i idefine), których składnia wygląda następująco: nazwa makr minprm - maxprm. nolist defaults ltsome linie makra ekspansji textgt endmacro Znowu makra te mogą przeładować. Znak końcowy wskazuje, że po ostatnim podsumowaniu wszystkich parametrów po rozdzieleniu przecinków do ostatniego parametru. Część domyślna może zostać użyta do określenia wartości domyślnych dla nieokreślonych parametrów makra po minparam. endm jest ważnym synonimem endmacro. Aby odwołać się do parametrów makra w rozszerzeniu makr, użyj 1. 2 i tak dalej. Można także wymusić, że parametr makr powinien zawierać kod warunku, używając 1. i można odwrócić kod warunku przy użyciu -1. Można również zdefiniować etykietę specyficzną dla wywołania makr, poprzedzając ją podwójnym znakiem. Pliki mogą być zawarte przy użyciu dyrektywy include, która działa jak C. Preprocesor posiada stos kontekstowy, który może być używany przez jedno makro do przechowywania informacji, które później pobrać. Możesz nacisnąć kontekst na stosie za pomocą przycisku. usunąć jeden przy użyciu pop. i zmienić nazwę górnego kontekstu (bez naruszania żadnych powiązanych definicji) za pomocą polecenia repl. Etykiety i definiowanie makr charakterystycznych dla górnego kontekstu można zdefiniować, poprzedzając ich nazwy, a także elementy specyficzne dla następnego kontekstu w dół, itd. Złożenie warunkowe odbywa się za pomocą ifdef. ifndef. else i endif, jak w C. (Z wyjątkiem faktu, że ifdef może zaakceptować kilka domniemanych nazw makro i ocenia TRUE, jeśli którykolwiek z nich jest zdefiniowany). Ponadto dyrektywy ifctx i ifnctx mogą być użyte do uzależnienia od nazwy górnego kontekstu na stosie kontekstu. Oczywisty zestaw dyrektyw else-if elifdef. elifndef. elifctx i elifnctx są również wspierane. Zgłaszaj błędy za pomocą funkcji śledzenia błędów na nasm. sourceforge. org. Odwołany przez

Comments