Mity na temat Assemblera


Spis treści



Assembler Jest Trudny

Często assembler jest postrzegny jako jakiś niezwykle trudny i archaiczny język programowania. Może najpierw zacznijmy od tego, czym jest assembler.

Assembler - to właściwie dowolny język programowania, który ma dużą zgodność między instrukcjami języka, a instrukcjami kodu maszynowego danej architektury.

Zapewne ten mit wziął się stąd, iż assembler jest wysoko kontekstowy, ma on bardzo proste instrukcje, ale aby w nim programować trzeba znać działanie systemu operacyjnego:

  • jak działa stos
  • czym jest sterta (heap)
  • czym są rejestry i jakie mają ograniczenia
  • jak działają typy zmienno przecinkowe

Programowanie w assemblerze nie jest trudne, trudne może być implementowanie w nim bardzo złożonych problemów, ponieważ operujemy na niskiej warstwie abstrakcji.

Sam w sobie assembler nie jest trudny.

Assembler Może Spalić Ci Kartę Graficzną/Procesor

Nie jest prawdą, że źle napisany kod w assemblerze może uszkodzić jakikolwiek podzespół komputera, przy obecnych PC jest to niemożliwe.

Zwłaszcza mając nauwadze, że jeśli uczysz się assemblera, to zapewne kod, który uruchamiasz działa w userspace, z którego poziomu program komunikuje się z API systemu operacyjnego, a nie bezpośrednio ze sprzętem.

Swoją drogą to firmware podzespołów również ma swoje zabezpieczenia i ograniczenia.

Najlepiej Zacząć Naukę Od 16-bit Assemblera

Wiele razy na różnych forach w odpowiedzi do pytania początkującego czytałem o tym, że powinien zacząć naukę od 16-bitowego assemblera pod MS DOSa. Co jest kompletną bzdurą.

Patrząc na fakt, iż większość ludzi aktualnie korzysta z architektury x86_64, to jedynym celem nauki mogłoby być pobawienie się archaizmami ze starego systemu.

Assembler Jest Do Pisania Malware

Taka odpowiedź również padała na wielu forach przy pytaniu dotyczącemu przydatności znajomości assemblera w dzisiejszych czasach.

To w pewnym stopniu jest prawda, ALE są to bardzo specyficzne funkcjonalności złośliwego oprogramowania, takie jak np. odwołanie się do WinAPI bez widocznych importów w programie. W większości przypadków malware jest pisany w językach wysokiego poziomu.

Jeśli interesuje cię ten temat, to zerknij na moje repozytorium, w którym zaimplementowałem tę funkcjonalność https://github.com/Groszekk/H4ckyCall.

Jeśli chcesz nauczyć się podstaw assemblera x86 i działania systemów operacyjnych to zainteresuj się książką Assembler x86 - Programowanie i Podstawy Systemów Operacyjnych. Do czasu zakończenia przedsprzedaży trwa promocja 🔥 69.00zł 🔥 39.00zł!