Wpis z mikrobloga

Mirki,

Od czego zacząć nauke asemblera? Chciałbym zagłębić się w code reverse engeniring, do tego wymagany jest assembler podstawowy czy bardziej zaawansowany? Bardzo bym prosił Was o jakieś polecane źródła wiedzy, bo ja widziałem kilka materiałów które nie były do końca zgodne merytorycznie (np w jednym byla informacja ze eip wskazuje na obecna instrukcje, a w innym że na kolejną do wykonania).

Wołam @Gynvael jako autorytet w tej dziedzinie

#it #programowanie
  • 11
@371t3:
Do podstaw RE wymagane są podstawy assemblera - resztę się doucza w trakcie (btw, nie wiem czy widziałeś ten post: https://gynvael.coldwind.pl/?id=664).

Co do źródeł wiedzy, to trudna sprawa. Podpowiem tylko, że raczej powinieneś zacząć od 64-bitowego assemblera na x86 (czyli AMD64 aka x86_64, nie mylić z IA64), najlepiej w składni Intela. Ostatecznie, jeśli nie masz nic przeciwko douczeniu się potem różnic, możesz pomyśleć o 32-bitowym assemblerze x86, chociaż to raczej
@Darknov: I to jest bardzo dobre pytanie, żeby zadać prowadzącym. Osobiście nie widzę żadnego powodu, żeby na początek uczyć się 16-bitowego x86. Gdyby to był 32-/64-bitowy x86, albo ARM32/64, albo chociażby 8051, AVR czy MIPS to bym rozumiał, ale 16-bitowy x86... Nie dość, że ten tryb jest sporo trudniejszy niż 32-bity (mniej kodowań instrukcji, ciągła zabawa z segmentami, przestarzałe API z BIOS/DOS), to jeszcze prawie do niczego się go obecnie nie
@Gynvael: u mnie na studiach informatycznych (start ok. 2007 roku) ASM był tylko na przedmiocie o nazwie "Architektura komputerów" (labolatoria), na zaliczenie były do napisania jakieś proste programy w x86-16 typu kalkulator. Ponieważ ja jarałem się kiedyś ASM w czasach DOS/Win9x i znałem bardzo dobrze x86-16 już od kilku lat bo bawiłem się nawet packerami/crypterami i wirusami (wtedy były to fajne wirusy, nie to co teraz :P) oraz innymi takimi dziwnymi
@Darknov: @Gynvael: używa się x86 (a nie np avra czy arma) bo raczej wciąż najwięcej ludzi w domu na lapku czy pc-cie ma x86. Inne procki musieliby kupić, podłączyć, kupić debugger itd. Z x86 łatwiej się bawić. Do tego przez resztę studiów ogólnie więcej się pisze programów na ciscowe x86 a nie na risci. A przynajmniej u mnie tak było.
A czemu 16-bit - nie wiem jak teraz ale jak
@yuim: Trochę odwrócę to co napisałeś - poza *nixami nigdzie się nie używa składni AT&T, a nawet na narzędziach *nixowych jest tak jak napisałeś, tj. AT&T jest domyślne, ale Intel jest nadal obsługiwane (-masm=intel w GCC, -M intel w objdump, set disassembly-flavor intel w gdb, etc).
W RE używa się prawie tylko Intela, pod Windowsem wstawki domyślnie (Visual C++) się również pisze w składni Intela, większość asemblerów (tj. kompilatorów języka asembler)