Najlepsza odpowiedź
Jedna z największych (jeśli nie największa) witryny zawierająca wyzwania związane z inżynierią odwrotnego kodu to Crackmes.de .
Ta witryna jest niesamowita, ponieważ:
- To Bezpłatne .
- Wyzwania są podzielone na kategorie według:
- Trudność: Masz 9 poziomów trudności, od bardzo łatwych do najtrudniejszych.
- Platforma: Chcesz poćwiczyć Windows, Linux itp … odwracania umiejętności?
- Język: Chcesz rozwiązać crackme napisane w jakim języku? Tak, jeśli masz doświadczenie w inżynierii kodu wstecznego zauważysz, że w większości przypadków inżynieria wsteczna pliku wykonywalnego napisanego w Delphi nie jest dokładnie tym samym, co inny plik wykonywalny napisany w języku asemblera.
- Rozwiązane Crackmes: Jeśli zaczynasz swoją przygodę z inżynierią wsteczną, możesz poszukać łatwych do rozwiązania cracków, aby porównać swoją metodę crackowania z crackerami, którzy rozwiązali to wcześniej. naprawdę skarb do nauki i rozwijania umiejętności myślenia i rozwiązywania problemów.
Odpowiedź
Zakładam, że nie jesteś ekspertem w dziedzinie informatyki i programowania na niskim poziomie więc odpowiedź brzmi: tak, to jest bardzo trudne.
Istnieją dwa „poziomy” języków programowania; Wysoki i niski. Wysokie języki programowania są ogólnie dość łatwe w użyciu i nauce. Są czytelne dla człowieka i muszą być „przetłumaczone” przez maszyny, aby mogły zostać wykonane. Przykłady języków programowania wysokiego poziomu to Javascript, R, Python, Java i wiele innych.
Języki programowania niskiego poziomu są trudniejsze do nauczenia. Potrzebują lepszego zrozumienia sposobu działania pamięci i procesów komputera. Najlepszym i najbardziej znanym przykładem języka niskiego poziomu jest C. C jest bardzo potężny i raczej trudny do nauczenia. Ale jest o wiele bardziej zrozumiały dla maszyny niż języki programowania wysokiego poziomu. Język programowania dość niskiego poziomu to Assembly. Kod asemblera istnieje w różnych typach, ale wszystkie są skomplikowane, denerwujące i bardzo trudne do odczytania. Kod asemblera jest jednak główną częścią inżynierii odwrotnej. Jeśli coś poddajesz inżynierii wstecznej, przeglądasz / zmieniasz kod asemblera programu.
Musisz zrozumieć, że asembler jest zasadniczo językiem ojczystym. Jeśli piszesz program, zawsze jest z nim kod asemblera. Albo twój kompilator tłumaczy twój kod na asembler, albo interpreter robi to za ciebie w czasie rzeczywistym.
Wszystko to w zasadzie oznacza, że stanie się prawdziwym profesjonalnym inżynierem wstecznym jest łatwe. Wszystko, co naprawdę musisz zrobić, to biegle posługiwać się różnymi typami asemblera i nauczyć się programować w C. Jedynym problemem jest to, że te dwie rzeczy są trudne do wykonania.
Powodzenia!