Информационная Безопасность. Аудит Безопасности


Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Взлом Демо-игр
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Взлом и безопасность / Программы RSS подписка на сообщения с форума Subscribe
Взлом программ. Кряки и серийники качаем тут

Новая тема Наиболее обсуждаемые темы Наиболее посещаемые темы
Поиск 
Период
Перейти

Просмотров - 6740
Взлом Демо-игр
Добавить этот топик в закладки »
RSS-лента ответов »Subscribe
ymnik!


Novice
# | Сообщение добавлено 27.06.2011 18:11:59
Прочитал статью снятие регистрационных защит на примере НО на практике большинство нормальных игр используют антиотладочную защиту. Когда я пытался запустить Звездный защитник 3 из OllyDbg он выдал ошибку Debugger detected. И вообще все игры которые я перепробывал в OllyDbg не запускаются. Зависают на одной строке F11,F9,F8,F7 ни чо не помогает ну не запускаются и все тут. Как будто там бесконечный цикл но это не так. Что делать?))) Помогите ПЛЗ)))
Сказать спасибо Ответить Цитировать

codemaster




Platinum Member
# | Сообщение добавлено 27.06.2011 18:29:42
Отредактировано 27.06.2011 18:31:43 by codemaster
Снятие антидамповой и антиотладочной защиты
 
        Очевидно, что если память доступна для чтения из одного процесса и недоступна из другого, то перехвачены API функции для работы с памятью. Начинаем смотреть код функции ReadProcessMemory из kernel32.dll. Как видно перехватов не наблюдается. Также их не наблюдается и в native api функции NtReadVirtualMemory. Далее уже ядро. Как управление попадает на соответствующую функцию в ядро WinNT хорошо описано во второй статье об упаковщиках на wasm.ru. Первое, куда стоит посмотреть, так это в system service table или короче sst - таблицу адресов функций ntoskrnl.exe. Для этого в архиве лежит утилита R0cmd.exe и драйвер. С её помощью можно дампить и загружать IDT, SST, SST shadow для ntoskrnl.exe и win32k.sys и вообще произвольные участки памяти в области ядра. Для определения перехвата можно сравнить два дампа sst - до запуска XProtector'а и после. Таблицы отличаются, значит XProtector контроллирует некоторые функции ntoskrnl. Чтобы выяснить, какие это функции, надо смещение отличающися элементов в дампе поделить на 4 и найти число в массиве Zw-функций из библиотеки ntdll.dll. В результате имеем список перехваченных функций:
NtAllocateVirtualMemory
NtCreateThread
NtQueryVirtualMemory
NtReadVirtualMemory
ZwTerminateProcess
NtWriteVirtualMemory
 
Содержание этих функций приводить нет смысла, там при попытке доступа из другого процесса к защищённой программе возвращается код ошибки. Также блокируется дамп с помощью удалённого треда(CreateRemoteThread). Но самое удивительное это то, что после в обработчике ZwTerminateProcess не восстанавливается ни sst ни idt. Вероятно протектор залез куда-то ещё, вероятно в планировщик потоков. Предоставляю проверить это тем, кто хорошо разбирается в ядре WinNT. Нас же здесь больше интересует снятие антидампа. Очевидно, чтобы его снять, достаточно подгрузить на место нормальную таблицу sst при помощи той же утилиты R0cmd. И теперь можно использовать такие утилиты, как PE Tools и ImpRec. Но вот нельзя пока использовать отладчик.
 
        R0cmd /viewidt:? - позволяет посмотреть IDT в текстовом виде. Сразу привлекают внимание вырубленные отладочные прерывания int1 и int3(их адрес стал 0FFFFFFFFh). Казалось бы всё просто, восстановил IDT да отлаживай, но ничего не выходит. При попытке восстановить IDT программа либо вырубается, либо IDT возвращается к исходному состоянию. Виной тому лишние потоки, порождённые протектором, которые и проверяют IDT. Но хотя саму защищённую программу отлаживать нельзя, но можно отлаживать другие программы. Как же это возможно? А вот как, при вызове int1 или int3 управление попадает на адрес 0FFFFFFFFh, памяти по этому адресу обычно нет, поэтому происходит исключение Page fault (#PF), обработчик которого тоже перехвачен. Понятно, что в нём и происходит обработка всяких отладочных действий пользователя. Стоит привести код его обработчика:
Text

 seg000:F8AB8000                 pushf
 seg000:F8AB8001                 pusha
 seg000:F8AB8002                 call    $+5
 seg000:F8AB8007                 pop     ebp
 seg000:F8AB8008                 sub     ebp, 1E09229h
 seg000:F8AB800E                 inc     dword ptr [ebp+1E0925Fh]
 seg000:F8AB8014                 cmp     dword ptr [ebp+1E0925Fh], 63h
 
  Переход выполнится при переполнении счётчика, в результате
  чего на место адресов int1/int3 в IDT запишутся 0FFFFFFFFh, это не особо интересно
 seg000:F8AB801B                 ja      loc_F8AB80B0
 
 seg000:F8AB8021
 seg000:F8AB8021 loc_F8AB8021:                           ; CODE XREF: sub_F8AB8000+128
 
  А вот то, что надо, сравнение EIP с 0FFFFFFFFh, значит идём по пореходу на F8AB8041
 seg000:F8AB8021                 mov     eax, [esp+28h]
 seg000:F8AB8025                 cmp     eax, 0FFFFFFFFh
 seg000:F8AB8028                 jz      short loc_F8AB8041
 
 seg000:F8AB8041 loc_F8AB8041:                           ; CODE XREF: sub_F8AB8000+28
 seg000:F8AB8041                 mov     eax, 1
 seg000:F8AB8046                 mov     ecx, eax
 seg000:F8AB8048                 or      eax, eax
 
  Ну нет, чтоб просто jmp написать ..
 seg000:F8AB804A                 jnz     loc_F8AB8138
 
 
 seg000:F8AB8138                 push    fs
 seg000:F8AB813A                 mov     eax, 30h ;селектор для регистра fs в ядре - 30h
 seg000:F8AB813F                 db      66h
 seg000:F8AB813F                 mov     fs, ax
 
  ;Получаем указатель на структуру KTHREAD(или ETHREAD)
 seg000:F8AB8142                 mov     eax, large fs:KPRCB.CurrentThread
 
  ;А это указатель на KPROCESS, он же указатель на объект процесса
 seg000:F8AB8148                 mov     eax, [eax+KTHREAD.ApcState.Process]
 seg000:F8AB814B                 pop     fs
 seg000:F8AB814D                 mov     ebx, eax
 seg000:F8AB814F                 and     ebx, 7FFFFFFFh
 
  ;Видимо по этому адресу или чуть дальше записывается указатель на объект
   защищённого XProtector'ом процесса, если он текущий, или константа 47616420h, если нет.
   Всё это вероятно происходит в коде переключения потоков
 seg000:F8AB8155                 mov     esi, 0F8AB6000h
 seg000:F8AB815A                 cmp     dword ptr [esi], 0
 seg000:F8AB815D                 jz      loc_F8AB8075
 seg000:F8AB8163
 seg000:F8AB8163 loc_F8AB8163:                           ; CODE XREF: sub_F8AB8000+17A
 seg000:F8AB8163                 add     esi, 4
 seg000:F8AB8166                 cmp     dword ptr [esi], 47616420h
 
  Ага, переход на вызов старого обработчика прерывания, если процесс не защищён.
 seg000:F8AB816C                 jz      short loc_F8AB8187
 seg000:F8AB816E                 cmp     [esi], eax
  А далее переходы не туда, куда надо, причём они выполняются, если
  #PF произошло в защищённом процессе
 seg000:F8AB8170                 jz      short loc_F8AB817C
 seg000:F8AB8172                 cmp     [esi], ebx
 seg000:F8AB8174                 jz      loc_F8AB8075
 seg000:F8AB817A                 jmp     short loc_F8AB8163
 

        Очевидно, что если пропатчить переход по адресу F8AB816C(Вообще то он может быть и другим, главное, что этот адрес высчитывается как #PF+16Ch. В программах, защищённых XProtector'ом 1.08 смещение будет 17A). Патчить ядро без специальных инструментов нельзя, но можно опять воспользоваться R0cmd. Для этого надо создать файл размером 1 байт и записать в него EB, а потом загрузить, используя команду /load. После восстановления sst и патча обработчика #PF становится возможна отладка с помощью Ring3 отладчиков, например Ollydbg. На softice рассчитывать не приходится, слишком уж много внимания уделили ему разработчики.
источник: http://cracklab.ru/art/xprot.php.
 
Сказать спасибо Ответить Цитировать

B3JIoMep




Platinum Member
# | Сообщение добавлено 27.06.2011 19:00:55
Вован снова грузит ответами :D
 
гений, миллиардер, плейбой, филантроп)0)
Сказать спасибо Ответить Цитировать

ymnik!


Novice
# | Сообщение добавлено 27.06.2011 19:16:19
Действительно... Спасибо) Буду разбираться... Начну с перечитывания этой статьи и гуглинья "прикольных" слов)))
Сказать спасибо Ответить Цитировать

codemaster




Platinum Member
# | Сообщение добавлено 27.06.2011 19:35:05
ymnik!

Действительно... Спасибо) Буду разбираться... Начну с перечитывания этой статьи и гуглинья "прикольных" слов)))
для спасибо есть кнопочка. удачи)
 
Сказать спасибо Ответить Цитировать


Только зарегистрированные пользователи могут оставлять сообщения в форуме

Зарегистрироваться *** Авторизоваться

 Последние новости и статьи  Последние сообщения с форумов
  • В darknet сливают данные 100 000 российских банковских карт
  • Вирус Escobar ворует коды двухфакторной аутентификации из Google ...
  • DeadBolt использует уязвимость, исправленную в декабре
  • Почти миллион WordPress-сайтов в опасности из-за уязвимости в поп...
  • Шифровальщик DeadBolt взломал 3600 NAS. Qnap устанавливает обновл...
  • Банковский троян Chaes устанавливает вредоносные расширения для C...
  • Взломана платформа Qubit Finance, хакеры похитили 80 млн долларов
  • Арест участников REvil взволновал других преступников
  • Обнаружена malware MoonBounce, внедряющаяся в UEFI
  • Администратор кардерского форума UniCC и участник хак-группы The ...

    Все новости... Все статьи... Прислать новость RSS
  • Разное / Предложения работы » Взлом авторизации CRM
  • Разное / Предложения работы » взломать сайт и выграть электронную жеребьёвку
  • Разное / Предложения работы » разблокировать сбер аккаунт
  • Разное / Болталка » Re: Форум жив?
  • Разное / Болталка » Форум жив?
  • Разное / Болталка » С Новым 2022 Годом!
  • Взлом и безопасность / Программы » Re: Hasp ключ для ABC-4
  • Портал / Отзывы и предложения » Предлагаем партнерство вашему форуму.
  • Разное / Предложения работы » взлом почты
  • Разное / Куплю, приму в дар » Покупка аккаунтов Uphold

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}