Загрузка...

[Гайд] Ревёрсинг для чайников #2[By Grizzly]

Тема в разделе Уроки реверсинга создана пользователем Grizz1y 13 май 2021. (поднята 13 май 2021) 4466 просмотров

Загрузка...
  1. Grizz1y
    Grizz1y Автор темы 13 май 2021 В дом надо пускать только того, с кем ты его строишь 3939 9 окт 2020
    Всем привет!
    Запустил небольшой курс, как можно ревёрсить программы, в конце курса дойдём до самых сложных примеров, которые накрыты VMP и множеством других протекторов.
    Весь курс предназначен на нативные приложения, курс будет для "чайников" в плане ревёрс-инженерии, без знаний C/C++ будет очень тяжело для понимания
    Ну что же, начнём!
    Все программы взяты с crackmes.one (Не реклама)

    Очень необычный крякми!

    [IMG]
    Адрес точки входа: 000014A0
    Разрядность: x32
    Компилятор: GCC

    Очень интересная вещь, программа просит 2 ввода пароль и какой то комментарий
    Если вводить пароль до 5 символов, то сразу выдаёт ошибку о невалиде:
    [IMG]
    Если до 5 символов, то просит комментарий:
    [IMG]
    Открыв иду мы попадаем на точку входа, но там не то, что нам надо:
    [IMG]

    Ищем сегмент, связанный с вводом/выводом текста в консоль(оттуда можно будет найти алгоритм программы)
    жмём View -> Open Subviews -> Strings
    [IMG]
    Ида выдаст нам все строки, которая нашла:
    [IMG]
    2 раза жмём на "Enter the password:",у нас открывается сегмент .text, где идут все объявления операндов на следующий участок
    [IMG]

    Нажав на название операнда жмём X, чтобы посмотреть где он используется:
    [IMG]

    2 раза кликаем на предоставленный идой сегмент и попадаем туда, куда нам надо:
    [IMG]

    Немного мат.части, не замечаете ничего странного? (обвёл 2 участка, где вывод и ввод просит)
    [IMG]

    Нажав f5 получаем псевдокод, я его немного привёл в порядок:
    [IMG]
    После первого ввода у нас идёт сверка нашего пароля с текстом "stars" через strcmp, выше у нас обозначено, что ввод прочитает только 4 символа
    [IMG]

    Ввод второго комментария вообще ни на что не влияет, просто junk код, получается, что у нас сверяется 2 текста(вернее кол-во символов) пароль и stars,
    Но консоль не увидит ввод в 4+ символов, поэтому 4 == 5 никогда не случится.
    Нам надо просто пропатчить strcmp на scanf, так как он съесть всю строку
    [IMG]
    Можно было бы ещё просто изменить логику ветвления, но мы это разбирали это в прошлом уроке

    Всем удачи в начинаниях! Всем пока!
    Предыдущий урок: https://zelenka.guru/threads/2550799/



     
  2. CoderVir
    Да. реверс натива будет по интереснее реверса .NET. Интересно.
     
  3. CryptService_inactive4049110
    CryptService_inactive4049110 13 май 2021 Заблокирован(а) 159 31 мар 2021
    Нихуя не понял. Но думаю че-то интересно на языке реверсеров :2011_like:
     
  4. смитанка
    смитанка 13 май 2021 скам на чувства 104 17 фев 2020
    Что такой вашь реверс ваще:wut:
     
    1. смитанка
      @реверсер, приф как дела ты кто как дела
  5. PraGuy
    PraGuy 13 май 2021 Заблокирован(а) 0 15 дек 2020
    ну почему Гриззли такой гений? Горжусь от чистого сердца
     
  6. gpt
    миша все хуйня давай по новой
     
  7. Kowhncha1337
    Kowhncha1337 2 авг 2022 1 26 июл 2019
    имба гайды
     
  8. 414vm14
    414vm14 24 сен 2022 0 24 сен 2022
    Чуть-чуть добавлю от себя совсем новичкам которым нужна чуточки помощи.

    strcmp -> это функция сравнивания двух строк. Например(не целый код),

    char ia[] ="reverser"; //загаданное слово
    char answer[80]; // строка-ответ
    do
    {
    std::cout <<"Угадайте мое любимое слово! >> ";
    std::cin >> answer; // строка-ответ
    }while (strcmp(fruit, answer) != 0); // пока слвоо не отгадано, цикл будет работать

    std::cout <<"Правильный ответ!n";
    return 0;


    scanf -> вывод, в коде выше указано
    %[] Просматривает набор символов
    так вот почему программа и считала цифры!
     
    24 сен 2022 Изменено
Top