Programowanie dynamiczne Analiza bytecodu,biblioteka ASM- materiały do nauki tych zagadnień w Javie

0

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!

1

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?

  1. Napisał wiele małych przykładów w Java -> skompilował je
  2. Otworzył dokumentację z listą instrukcji JVM http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html
  3. Wziął JD-GUI http://jd.benow.ca/ oraz DirtyJOE http://dirty-joe.com/
  4. Analizuj w JD-GUI i DirtyJOE jak wyglądają te proste programy i konstrukcje programistyczne po kompilacji w JVM
  5. 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.

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1