Część, mam egzamin z Javy i koleś wymaga zagadnień wymienionych w temacie. Przyznam szczerze, że o ile Jave w miare znam to to jest dla mnie czarną magią, stąd moje pytanie czy zna ktoś jakieś materiały po polsku, z których by można było to poogarniać? Jeśli chodzi o konkretny zakres to jest tu http://th-www.if.uj.edu.pl/zfs/ciesla/main/Java_files/java_15.pdf (wykład 15). Z góry dzięki za podpowiedzi!
Fajne studia :). Z tego co widzę to na głęboką wodę Was rzucają od razu.
Masz tam po prostu zaprezentowaną strukturę skompilowanego pliku .class od Javy i rozłożenie tego na czynniki pierwsze.
Co byś musiał umieć? Podstawy assemblera (jakiegokolwiek). Co ja bym zrobił na twoim miejscu?
- Napisał wiele małych przykładów w Java -> skompilował je
- Otworzył dokumentację z listą instrukcji JVM http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html
- Wziął JD-GUI http://jd.benow.ca/ oraz DirtyJOE http://dirty-joe.com/
- Analizuj w JD-GUI i DirtyJOE jak wyglądają te proste programy i konstrukcje programistyczne po kompilacji w JVM
- Spróbuj dynamicznie stworzyć proste funkcje korzystając z powyższej wiedzy
Musisz po prostu sam zobaczyć jak kod wygląda po kompilacji i jak kod z wysokiego poziomu prezentuje się na niskim poziomie, zwłaszcza konstrukcje języka programowania jak np. pętle, wywoływanie funkcji, zapisywanie stałych na stosie przed wywoływaniem funkcji etc.
W IntelliJ jest plugin 'ASM Bytecode Outline'. Piszesz kod i jednym kliknięciem otwierasz go skompilowanego. Czyli - piszesz proste kody i patrzysz jak wyglądają. Tu masz jeszcze dość wyczerpującego handbook'a:
http://www.mpcforum.pl/topic/1247805-java-reversers-handbook/
Niżej jest tam link do artykułu na Wikipedii ze wszystkimi instrukcjami. I, jak pisał pan wyżej - dokumentacja oracla. Moim zdaniem niekonieczne są podstawy assemblera. A po polsku nic większego nie znajdziesz na pewno.