Seria ReverseCraft niestety nie będzie już kontynuowana (wyjaśnienie), ale nagrywam/publikuje teraz inne serie videotutoriali (również o sprawach niskopoziomowych, w tym np. kurs assembly) w trochę innej formie. Są dostępne na moim kanale na Youtube. Zachęcam do rzucenia okiem :)
Opis:
Drugi odcinek serii o assemblerze, opowiadający o budowie pojedynczej instrukcji maszynowej x86, oraz o tym, jak wpływa to na budowę instrukcji w assemblerze (x86, protected mode, 32-bit).
Lista ćwiczeń - lista ćwiczeń dla osób zainteresowanych; rozwiązania można wysyłać mi na e-mail (potem zrobię do tego odpowiedni panelik), w celu weryfikacji/pochwalenia się/innym (e-mail: michael MAŁPA hispasec KROPKA com); gdybym nie wysłał potwierdzenia odbioru w ciągu 5 dni, proszę o przypomnienie / kontakt w celu sprawdzenia co się stało
Informacje uzupełniające:
Errata:
Jeden opcode może mieć max. 15 bajtów (a nie 16 jak podałem w odcinku; podziękowania dla Fanaela oraz suN8hclf'a za wykazanie czujności ;>). Powyżej tej wielkości generowany jest exception (a nawet dwa różne exceptiony, w zależności od użytych prefixów i ich ilości). Zdarza się, że niektóre emulatory i wirtualizery x86 nie zwracają uwagi na to ograniczenie, i umożliwiają korzystanie z opcode'ów powyżej 15 bajtów - taka rozbieżność względem x86 może zostać wykorzystania do wykrycia przez aplikacje faktu, iż działa ona w środowisku emulowanym/wirtualnym (warto rzucić okiem na Old new Virtual Machine detection method oraz Microsoft VirtualPC 2004 (build 528) Detection)
Intel Manuals - oficjalne podręczniki Intel'a do procesorów z rodziny x86
Intel Manuals (wersja drukowana) - tutaj można zamówić (via e-mail) darmowe drukowane wersje podręczników Intel'a (z mojego doświadczenia wynika, że czas realizacji zamówienia jest bardzo różny i zależy od tego czy mają dany podręcznik na stanie, czy też czekają aż zostanie wydrukowany; zazwyczaj czeka się od tygodnia do 4 miesięcy); UPDATE: Otrzymałem od Was informacje, że Intel'owi wyczerpał się nakład książek, i nie planują dodruku do końca roku (czyli najlepiej po nowym roku spróbować jeszcze raz). Często pytacie również co to numer SKU - jest to wyjaśnione na samej górze strony do której prowadzi ten link, ale na wszelki wypadek napiszę jeszcze raz - jest to pierwsze 6 cyfr z nazwy PDF'a, co jest równoważne 6ściu pierwszym cyfrom order number wymienionym na dole pierwszej stronie PDF'ów (w PDFach zresztą na pierwszej stronie jest spis SKU powiązanych tomów)
ReverseCraft #5 - Packery - w piątym odcinku prezentuje zasadę działania packerów/protektorów plików wykonywalnych, oraz pokazuję jak stworzyć bardzo prosty programik szyfrujący pierwszą sekcję exeka
ReverseCraft Assembler #1 - Bliżej systemu... - odcinek pilotażowy nowej serii ReverseCraft, o assemblerze (a w przypadku tego odcinku - o podstawach assemblera), którą będę rozwijał równolegle do oryginalnej serii
ReverseCraft #6 - OEP i zrzuty pamięci - odcinek szósty, w którym poruszam problematykę lokalizacji OEP (oryginalnego punktu wejścia) oraz omawiam kolejne narzędzia do wykonywania zrzutów pamięci
ReverseCraft Assembler #2 - Opcode - drugi odcinek serii o assemblerze, opowiadający o budowie pojedynczej instrukcji maszynowej x86, oraz o tym, jak wpływa to na budowę instrukcji w assemblerze
ReverseCraft #8 - Użycie obcego kodu - ósmy odcinek serii ReverseCraft, w którym prezentuje 4 metody wykorzystania/włączenia obcego kodu do swojej aplikacji
ReverseCraft Assembler #3 - EFLAGS, skoki - trzeci odcinek RA, tym razem o rejestrze flagowym EFLAGS, oraz o wpływie instrukcji arytmetyczno-logicznych na flagi tego rejestru, a także o wpływie flag na skoki i inne instrukcje warunkowe