+ Reply to Thread
Results 1 to 2 of 2

Thread: Neffarion :: 0xs4 :: Patching :: Создание патча (Перевод: coldfire)

  1. #1
    Rectifier's Avatar

    Default Neffarion :: 0xs4 :: Patching :: Создание патча (Перевод: coldfire)

    0xs4 :: Patching :: Создание патча


    Введение

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

    Target Information

    Filename..... boonscrackme.exe [ download ]
    Developer... Boon
    Toolz.......... OllyDbg, dup2 [ download ], Visual Basic

    Adficio

    1 – а. Загрузите программу и нажмите Check



    Картинка 1. Програма для иследования



    Картинка 2. Сообщение с ошибкой

    Целью данного крякми – сделать патч для программы таким образом, что бы заместь сообщения с ошибкой показувалось сообщение о успешной регистрации.

    3 – а. Загрузите программу в OlyyDbg
    b. Search for > all referenced strings
    c. Найдите сообщение с ошибкой и дважды нажмите на нем



    Картинка 3. Сообщение с ошибкой в OllyDbg

    Следующая техника имеет название “трассировка прыжков(tracing jump)”, которая означает, что мы будем использовать OllyDbg для того, что бы найти функцию ( подобную MessageBoxA с сообщением об ошибке ) и найдем место откуда программа прыгнула ( сделала переход ) к этой функции. Для небольших программ данная техника не является сильно необходимой, но для больших программ ( особенно игр ) – наиболее общий подход для взлома J

    4 – а. Правый клик на адресе 0x4010B3 и затем выберите Find references to > Select command



    Картинка 4. Ссылка на сообщение с ошибкой

    На данной картинке мы можем видеть всего лишь 1 ссылку на MessageBox. Помните, что первый параметр API функции всегда Remember that the first flag parameter of an API function is always the start of that functio .

    5 – а. Двойной клик по ссылке на сообщение с ошибкой



    Картинка 5. Сслыка на сообщение с ошибкой и на “хорошее” сообщение

    Мы видим функцию GetDlgItemText ( которая очевидно получается текст с TextBox’a), но 2 инструкции после нее не вызывают функции проверки или сравнения. Инструкция по адресу 0x401096 делает прыжок к неиспользуемой текстовой строки и далее прыгает на адрес 0x40109B . Инструкция по адресу 0x40109B совершает прыжок на сообщение с ошибкой. Так как мы видим, что “хорошее” сообщение находится по адресу 0x40109D, то прыжок по адресу 0x40109B необходимо просто удалить и преобразовать инструкцию по адресу 0x40120D, чтобы она перешла к “хорошему” сообщению :).

    6 – а. Правый клик на адресу 0x40109B и затем нажимаем Binary > Fill with NOPs



    Картинка 6. Заменяем инструкция JMP на NOP

    7 – а. Правый клик по адресу 0x40120D и затем нажимаем Assemble
    b. Assemble "JMP 0040109D"



    Картинка 7. Меняем адрес куда прыгнуть инструкции JMP

    8 – а. Сохраняем взломанную программу



    Картинка 8. Сохранение взломанной программы

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

    Я хочу объяснить вам почему я пиши мои патчи именно так. Ответ прост: для того, что бы написать патч вам необходимо прежде всего взломать программу, внести изменение ( вы можете сделать это вручную, вписав новые КОПы (код операции) , которые вы находите через инструкции, используемые инструкции) и затем перенести эти новые КОПы в язык программирования. Ранее и сегодня у меня бывали ситуации при взломе, когда я вписывал неправильные КОПы, поскольку использовал инструкцию отличную от той, которую намеревался, что заставляло меня создавать неправильный патч. Но если сегодня я делаю это таким образом, как будет объяснено ниже, я больше не делаю ошибок, мне просто более удобно делать это так.

    9 – a. Откроем dup2
    b. Нажмите New Project
    с. Нажмите Save
    d. Нажмите Add
    e. Выберите [Offset Path]
    f. Нажмите OK
    g. Двойной клик на [Offset Path] в списке
    h. Нажмите Press ... далее "Original File" и выберите "boonscrackme.exe" (не взломанная версия )
    i. Нажмите Press ... далее "Patched File" и выберите "+boonscrackme.exe" (взломанная версия)
    j. Нажмите Compare



    Картинка 9. Поиск всех изменение между взломанной и не взломанной программой

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

    Для данной программы вы можете найти архив с исходным кодом моего патча. Я хорошо прокомментировал исходный код, так что если вы никогда не программировали патчи на VB , вы можете немножко подучить как это делать J.

    +Neffarion
    http://www.0xNeff.eu

    © Translated by coldfire from r0 Crew
    Секрет успеха — в постоянстве цели. (Бенджамин Дизраэли)

    Вы должны воплощать ту перемену, которую хотите произвести в мире. (Махатма Ганди)

    Один опыт я ставлю выше, чем тысячу мнений, рожденных только воображением. (Ломоносов)

  2. 7 пользователя(ей) сказали cпасибо:
    DJ1hAD0 (30-09-2013) Dark Koder (30-09-2013) Heroin (29-05-2011) dukeBarman (03-10-2013) hexum (28-05-2011) korsader (01-10-2013) ximera (28-05-2011)
  3. #2
    DJ1hAD0's Avatar

    Default Re: Neffarion :: 0xs4 :: Patching :: Создание патча (Перевод: coldfire)

    Классная статья! Спасибо огромное!
    P.S. Напишите пожалуйста урок инлайн-патчинга на примере хелловорлда:)

+ Reply to Thread

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:37
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org