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

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

AnGel

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

AnGel

Администратор
Команда форума
27 Авг 2015
3,411
2,025
В этой главе мы рассмотрим распакуй-меня, сделанном с помощью упаковщика, который сложно победить в OllyDbg, так как в нём есть одна часть, которая не работает в Олли и выдаёт ошибку. Но мы всё равно будем использовать OllyDbg, несмотря ни на что. Мы могли бы использовать другой отладчик, но ведь это же «Введение в крэкинг с помощью OllyDbg», хе-хе.

Так что даже с распухшими головами мы будем использовать OllyDbg вопреки всему. Распакуй-меня идёт вместе со статьёй, и он кажется реально противоОллиным. Запустим его без отладчика.

9287fc0963062b1b2afa3cbdad9ecb45.png

efdfdbccec3bf6176413eacf4c7b039b.png

Вот в чём дело, когда он запущен, то пожирает 99% ресурсов моей машины. Давайте узнаем, делает ли он это для защиты или ещё почему.

Если хотим приаттачиться к нему, то нужно пойти в FILE-ATTACH и поискать процесс.

0a2ffb810d387642c46d5c19e0915b7a.png

ac3a472a20755fbae4ecb01c140f99e0.png

И не забудьте приаттачиться.

Если откроем в Ollydbg, пропатченной для поиска OEP, которую использовали в прошлых главах:

6017a77287721cea39c753171a0a34be.png

Если нажмём кнопку подтверждения:

8d517c2528799fa8d453b5c0ba7a2bc6.png

И если сделаем RUN:

94b7fbacbcba194a801cf206c86a371d.png

Перезапускаем и снова идём к SYSTEM STARTUP BREAKPOINT, а когда останавливаемся, то идём в окно «M».

1995f3a9fdadaf2fa8eaf0b72f85d2cb.png

Видим, что тут есть одна секция, которая является результатом известной ошибки, когда меняется RVA и размеры в заголовке файла. Пока что установим BPM ON ACCESS на указанной секции. Помним, что эта OllyDbg – особенная, и останавливаемся только на выполнении кода, но не тогда, когда он читается или записывается.

a4394c9ccc7521c845ccfc1711f25081.png

122f2ca9455db00617c35b6392150aeb.png

Теперь снимаем BPM и делаем RUN.

9e3cfab3df27019806d3e9aaa817a7b3.png

Ок, смотрим в заголовке значения RVA и размеров.

a19e8a6c27c468da37a0205773486e17.png

8fce81b679ce6e43d8263ae3786ecd7d.png

Теперь идём вниз, пока не найдём значение.

2bb08f482b18bf99ac1b82e1366872ba.png

Вот это значение, которое должно быть равно 10 в шестнадцатеричной системе. Посмотрим, что будет, если мы его изменим.

cd3e45e8b79697a54acc6d88ace5514f.png

Пытаемся сохранить изменения.

046b59cc2aa287cbfb94e6b2e05a837a.png

Грр… Попробуем изменить в шестнадцатеричном редакторе.

df00d542cb4483b8a929a707a32f7c82.png

Меняем на 10.

0f091f88f7a18afec4e240345bd0cbe5.png

Теперь сохраняем изменения.

cdcff954da04cc2705016887486c311f.png

Сохраняем под другим именем.

d0d5f5ec512bbef816d6f95706a10878.png

Видим, что при открытии в Ollydbg происходит остановка на точке входа (как и должно быть). Починка файла с помощью данного приёма была правильной. Теперь делаем RUN.

a6a8fc3b474bdb43af48049c139ea510.png

ГРРРР… Снова ошибка. Теперь, когда находимся на точке входа, изменим в памяти значения RVA и размеров на те, что были сначала. Это необходимо для правильной распаковки.

171c4aa950985d04ffd53e49d62da20f.png

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

804dc0fe1ccc77faa6195c4b1c771b13.png

Значение установили, теперь делаем RUN.

1970fc1ed9b223b4b004ac01fbc401e7.png

Очевидно, что какая-то часть кода не пролезает через OllyDbg, пробуем оттрассировать, но не встречаем ничего странного, доходим до точки, где совершается переход на несуществующую секцию и до свидания. В OllyDbg не выполняется.

Мы хотим во что бы то ни стало показать методы, которые обычно используются в таких случаях. Здесь нам понадобится что необычное, для этого требуется вдохновение. Отойдём ненадолго, подумаем, что можно придумать такого неожиданного.

ДУМАЕМ

ДУМАЕМ

ДУМАЕМ

хе-хе

ДУМАЕМ ЕЩЁ

Хорошо, я покажу все возможности. Следующий способ мне не помог (но вам нужно быть знакомыми с этими методами, так как часто они работают).

5111038fc7c40717442c6f800163c38b.png

Открываем PARCHEADO 5 и устанавливаем его как JUST IN TIME DEBUGGER, то есть когда программа вызывает ошибку, отладчик автоматом подсоединяется к ней.

31ed47a36dd83f8b0a3af0eb57a27ac6.png

d6b65701b9275fbb84544b848c8cd7da.png

Нажимаем эту кнопку, чтобы перевести OllyDbg в режим JIT. Когда закончим работать с OllyDbg, следует восстановить старый JIT-отладчик с помощью кнопки «RESTORE OLD JUST IN TIME DEBUGGER», иначе OllyDbg будет запускаться при каждой программной ошибке, а это весьма утомительно.

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

baed0b01d066e226a9ea401edcbbc7e9.png

У тех из нас, кто иногда использует LORD PE DELUXE в системном меню правой кнопки мыши есть опция «BREAK AND ENTER», которая устанавливает INT3 на точку входа программы, что приводит к ошибке и запуска JIT-отладчика, которая присоединяется к вызвавшему ошибку процессу. Пробуем.

c067b7566986f33023cb2a32658b2b34.png

279d935ac05cd22b842fe4c24907484c.png

Запускается OllyDbg и присоединяется к процессу. Видим INT3, установленный LordPE. Заменяем INT3 на PUSHAD, который должен быть здесь.

5c764e32d5760933c0c36d6ca6497c5d.png

Делаем RUN.

f825e793ed645609bdf07e7276dac44a.png

ГРРРРР, так как немного выполняется в OllyDbg, мы должны провести трассировку построчно и выяснить, что происходит, но по-правде, у меня нет никакого желания это делать, поэтому лучше ПОДУМАТЬ, ПОДУМАТЬ, ПОДУМАТЬ, хе-хе.

Всегда будем использовать исходный файл. Откроем его в PeEditor’е.

67645a6b807e6e304fb4d2ed033cce78.png

Теперь смотрим секции.

8669e152ca0c3f60d6d1aa8fa65eede6.png

С помощью PeEditor’а можно прекрасно посмотреть все секции.

Мы ничего не знаем о программе, но очень возможно, что в ней есть функциональность большинства других упаковщиков, которые распаковываются в секцию, начинающуюся с 401000, то есть ту, которая у нас здесь идёт первой, так как здесь не показывается заголовок. Что произойдёт, если изменим параметры доступа к какой-нибудь секции, убрав право на запись, и произойдёт попытка записи сюда? Произойдёт ошибка и откроется PARCHEADO 5, который установлен как JIT-отладчик, хе-хе, так ли это? Можем попробовать это на первой секции, но думаю, что после распаковки программа сохранить API-функции из IAT, и это может быть в следующей секции, поэтому попробуем сначала с ней, а потом, если ничего не выйдет, можем попровать с первой.

59f546e8acf363279e53a1931ecd8d4e.png

f1abdc3bae28121d581d5d7425563f3f.png

Открываем WIZARD, чтобы изменить параметры доступа к секции.

59f3f17f24108fe35a9885e4c5d1139b.png

Снимаем галочку с «writeable».

b27096090898031c5a5d6744c8d4ecb4.png

660dae75b536d99aa7b090cac921b2bc.png

Здесь показаны изменённые параметры секции. Отметим, что автор может оказаться куда умнее меня и несмотря на начальное состояние секции менять права доступа к ней на желамые во время выполнения с помощью API-функции VirtualProtect, но ладно, смотрим.

Запускается этот распакуй-меня, у которого мы изменили права доступа, после чего появляется пропатченный OllyDbg, установленный как JIT-отладчик.

7b3bcffde6cbaee361d3fe94a9992727.png

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

Теперь ,чтобы можно было продолжить выполнение, нужно вручную изменить права доступа к этой секции, чтобы в неё можно было писать. Нажимаем «M».

db2552ecbc23c5e083fb98558af85919.png



Неважно, что OllyDbg показывает нам только одну секцию. Делаем следующее: жмём на правую кнопку мыши и устанавливаем полный доступ, то есть «Full access».

b6b15741926beb2f07b198f92c97e993.png

Теперь пробуем выполнить инструкцию с помощью F7, посмотрим, нормально ли сохранится или снова выдаст ошибку.

f9f61c759c1336c4d1d684dde7ee4c7b.png

Видим, что сохранилось без каких-либо проблем, теперь запомним как располагаются секции в PeEditor'е, так как OllyDbg нам показывает эту информацию не очень хорошо.

0f3713cfaae6b38fcae2cb8f95278439.png

Видим, что первая секция занимает в памяти 1000 байт, так как VIRTUAL SIZE равен 1000, то есть располагается по адресам от 401000 до 402000. Следующая секция, права доступа к которой мы меняли, располагается с 402000 до 403000, хе-хе.

Если посмотрим, что находится в 401000, то увидим, что это распакованная программа.

72e34c67aae0704bdacc5d38a4437f0a.png

Так что, хотя не можем установить BPM на всю секцию с помощью карты памяти, так как OllyDbg показывает нам её неправильно, можем отметить в дампе байты с 401000 до 402000, то есть всю секцию, и установить на них BPM ON ACCESS, что по сути будет то же самое.

130d51046477c1b9021c61eb8c476939.png

Затушёвываем всё с 401000 до 402000 и устанавливаем туда BPM ON ACCESS.

ea176135d7b54765707ffab647db45f0.png

54763986d3b176394600dd9b1ec28bf9.png

Теперь делаем RUN.

b9599516b63d29829db2bf7b8c0cf342.png

Теперь останавливаемся на OEP, который располагается точно в 401000.

f793bffd9ac35b98499901cc4672ea9b.png

Ок, мы сделали самое сложное, теперь нужно сдампить программу.

26006f905d0745feefcb9cd3e98faf46.png

И сохраняем дам, теперь ищем IAT и данные для IMP REC'а.

Под OEP есть вызов одной API-функции.

3502d745a20f94a6099ecd64a831a725.png

И если сделаем FOLLOW, то это приведёт нас к переходам на API-функции.

3417b5584c290be201a4fee973eea6b5.png

Так что найти IAT очень просто, посмотрев какой-нибудь из этих переходов, например тот, который ведёт на GetModuleHandleA содержит значение из области 402000, так что оно относится к IAT.

f723e90f89cf1121802ef91d16507cf7.png

Эта IAT очень маленькая, так что начинается она в 402000, а заканчивается в 40201C, поэтому размер равен 1C. Открываем IMP REC и отнимаем от найденных адресов начала и конца базу образа, то есть 400000.

  • RVA или НАЧАЛО: 2000
  • SIZE: 1C
  • OEP: 1000
07cd0aa2acbb021be2348b6a49d00e41.png

Заполняем поля для OEP, RVA и SIZE, а затем нажимаем GET IMPORTS. Оно говрит нам, что всё «YES», хе-хе.

Пропускаем дамп через «FIX DUMP», и при запуске нам выдаётся ошибка.

22758a4b50ecfab2a9a51024cb86e4ac.png

Нам потребуется обработать его в LordPE c помощью «Rebuild PE».

2b3a5d072b931404848a9a5d59ecfb42.png

b03a1f94ea21b5057443282604deaa35.png

Запускаем, и прощай, упаковщик!

74253fd0d49ef09c70e4f6a3e826433f.png

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

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

О нас

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

    Dark-Time 2015 - 2022

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

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

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