Wykładowca stwierdził, że chce nam pokazać czystego Asma, dlatego wybór padł na TASM.
Gość pewnie zna TASM'a z młodości i tak dinozauruje sobie do emerytury...
Z takim czystym TASMem zapewne niewiele jestem w stanie zrobić. Planowałem po prostu napisać kilka prostych programów, żeby go tylko ogarnąć, ale trafiłem właśnie na te exploity i zastosowanie w security.
Zapewne na tym wykładzie nie będzie ani słowa o tym jak programy wołają system operacyjny, np. jak program się chce zamknąć to woła exit(0)
w C, a to po paru wygibasach skończy na wykonaniu instrukcji assemblera syscall
z parametrami w rejestrach (https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md).
Nie ma syscalla nie ma exploida, musisz się tego nauczyć (a to proste) we własnym zakresie.
Również różnica w rozmiarze programu, który robi to samo w C i Asm jest ogromna, Asm jest pewnie szybszy?
Jeżeli C linkuje się dynamicznie do clib'a to nie będzie aż tak dużej różnicy. Generalnie GCC dołoży jakieś swoje sekcje plus mapowania określające jakie funkcje zaimportować z clib'a. Szybkość - zdania są podzielone....
Jeszcze jedna rzecz, wykładowca stwierdził, że skompilowanego kodu w C/C++ nie da się zreversować, w Javie się da. Czy to jakaś pomyłka?
A 0xmarcin
twierdzi że dla Javy są głupionarzędzia które sprawiają że każdy patafian potrafi dekompilować (https://java-decompiler.github.io/). Są też dekompilatory do C/C++ tyle że tam jest to o wiele trudniejsze, bytecode generowany przez kompilator Javy nie podlega optymalizacji która potrafi bardzo zagmatwać kod. W Javie kod jest optymalizowany i kompilowany dopiero podczas uruchomienia programu. Ghidra to open source dekompilator do C i C++.
Zdaje się, że masz o tym spore pojęcie, ja nie mam doświadczenia i żadnych nawyków. Którego Asma Ty byś wybrał gdybyś zaczynał? NASM? Rozumiem, że to jest Asm który działa na Linuxie?
NASM jest OK i działa wszędzie. Różnice będą głównie w makrach i fajerwerkach. Same instrukcje będą wyglądać podobnie jak nie identycznie.
Pytanie nieco odstające od tematu, mam jakieś podstawy poruszania się po Linuxie. Uczę się z użyciem laptopa z i7 9750h oraz 32gb ramu, ssd, zastanawiam się nad wyborem głównego systemu. Linux i wirtualna maszyna z Windowsem czy Windows i wirtualka z Linuxem? Która opcja może być lepsza na studiach? Praktycznie. Bo nie jestem jakoś przyzwyczajony ani do tego, ani do tego.
Do security Kali Linux na VMce. Możesz też zrobić sobie dual boot'a na oba systemy...