Пътят на превръщането в обратен инженер?

Господа, тази година отивам в колеж като програмист.

Преди пишех на python, много ми харесваше, но сега е време да избера професия, избрах програмист, реших да започна да уча нови езици.
Наскоро опитах това, което децата вероятно правеха през 90-те. „Обърна играта“ и написах малка DLL, така че те автоматично да добавят касети на всеки 50 секунди.
Нямаше параклис за изненада и удоволствие, когато работеше, а когато не работеше, беше още по-интересно.

Разбрах, че така наречената „способност да ровя в чужд код“ е моя.

Чух за посоката на реверсивния инженер дълго време и сега искам да попитам всъщност.
Откъде да започна?
Какво да преподавам?
Какво да прочетете?
Не е необходимо да говорим по някакви трудни теми сега.

Е, най-известният е може би обратното на всички видове вируси, така че има конкретен пример, нека вземем тази посока.
Да кажем какво трябва да знаете, за да влезете в лабораторията на Kaspersky?
Като начало, за предпочитане на руски, за да въведете темата на родния си език и да не се бъркате в термините, тогава можете на английски.

Ще се радвам да имам информация откъде да започна. Е, най-очевидният съвет не е необходимо да се съветва - „научете алгоритми, научете език за програмиране, научете матан“.

Рецептата е безобразно проста:
ако ти искам да разберете всяка функция, изберете всяка нова програма, анализирайте формата на нейните файлове, опитайте се да хакнете всяка нова игра, напишете бот за нея, изневерете и т.н. Така че това е ваше, просто продължете да правите това, което правите.

Ако не, никакви книги няма да помогнат. Този бизнес изисква страст и голямо търпение.

Никой не се нуждае от Матан в обратна посока. Изисква се максимално решение на системи с линейни уравнения.
По-важно е да мислите извън кутията, способността да груба сила много възможности и подходи в главата. За да направите това, трябва да познавате технологията. Тоест буквално трябва да знаете колкото се може повече. Колкото повече знаете, толкова по-бързо проблемът ще бъде решен. Това са напълно различни области: ОС, мрежи, методи за криптиране, компресиране, хеширане, сериализация; познаване на бази данни и техните езици за заявки; познания на компилаторите по отношение на начина, по който генерират код; познаване на изпълнението на една и съща стандартна библиотека, разбиране как един и същ код се компилира от различни компилатори, разбиране как работят интерпретаторите на байт кодове, виртуални машини и т.н.

Също така трябва да решите какво искате да обърнете. Зловредният софтуер и приложенията се различават леко. В зловредния софтуер трябва да знаете повече нестандартни неща. Различни опции за отстраняване на грешки, скриване на активност, грешки в операционната система, антивирусно поведение. Злонамереният софтуер може да бъде например ботнет. Ботнетите обикновено имат команден сървър, което е доста трудно да се разбере, той се променя динамично, някак си не позволява да бъде открит. За да направите това, трябва да знаете как работи Интернет, как работи dns, да разберете мрежовите протоколи.

Накратко, за обръщач трябва да се научите всичко. Не е нужно да филтрирате определени технологии, имате нужда от всички тях, без изключение. За всичко, което е създадено за изчислителни системи се използва в тях, и съответно вие трябва да знаете, да се обърне.

Между другото, почти забравих.

Най-добрата книга на реверс на руски език.

И тогава има класическия курс на статии от Рикардо Нарвая: „Въведение в крекинга от нулата с помощта на OllyDbg“. Потърси го в Гугъл. Ако овладеете книгата на Юричев и този курс, можете спокойно да интервюирате в Kaspersky. Въпреки че, повярвайте ми, има неща, по-интересни от Kaspersky.