Czas trwania:
62 minuty (opublikowano 2009-11-28)
Credits:
Autor: Gynvael Coldwind
Intro: Sebastian "Xa" Rosik (grafika) i Samlis Coldwind (dźwięk)
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).
Linki do video:
- UW-Team.org (flash player/download)
- Vimeo (flash player/download)
Materiały:
- Slajdy - slajdy użyte w videoarcie
- 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:
Materiały o których wspominam w odcinku:
Dodatkowe materiały:
- 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)
Materiały o których wspominam w odcinku:
- The Complete Pentium Instruction Set Table - podręczna lista instrukcji i opcode'ów procesora x86 (aka opcodes.txt lub pentium.txt)
- 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)
Dodatkowe materiały:
- http://ref.x86asm.net/ - X86 Opcode and Instruction Reference (podziękowania dla suN8hclf'a za linka)
Użyte narzędzia:
- MinGW GCC - kompilatory z rodziny GCC pod system Windows
- OllyDbg 1.10 - trochę już podstarzały, ale nadal dający radę, darmowy debugger pod Windowsa
- Immunity Debugger - tego co prawda nie używałem, ale jest to godny polecenia debugger oparty o silnik OllyDbg
- Total Commander - świetny i bardzo wygodny menadżer plików pod systemy z rodziny Windows

