Введение в крэкинг с нуля, используя OllyDbg - Глава 27

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

AnGel

Администратор
Команда форума

AnGel

Администратор
Команда форума
27 Авг 2015
3,411
2,025
Продолжаем с Visual Basic'ом

Ок, продолжаем с Visual Basic’ом. Здесь у нас крэкми, в котором нужно избавиться от наг-окошка. Я это сделаю это тем способом, который подойдёт для данного конкретного случая (мне нравится размышлять и пробовать новое), но конечно, используя OllyDbg, специально заточенный для VB, тот же, что и в прошлой главе. Потом мы рассмотрим механический способ, позволяющий сэкономить время. Можно было бы сразу дать его, но я считаю, что очень важно самому попытаться это сделать, чтобы понять как его работает, поэтому сначала рассмотрим мой способ снятия нага, а потом – механический способ, потому что вы должны знать и уметь применять оба.

Killme – это крэкми, которое мы будем изучать. В нём нет крэкми, а есть только назойливое наг-окошко, появляющееся при запуске программы и которое нужно убрать.

Если запустим крэкми в OllyDbg, то увидим наг-окошко.

50c2f11dd9d3b764036fb51a8e222043.png

Видим, что есть недоступное для нажатия окошко и таймер от пяти до нуля, и когда он становится равным нулю, то кнопку CONTINUE становится возможным нажать.

7a10fbcb1cecea053eed5274533d520d.png

Появляется указанное приложение, которое должно запускать сразу без каких-либо нагов. Изучим немного о том, как работает крэкми, разумеется, с помощью OllyDbg.

Первое побеждение, возникающее при исследовании программы с наг-окном — это посмотреть JMP-переходы, ведущие в разные части программы.

d19e3a137010b0986ca662b526cc3e5e.png

Запускаем программу и нажимаем F9.

7999d0cb197adee59b7918ac98a7e2a7.png

Указанное время прошло и кнопка CONTINUE становится доступной для нажатия.

Знаем, что при закрытии нага осуществляется проход через JMP в секции кода, поэтому устанавливаем BPM ON ACCESS в указанной секции (что в реальности будет BPM ON EXECUTION) и нажимаем кнопку CONTINUE.

fe76f687f92a074b5419abe77b97e1a4.png

f62a87669c1507be6c46658668f8a9c1.png

Останавливаемся здесь.

649a9c85b02e38ca79362033d9d0ddf9.png

То есть видим, что собственно программа начинает выполнение в 40D090, то есть мы видим JMP-переход на 40D090, где начинается указанная часть и видим остальные JMP на разные части программы. Устанавливаем BP на все эти JMP, чтобы куда и в каком случае они ведут.

f69c6b7d7783dc3911ad01b9d20209ed.png

Перезапускаем программу.

1e3a98ca093d878b800a7d973ec995b1.png

Видим, что после выхода из нага останавливаемся здесь. Есть большой соблазн поменять JMP на JMP 409090, чтобы происходил прямой переход на программу, но это вызывет ошибку и запуска не происходит, так что опять делаем RUN.

5e972bd46c17900660605e3a90bc4865.png

Видим, что останавливаемся на следующем JMP и если нажмём RUN снова:

6a993672fe888cbcb8d5e411b27c6b23.png

Несколько секунд и останавливаемся снова, и так – 5 раз, что говорит мне о том, что в этой процедуре содержится таймер.

Оттрасируем эту процедуру и посмотрим, что в ней находится.

ef3a07e2f247c6c8472f81643e8d5951.png

Ничего хорошего, продолжаем трассировать с помощью F8.

Доходим до каких-то условных переходов. Можно посмотреть, что произойдёт, если заменим их на обратные: перестанет ли работать таймер и станет ли доступной для нажатия кнопка. Попытаемся выяснить, для чего они служат.

0577e4977f1ba89bbad011ae1db9d277.png

Это сравнение, использующее плавающую точку, пока не знаем, для чего она, так что менять переходы на обратные даст нам не очень много.

05ce3365f180a47c0f28df6fe4c48da6.png

Видим, что в первые проходы здесь происходил переход, а в последний раз – нет, делаем вывод, что это и есть сравнение таймера, которое заканчивает работу, когда достигает нуля. Забиваем условный переход NOP’ами и смотрим, что произойдёт.

77fa8e75cb209391b455d7e099e6eb35.png

И нажимаем RUN.

94ad062d419d554b00dea31fe1a251bf.png

Видим, что попали в цель, изменили условный переход, прервав тем самым счёт таймера и сделав доступной кнопку CONTINUE, так что пока что нам подойдёт этот вариант. Теперь надо добиться, чтобы кнопка была доступна после возврата из этой процедуры, нужно, чтобы происходил переход в начало программы. Перезапустим программу.

Идём к строке, которую забиваем NOP’ами до запуска чего бы то ни было.

b156520c1a9fb44a1759d0d99fb4889c.png

0ae348b6ae2796065d4dea39eb35c1c3.png

Убираем все BP и ставим один сюда. Теперь делаем RUN.

bde434c46a6baab22c702fedb6f6d3bf.png

Останавливаемся здесь и трассируем, чтобы посмотреть, где завершается процедура и происходит возврат в библиотеку Visual Basic’а.

3cc5744a374814b2cfa031d6f33da09f.png

Видим, что дошли до RETN, но переходит не в DLL VB, а продолжаем с 40d714.

Продолжаем трассировку.

3f9b6a7d3413ffb01cd4877744789e2b.png

Здесь видим RETN, который, согласно пояснению, производит возврат в DLL Visual Basic’а, поскольку тут уже всё подготовлено для запуска программы, так что можем попытаться изменить этот RETN 4 на переход в начало программы. Смотрим.

4ffb0215a533cc2986a93db27bcecbe4.png

Прыгаем сюда, поскольку здесь достаточно места, чтобы написать всё, что нам нужно, а затем переходим на 40d090, откуда начинается программа.

089afc06fe7d88391a2ebb3e8d7a49f8.png

Пробуем, запустится ли. Делаем RUN.

2bb0a21681ae4cb9b8efcc79326d1610.png

Можем сохранить эти изменения, начальные NOP’ы и эти два перехода.

7dbf96506aff0ef5e10c9e3f76905ffd.png

Нажимаем правую кнопку мыши – COPY TO EXECUTABLE – ALL MODIFICATION и сохраняем всё, что изменили.

25f0f46f2d3ecef287cbfb3c1566be1d.png

Нажимаем COPY ALL.

894576f5a90fc3b611b14ebbd1aa5780.png

Ahora click derecho SAVE FILE

Теперь правая кнопка мыши – SAVE FILE.

6bd9ba26902cc518a97f6038f34700cf.png

Ок, теперь мы гораздо ближе к решению. При запуске наг-окошко появляется и после нескольких секунд исчезает, так что снова устанавливаем BPX на эти JMP-переходы.

639a6c8773da80f4be86ce6b7917f986.png

Делаем RUN.

037dead4f0a73c08645a608ac2152d43.png

Видим, что сначала происходит остановка на том переходе, который создает наг-окошко (404b7a), а спустя нескольких секунд происходит закрытие окошка и остановка на 404b87, после чего сразу запускается программа благодаря нашему патчу, так что нам нужно изменить переход, который создаёт наг-окно, чтобы сначала выполнялась пропатченная нами процедура, а затем сразу запускалась сама программа.

a63c3028c1da4c93e05ca79ce40371f3.png

Забиваем переход, который создаёт наг-окно, и идём сразу туда, где инициализируется таймер и начинается программа. Смотрим, что получилось, нажав F9.

af9bb95e7294f9e62ce2172cb1ab5df5.png

Сохраняем изменения и пробуем ещё раз.

f6ccb607502bdee0f8b7e09a3af2ae35.png

Происходит «чистый» запуск без каких-либо всплывающих окон – чистый как слеза младенца.

Метод 4c – это механический метод, который очень полезен, чтобы сделать это быстро и просто, и основывается на знании того, как устроен VB-файл.

Посмотрим на точку входа:

4efa2bd42ac330d8310d3cfa094ae427.png

Видим, что программы, написанные на VB начинаются с PUSH и CALL (если вам они не встретились, значит, что exe-файл был изменён, тогда необходимо найти PUSH и записать адрес, который кладётся в стек, в данном случае 40436C).

065dc824c197cec8a2c4517735412c34.png

Как видим, это адрес VB-заголовка.

К этому адресу необходимо прибавить 4C.

40436c + 4c

2054cba90a690fbeebc407551783c720.png

Это 4043b8.

b3792e8e91cd434d5a43c88915aa6303.png

Вот он, теперь ищем адрес, который здесь лежит – это 4044c0.

7849cb35d6b7a254c40799e17fc0ece4.png

Находим данный адрес в DUMP’е.

be4530b1e4e4666aa1384be1ae8797a7.png

Видим похожие элементы, каждый из которых соответствует какой-то форме (FORM). Двадцать четвёртый байт каждого из этих элементов – это порядок, в котором формы должны появляться. Смотрим:

40440c +24=404430

874608338abf6071f265e1fcaef8ea92.png

Здесь находится 00, то есть эта форма будет появляться первой, а 01 означает, что это вторая, так что можем изменить порядок.

86176166d720f48d8a96c692af34dace.png

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

3660dbb488835336608ef2e0c4746d25.png

Вот мы и решили крэкми с помощью метода 4c, конечно он гораздо легче и быстрее, но всегда полезно понимать как программа работает и сражаться с ней, поэтому я показал вам оба метода, так как автоматический метод подойдёт не во всех случаях, и придётся исследовать программу глубже.

К этой главе прилагаются два крэкми – один простой и один посложнее, посмотрите, сможете ли вы найти серийные номера, избавиться от наг-окон и так далее. В следующей главе мы их решим.

Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
 

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя