Загрузка...

[Guide] Reversing for dummies #2[By Grizzly]

Thread in Reversing Lessons created by Grizz1y May 13, 2021. (bumped May 13, 2021) 5,007 views

  1. Grizz1y
    Grizz1y Topic starter May 13, 2021 В дом надо пускать только того, с кем ты его строишь 4,277 Oct 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
    Нихуя не понял. Но думаю че-то интересно на языке реверсеров :2011_like:
     
  4. смитанка
    смитанка May 13, 2021 скам на чувства 316 Feb 17, 2020
    Что такой вашь реверс ваще:wut:
     
    1. смитанка
      @реверсер, приф как дела ты кто как дела
  5. PraGuy
    ну почему Гриззли такой гений? Горжусь от чистого сердца
     
  6. temp
    миша все хуйня давай по новой
     
  7. Kowhncha1337
    имба гайды
     
  8. 414vm14
    414vm14 Sep 24, 2022 0 Sep 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 -> вывод, в коде выше указано
    %[] Просматривает набор символов
    так вот почему программа и считала цифры!
     
Loading...