Z czego uczyć się Reverse Engineering'u? Nie znalazlem żadnych książek, a materiałów na ten temat jest niewiele. Czytałem, że musze mieć dużą wiedze w programowaniu, ale chciałbym troche poczytać poradnikow, książek na ten temat
Najpierw nauka asemblera, potem szukaj CrackMe.
Ewentualnie: Google twoim przyjacielem :]
Słyszałem, że assambler w porównaniu do innych języków jest trudny. Czy to prawda?
adameaa napisał(a):
Słyszałem, że assambler w porównaniu do innych języków jest trudny. Czy to prawda?
Jego składnia jest bardzo prosta.
"Reverse Engineering for Beginners" free book
http://beginners.re/
adameaa napisał(a):
Słyszałem, że assambler w porównaniu do innych języków jest trudny. Czy to prawda?
Jako język nie. Język jest właściwie banalnie prosty. Problem w tym że napisanie czegoś większego w asemblerze / analiza wiekszego kawałku kodu jest dość trudna bo kod jest bardzo mocno uzalezniony od tego gdzie i kiedy jest wywołany i jego efekty mogą być diametralnie różne. Dlatego zarówno pisząc jak i czytając kod asemblera trzeba mieć cały czas w głowie stos wywołań, stan rejestrów, stan pamięci etc. Tam nawet głupie wczytanie liczby z klawiatury to będzie kilkanaście linijek kodu.
Jeśli chodzi o naukę RE to zacznij od nauki asemblera :)
Tam nawet głupie wczytanie liczby z klawiatury to będzie kilkanaście linijek kodu.
Czy tylko tam?
Java:
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
int i = sc.nextInt();
}
4 linie! Co prawda mniej, niż "kilkanaście", ale zawsze coś :)
E tam, zawsze mozna uzyc scanfa i wychodzi pare linijek tylko.
section .data
fmt: db "%d", 0
fmt2: db "Podales liczbe: %d", 0x0A, 0
section .text
global main
extern scanf
extern printf
main:
push ebp
mov ebp, esp
sub esp, 4
lea eax, [esp - 4]
push eax
push fmt
call scanf
add esp, 8
mov eax, [esp - 4]
push eax
push fmt2
call printf
add esp, 8
mov esp, ebp
pop ebp
ret
Nie zapominajmy także o tutkach Leny ;).