Gynvael's FAQ #8: Maszyny wirtualne

  Рет қаралды 16,699

GynvaelColdwind

GynvaelColdwind

Күн бұрын

Odcinek techniczno-popularno-naukowy o rodzajach maszyn wirtualnych i ich wykorzystaniu w RE/Anti-RE, gamedevie, językach programowania, jak i do emulacji całych systemów komputerowych. Od 1:00:00 jest część praktyczno-techniczna z implementacją bardzo prostej VMki.
Powered by Gynvael Coldwind :)
gynvael.coldwin...
Materiały:
gynvael.vexilli...
Linki:
en.wikipedia.or...
geeknizer.com/r...
en.wikipedia.or...
en.wikipedia.or...
www.hacker.co.i...
dl.packetstorms...
www.arm.com/pro...
fabiensanglard....
gynvael.coldwin...
www.uw-team.org...
Zdjęcia:
firsthour.net
troll.me
(niestety nie mam pojęcia skąd pochodził screen Q3)
Komentarze i sugestie mile widziane.
Pytania na które odpowiadam w serii FAQ możecie albo zostawiać w komentarzach do moich podcastów, albo (wersja lepsza) wysłać mi na mejla z zaznaczeniem, że chodzi o serię FAQ :)
Disclaimer: Videocasty są nagrywane (prawie) bez żadnego przygotowania, więc możliwe są wpadki, usterki, etc. Proszę o wyrozumiałość :)

Пікірлер: 21
@haystackdmilith
@haystackdmilith 6 жыл бұрын
Java jest napisana głównie w Javie. Hotspot jest napisany w C. A druga rzecz, że jak załadujesz bytekod javy to on dopiero jest kompilowany (po odpaleniu vm). :) Z tego faktu wynika masa nieporozumień typu "Java jest wolna". A dopiero jak hotspot zacznie ten kod optymalizować JIT'em.. to po paru iteracjach kompilacji na wykonywany kod nakładane są optymalizacje dynamiczne (jak strength reduction np). C może o tym pomarzyć (statyczna kompilacja)
@AlmightyTeam666
@AlmightyTeam666 6 жыл бұрын
@GynvaelColdwind Czym różni się interpreter od maszyny wirtualnej? Wg. polskiej wikipedii (artkuł o VM), interpretery to maszyny wirtualne (zaraz obok kompilatorów-JIT i emulatorów), ale już w artykule o interpreterze nie ma nic o maszynach wirtualnych, a interpreter jest opisywany jako program interpretujący kod źródłowy linia po linii, ewentualnie wcześniej kompilujący go do kodu pośredniego i dopiero wtedy interpretujący (bytecode interpreter). Zastanawiam się dlaczego w Javie mówi się o maszynie wirtualnej JVM, a w Pythonie (CPython) mówi się o interpreterze (oficjalna dokumentacja), mimo iż w obu tych językach kod jest najpierw kompilowany do bytecode'u a potem interpretowany. Czy ma to związek z tym, że program w javie najpierw jest kompilowany oddzielnym poleceniem (javac), a dopiero potem bytecode jest uruchamiany innym poleceniem (java)?
@GynvaelColdwind
@GynvaelColdwind 6 жыл бұрын
Dobre pytanie prawdę mówiąc - w zasadzie trudno mi coś dodać poza to co napisałeś, tj. te pojęcia są trochę mieszane. CPython i Java w zasadzie są identyczne pod względem konstrukcji (na życzenie w pythonie też można kod najpierw skompilować - python -m compileall asdf.py - a potem uruchamiać .pyc), więc w obu przypadkach należałoby je rozważać w kontekście środowisk oparte (w tych implementacjach) o maszyny wirtualne. Z drugiej strony mamy np. .bat (batch DOSowy/Windowsowy), który jest typowym interpreterem - nie ma żadnego bytecode'u czy kompilacji, po prostu linia po linii polecenia są parsowane i wykonywane. Niemniej jednak też możemy o nim myśleć w kontekście maszyny wirtualnej - mamy w końcu jakiś model zmiennych (pamięci), jakiś model środowiska wykonania w którym jest jakiś wskaźnik na kolejną instrukcję (linię). Ostatecznie trochę mam wrażenie, że różnica w definicjach sprowadza się do tego co jest na wejściu danej maszyny - czy jest to kod źródłowy, czy bytecode/kod maszynowy. To trochę taki sam problem jak "języki skryptowe" ;)
@haystackdmilith
@haystackdmilith 6 жыл бұрын
A jak się już skończyłem czepiać to pochwalić chciałem. Bardzo ciekawy program, przyjemnie się Ciebie słucha
@Dav3on
@Dav3on 6 жыл бұрын
dałem łape w góre za użądzenie :D
@MrSidzej22
@MrSidzej22 13 жыл бұрын
cholera, to jest dla ludzi już obeznanych i to mocno :D
@MrZabojad
@MrZabojad 12 жыл бұрын
Męcze si już trochę z moją własną maszyną wirtualną(opartą o stos). I stanąłem na PUSH. Problem polega na tym że nie wiem jak odczytywać i wrzucać na stos liczby wielkości 2 i 4 bajtów. Próbowałem różne cuda i nie wiem co dalej...
@PowerPenguini
@PowerPenguini 7 жыл бұрын
Mam pytanie. Mianowicie nie bardzo rozumiem zapis ram[r[0]]... czyli vm jest w stanie zapisać cokolwiek tylko tam? czy możnaby to było zastąpić czymś, co przesuwa pointer ramu i zrobić coś w rodzaju stosu?
@zbigniewkatscher2576
@zbigniewkatscher2576 3 жыл бұрын
Co zasrosować w win10 aby pracować na basic gfa
@v3mpty
@v3mpty 10 жыл бұрын
Mam uwagę co do gconst, a właściwie uwagę do poprawki, moim zdaniem powinno tam być ip+=5, ponieważ w bytecode mamy 1 bajt określający rejestr i 4 bajty zawierające naszego inta.
@jadwiga0700
@jadwiga0700 13 жыл бұрын
Pod koniec dźwięk się mija z obrazem ;/
@event151
@event151 13 жыл бұрын
Daj jakieś ćwiczenia do samodzielnego wykonania:)
@przemek4101
@przemek4101 11 жыл бұрын
Słyszałeś o Client Hyper-V, serwerowej wirtualizacji (Hypervisor pod wszystkim, nawet pod systemem hosta) na komputerze klienckim. W Win 8 Pro/Wind 8.1 Pro dostępne jest.
@jurek-zz3un
@jurek-zz3un 8 жыл бұрын
na 10 też
@MrZabojad
@MrZabojad 13 жыл бұрын
chcemy jeszcze JIT'ach :P
@caymanhqnet4867
@caymanhqnet4867 11 жыл бұрын
W vm.cpp w linii 39(case 0x32: ...) brakuje ip += 2;
@Qyonek
@Qyonek 13 жыл бұрын
przy 0x32 nie ma przesunięcia pointera.
@PowerPenguini
@PowerPenguini 7 жыл бұрын
wydaje mi się, że to pwinno wyglądać tak %xdefine r1 0x10 (bez db)
@GynvaelColdwindEN
@GynvaelColdwindEN 11 жыл бұрын
Well spotted :) Wrzuciłem poprawioną wersję.
@GynvaelColdwindEN
@GynvaelColdwindEN 11 жыл бұрын
Well spotted! Wrzuciłem poprawioną wersję.
@haystackdmilith
@haystackdmilith 6 жыл бұрын
p.s. 'Endżin". :)
Gynvael's FAQ: Windows czy Linux? Oba!
15:48
GynvaelColdwind
Рет қаралды 36 М.
Gynvael's Code: Multithreading #1
59:28
GynvaelColdwind
Рет қаралды 12 М.
Random Emoji Beatbox Challenge #beatbox #tiktok
00:47
BeatboxJCOP
Рет қаралды 67 МЛН
Real Man relocate to Remote Controlled Car 👨🏻➡️🚙🕹️ #builderc
00:24
СОБАКА ВЕРНУЛА ТАБАЛАПКИ😱#shorts
00:25
INNA SERG
Рет қаралды 3,9 МЛН
Why Unreal Engine 5.5 is a BIG Deal
12:11
Unreal Sensei
Рет қаралды 424 М.
Gynvael Coldwind "Programowanie a hacking" @ SECURE 2015
42:31
CERT Polska
Рет қаралды 41 М.
Разгоняем PostgreSQL. Личный опыт. (Перезалив)
37:05
Сисадмин Михалыч
Рет қаралды 1,5 М.
Życie po Google, czyli co dalej
2:35:12
GynvaelColdwind
Рет қаралды 12 М.
#110: Pamięć procesu i języki C/C++
2:51:18
GynvaelColdwind
Рет қаралды 14 М.
Narzędzia w Linuksie których nie znasz a powinieneś - Błażej "Mewp" Święcicki
1:14:57
Akademickie Stowarzyszenie Informatyczne
Рет қаралды 35 М.
The Tragedy of systemd
47:18
linux.conf.au
Рет қаралды 1,1 МЛН
HACK-A-SAT 4: Wywiad z Poland Can Into Space
1:34:34
GynvaelColdwind
Рет қаралды 8 М.
Gynvael's Code: Pointery #1
40:43
GynvaelColdwind
Рет қаралды 17 М.
Do NOT Learn Kubernetes Without Knowing These Concepts...
13:01
Travis Media
Рет қаралды 321 М.
Random Emoji Beatbox Challenge #beatbox #tiktok
00:47
BeatboxJCOP
Рет қаралды 67 МЛН