DollyPapper
@DollyPapper

Путь становления Реверс инженера?

Господа,поступаю в этом году в институт на программиста.

spoiler
Писал раньше на python,очень нравилось,но вот пришло время выбирать профессию,выбрал программиста,решил начать изучать новые языки.
Конкретно недавно попробовал, то, чем наверное занимались дети в 90-х."Зареверсил игру", и написал небольшую DLL,чтобы они автоматически добавляла патроны каждые 50 секунд.
Удивлению и наслаждению не было придела, когда оно заработало, а когда не работало было еще интересней.

Я понял, что так называемое "умение копаться в чужом коде", это мое.

Слышал о направлении реверс инженер уже давно, и вот хочу спросить собственно.
С чего начать?
Что учить?
Что почитать?
Не обязательно говорить сейчас какие то сложные темы.

Ну самое известное это наверное реверс вирусов всяких,чтобы был конкретный пример,возьмем это направление.
Допустим,что нужно знать,чтобы попасть в лабораторию касперского?
Для начала желательно на русском, чтобы въехать в тему на родном языке и не путаться в терминах, дальше можно на английском.

Буду рад любой информации откуда начинать. Ну и самые очевидные советы не нужно советовать - "учи алгоритмы, учи ЯП, учи матан".
  • Вопрос задан
  • 3557 просмотров
Решения вопроса 1
TrueBers
@TrueBers
Гуглю за еду
Рецепт прост до безобразия:
Если вам хочется разбираться в каждой фиче, каждую новую программку ковырять, разбирать формат её файлов, каждую новую игру пытаться взломать, написать для неё бота, чит и т. п. Значит это ваше, просто продолжайте делать то, что делаете.

Если нет, то никакие книги не помогут. В этом деле нужна страсть и огромное терпение.

Матан никому не нужен в реверсе. Максимум решение систем линейных уравнений понадобится.
Важно скорее нестандартное мышление, умение брутфорсить в голове множество вариантов, подходов. Для этого нужно знать технологии. Т. е. буквально, знать нужно как можно больше. Чем больше вы знаете, тем быстрее будет решена задача. Это абсолютно различные области: ОС, сети, способы шифрования, компрессии, хеширования, сериализации; знание баз данных и их языков запросов; знание компиляторов в плане, как они генерируют код; знание реализации той же стандартной библиотеки, понимание как компилируется один и тот же код разными компиляторами, понимать, как работают интерпретаторы байткода, виртуальные машины, и т. п.

Это, что касается общих технологий. А есть ещё такая штука, как архитектурные паттерны. Они обычно применяются в прикладных приложениях, малварь редко такое применяет. Т. е. нужно видеть в коде, например, паттерн Event, различные варианты паттерна MVC, и т. п. Например, вы реверсите продукт на Qt. Чтобы его понимать, вам нужно знать... Qt, и уметь на нём разрабатывать, читать его исходный код, знать что такое метаобъекты, как они хранятся, используются, вызываются. А если, внезапно, оно юзает что-то интерпретируемое, типа питона или луа, то вам, мало того, что нужно знать сами языки, так ещё и реализацию их интерпретаторов. А ещё бывает JIT...

Нужно ещё решить, что вы хотите реверсить. Малварь и прикладные приложения немного расходятся. В малвари нужно больше знать нестандартных вещей. Различных вариантов антиотладки, скрытия активности, багов операционной системы, поведения антивирусов. Малварь может быть ботнетом, например. Ботнеты обычно имеют командный сервер, который довольно трудно вычислить, он меняется динамически, как-то не даёт себя обнаружить. Для этого нужно знать как устроен интернет, как работает dns, разбираться в сетевых протоколах.

Короче, для реверсера нужно учить всё. Не нужно фильровать определённые технологии, вам понадобятся все они без исключения. Ибо всё, что было создано для вычислительных систем, в них используется, а соответственно, вам придётся это знать, чтобы реверсить.

Кстати, чуть не забыл.

Самая лучшая книга по реверсу на русском.

И ещё есть классический курс статей от Рикардо Нарвахи: «Введение в крэкинг с нуля, используя OllyDbg». Погуглите его. Если осилите книгу Юричева и этот курс, то сможете спокойно собеседоваться в Касперский. Хотя, поверьте, есть вещи поинтереснее касперского.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
15432
@15432
Системный программист ^_^
Заглядывал в ЛК на собеседование по реверсу, дали нестандартную логическую задачку, потом попросили рассказать что делает вирусня (дали ноут с открытой IDA). Побеседовали чуток про работу, в итоге они меня отговорили :) рассказали, что реверсить сотни вирусней, присылаемых юзерами - дело скучное и надолго в "дятлах" не задерживаются.
Если вы в Москве, пишите ;)
Ответ написан
sim3x
@sim3x
Для начала желательно на русском, чтобы въехать в тему на родном языке и не путаться в терминах, дальше можно на английском.
ошибочное мнение. Лучше почитать на английском и понимать, что есть что на самом деле, чем читать литературу, которую перевели люди не владеющие тематикой.

Если английски совсем 0 - сначала учить его

Допустим,что нужно знать,чтобы попасть в лабораторию касперского?
лк не верх еволюции. Скорее - входная ступень. Если вас действительно не воротит читать бинарник 40+ часов в неделю, то уже ето может дать работу

учи алгоритмы, учи ЯП
учите Си, учите инструментарий для дебага, учите средства для автоматизации своей работы
Матан в реверсе мало поможет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы