Хорошо, прежде всего мы решим крэкми
Смотрим строки, которые используются программой. Нажимаем правую кнопку мыши.
Видим среди строк следующие:
Можем кликнуть на той, которая сообщает об успехе, или сообщающей о неудаче, чтобы попасть в интересующую нас область программы.
Видим, что здесь есть call, после которого либо происходит управление передаётся на код либо с «WRONG CODE DUDE», либо c «THANKS YOU MADE IT».
Устанавливаем BPX на CALL в 42d534 и нажимаем RUN.
Введём неправильный серийный номер в поле, которое называется «Enter Serial #».
В моём случае печатаем Narvajita.
Если войдём в режиме трассировки в CALL, то увидим, что сравнивается введённый серийник «Narvajita» со строкой «Benadryl».
Ок, теперь мы оказываемся рядом со сравнением, так что правильным серийным номером является слово «Benadryl». Сделаем RUN по-новой, убрав предварительно все BPX.
Здесь видим, что нас поздравляют с нахождением правильного серийного номера .
Ок, теперь разберём последний случай подобного типа, а со следующей главы начнём новую тему. Это небольшая программка, являющееся игрой под названием canasta 5.0. Она
Эта программа относится к той категории, где при кнопка OK в начале недоступна для нажатия, но когда пользователь заканчивает вводить свои данные, то если они верны, на неё становится возможным нажать.
Установим программу и зайдём в About.
Она стоит, друзья, 20 долларов, вернее 19.95.
Видим кнопку «ENTER LICENSE».
Здесь говорится, что кнопка OK станет доступна, когда будет введена правильная комбинация.
Запустим программу в OllyDbg.
Мы оказываемся в точке входа.
Уфф, список используемых API-функций велик, также как и список строк.
Среди этих строк нет никаких, которые подходили бы нам по смыслу, хех.
Запускаем программу в OllyDbg и оказываемся в окне регистрации. Попробуем применить какой-нибудь из методов взлома данного типа защит.
Вводим имя, предполагая, что оно может быть любым, поскольку узнать мы это можем только потом, затем вводим какой-нибудь редкий License Key, состоящий из 6 символов, например, WMYXSZ.
Теперь нажимаем M.
Поищем, нет ли в памяти строки «WM», соответствующей двум уже введённым буквам.
Нажимаем клавишу M, чтобы перейти в VIEW-MEMORY, и начать поиск вышеуказанной строки.
В данном случае отмечаем опцию CASE SENSITIVE, чтобы не выдавались аналоги WM в других регистрах.
После двух или трёх раз, когда встретятся слова, начинающиеся с WM, и которые можно пропустить, нажав CTRL+L, и после того, как пройдём одну секцию и будем искать ниже в окне M, нам встретится WM, не входящая в состав других слов, и ещё ниже находится текст, говорящий о том, что на кнопку OK можно будет нажать после введения правильного серийного номера.
Поищем это место через DUMP.
Вспомним, что адрес, который начинается с буквы (как в данном случае), должен начинаться с нуля, иначе OllyDbg его не признает.
Чтобы быть уверенными, что это именно та область, где сохраняется серийный номер, введём следующую букву в поле серийного номера.
После этого смотрим в DUMP, символ был добавлен, а значит это и есть область, где сохраняется серийный номер, поэтому ставим сюда BREAKPOINT MEMORY ON ACCESS, охватывающий 6 цифр (так как мы знаем, что их будет ровно шесть).
Теперь делаем RUN.
Появляется окно, в котором вводим следующий символ – “X”.
Останавливаемся на том месте, где происходит сохранение.
Здесь по нажатию на F8 происходит копирование ESI в EDI.
Здесь происходит копирование четырёх байтов, введённых нами ранее.
По нажатию на F8 они копируются в 12E79C.
Так как мы уже используем BREAKPOINT MEMORY ON ACCESS, то можем установить HARDWARE BPX ON ACCESS.
Если оттрассируем немного, увидим моё имя также перемещается в стек.
Точно перед именем находится 0E, которое является его длиной, и она сравнивается с нулём.
Так как не равно нулю, выполнение программы продолжается.
Затем происходит сравнение имени с теми, кто находится в чёрном списке, то есть оно не должно быть TNO, afdad и т.п.
Снова делаем RUN.
Останавливаемся на сравнении с серийным номером.
И можем посмотреть, действительно ли это правильный серийный номер. Убираем все точки останова.
После его введения становится доступной кнопка “OK”, после её нажатия мы регистрируемся, хе-хе. Другим способом, на объяснении которого я не буду задерживаться, но который не слишком сложен, является использование WM_KEYUP каждый раз, когда нажимаем клавишу, чтобы останавливать OllyDbg и отслеживать, что происходит с введенным нами символом, но это довольно скучно, и способ, который мы применили, гораздо более простой.
Ок, давайте отдохнём немного. В следующей части мы изучим немного теории и рассмотрим несколько примеров по новой теме.
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Он очень лёгкий. Откроем его в OllyDbg и окажемся в точке входа.![1310c70ec226cd28030137e79d88849e.png 1310c70ec226cd28030137e79d88849e.png](https://dark-time.com/data/attachments/2/2596-81f92df357c926b689c76e1a8c098675.jpg)
Смотрим строки, которые используются программой. Нажимаем правую кнопку мыши.
![08ba56d63ead3e266680937f8b80fc35.png 08ba56d63ead3e266680937f8b80fc35.png](https://dark-time.com/data/attachments/2/2597-dc4f605ca8d9ddff87c13f0dc79852cd.jpg)
Видим среди строк следующие:
![98868d8373200eb57629f3d83c444c19.png 98868d8373200eb57629f3d83c444c19.png](https://dark-time.com/data/attachments/2/2598-68ff5d07cd0ead9caa70b93e5b00c3ae.jpg)
Можем кликнуть на той, которая сообщает об успехе, или сообщающей о неудаче, чтобы попасть в интересующую нас область программы.
![70b20f7812c9bac98c882a8b309ddbce.png 70b20f7812c9bac98c882a8b309ddbce.png](https://dark-time.com/data/attachments/2/2599-1f21be7a3e7eb8e6f8153846f10959ec.jpg)
Видим, что здесь есть call, после которого либо происходит управление передаётся на код либо с «WRONG CODE DUDE», либо c «THANKS YOU MADE IT».
Устанавливаем BPX на CALL в 42d534 и нажимаем RUN.
![52b20783aae0e31dc1db08bb00dec740.png 52b20783aae0e31dc1db08bb00dec740.png](https://dark-time.com/data/attachments/2/2600-fc4f9f9747a006c4d4e31b1657706007.jpg)
Введём неправильный серийный номер в поле, которое называется «Enter Serial #».
![336dd513d3556d0caa0be776f08c078e.png 336dd513d3556d0caa0be776f08c078e.png](https://dark-time.com/data/attachments/2/2601-0da6be6f22ab46bacb9a66fd84339816.jpg)
В моём случае печатаем Narvajita.
![3444b92afa5d7af1c653cc075fffdc2c.png 3444b92afa5d7af1c653cc075fffdc2c.png](https://dark-time.com/data/attachments/2/2602-18ec98f7e0cb9770bf03ba7248d551a3.jpg)
Если войдём в режиме трассировки в CALL, то увидим, что сравнивается введённый серийник «Narvajita» со строкой «Benadryl».
![08e6f6077716d1fc4e69a149e7e49367.png 08e6f6077716d1fc4e69a149e7e49367.png](https://dark-time.com/data/attachments/2/2603-bc3e105f00a4e16483b8de0a2e2276eb.jpg)
![45d05599c0794bd77b7b1e49bc68c9fc.png 45d05599c0794bd77b7b1e49bc68c9fc.png](https://dark-time.com/data/attachments/2/2604-397fa82075ba6e7d91b91e90556924d5.jpg)
Ок, теперь мы оказываемся рядом со сравнением, так что правильным серийным номером является слово «Benadryl». Сделаем RUN по-новой, убрав предварительно все BPX.
![0bb4bbcd28bff3e481ff08815ba75a13.png 0bb4bbcd28bff3e481ff08815ba75a13.png](https://dark-time.com/data/attachments/2/2605-6c16ad45f5f3760132309e136e7cb44a.jpg)
Здесь видим, что нас поздравляют с нахождением правильного серийного номера .
Ок, теперь разберём последний случай подобного типа, а со следующей главы начнём новую тему. Это небольшая программка, являющееся игрой под названием canasta 5.0. Она
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
к статье.Эта программа относится к той категории, где при кнопка OK в начале недоступна для нажатия, но когда пользователь заканчивает вводить свои данные, то если они верны, на неё становится возможным нажать.
Установим программу и зайдём в About.
![4230e34b6ddf746981111f0538b6dee2.png 4230e34b6ddf746981111f0538b6dee2.png](https://dark-time.com/data/attachments/2/2606-2c5343b5bb14c4e10864ccf245d99d86.jpg)
Она стоит, друзья, 20 долларов, вернее 19.95.
![c45f0d50659b3bde676b8d37d62666a1.png c45f0d50659b3bde676b8d37d62666a1.png](https://dark-time.com/data/attachments/2/2607-f71146f23e645d173dc4f7268212e09a.jpg)
Видим кнопку «ENTER LICENSE».
![fc7c8131f35495341fc21f3fbc924776.png fc7c8131f35495341fc21f3fbc924776.png](https://dark-time.com/data/attachments/2/2608-accad05af793ab81075ef1841c324424.jpg)
Здесь говорится, что кнопка OK станет доступна, когда будет введена правильная комбинация.
Запустим программу в OllyDbg.
![f90fd7658a4440dac9ce594f8d983713.png f90fd7658a4440dac9ce594f8d983713.png](https://dark-time.com/data/attachments/2/2609-0a431b8b7eec479f86ccaaf9014f7074.jpg)
Мы оказываемся в точке входа.
![3349e037b18b2b97380c17bf03bf0d57.png 3349e037b18b2b97380c17bf03bf0d57.png](https://dark-time.com/data/attachments/2/2610-22a5a98b31106ab03a320159adb0c683.jpg)
Уфф, список используемых API-функций велик, также как и список строк.
![045b19eadda31e938a6180e6ce154347.png 045b19eadda31e938a6180e6ce154347.png](https://dark-time.com/data/attachments/2/2611-2097d6b1329db71a6a8b31e2f2754110.jpg)
Среди этих строк нет никаких, которые подходили бы нам по смыслу, хех.
![d0c8767794fa0c0e3a2313a4bce56659.png d0c8767794fa0c0e3a2313a4bce56659.png](https://dark-time.com/data/attachments/2/2612-7aa70bf8a494cd1a9e037ff469315ff4.jpg)
Запускаем программу в OllyDbg и оказываемся в окне регистрации. Попробуем применить какой-нибудь из методов взлома данного типа защит.
![a28f8d7d9d462c48974b70f4f900c075.png a28f8d7d9d462c48974b70f4f900c075.png](https://dark-time.com/data/attachments/2/2613-286bc4544e94e45b564d85a266670b8a.jpg)
Вводим имя, предполагая, что оно может быть любым, поскольку узнать мы это можем только потом, затем вводим какой-нибудь редкий License Key, состоящий из 6 символов, например, WMYXSZ.
![8896d49995953c2c819c4a2d9471abf4.png 8896d49995953c2c819c4a2d9471abf4.png](https://dark-time.com/data/attachments/2/2614-10e7d628c72e9fe399a28df7af0d43ea.jpg)
Теперь нажимаем M.
![e355c268adcfbf7e65ed9d5f07ca1bed.png e355c268adcfbf7e65ed9d5f07ca1bed.png](https://dark-time.com/data/attachments/2/2615-406918514cc9158489370c6d5aeb5288.jpg)
Поищем, нет ли в памяти строки «WM», соответствующей двум уже введённым буквам.
![da6bab262c05637d5752c757c69f1c38.png da6bab262c05637d5752c757c69f1c38.png](https://dark-time.com/data/attachments/2/2616-8a7bf7f8f2dbd03e1b733afc46969ff0.jpg)
Нажимаем клавишу M, чтобы перейти в VIEW-MEMORY, и начать поиск вышеуказанной строки.
![533c7a48792d2827fd8c4199700041bb.png 533c7a48792d2827fd8c4199700041bb.png](https://dark-time.com/data/attachments/2/2617-ecf6f4d8d3534293c004804ae3f00706.jpg)
В данном случае отмечаем опцию CASE SENSITIVE, чтобы не выдавались аналоги WM в других регистрах.
![5c0f5035a7aee5365093d4134195da69.png 5c0f5035a7aee5365093d4134195da69.png](https://dark-time.com/data/attachments/2/2618-1caa62f5d0033b23462fb6b1410489b0.jpg)
После двух или трёх раз, когда встретятся слова, начинающиеся с WM, и которые можно пропустить, нажав CTRL+L, и после того, как пройдём одну секцию и будем искать ниже в окне M, нам встретится WM, не входящая в состав других слов, и ещё ниже находится текст, говорящий о том, что на кнопку OK можно будет нажать после введения правильного серийного номера.
Поищем это место через DUMP.
![140fba32340bca9d08f6703670432951.png 140fba32340bca9d08f6703670432951.png](https://dark-time.com/data/attachments/2/2619-7e39d65a2ee63e725ee3509067ebc668.jpg)
Вспомним, что адрес, который начинается с буквы (как в данном случае), должен начинаться с нуля, иначе OllyDbg его не признает.
![71577e095437281875889daa724d2868.png 71577e095437281875889daa724d2868.png](https://dark-time.com/data/attachments/2/2620-1446b9fa71f3ba1f52cd0f0b199373bf.jpg)
Чтобы быть уверенными, что это именно та область, где сохраняется серийный номер, введём следующую букву в поле серийного номера.
![c06ffa1ca8376effe2d64bba9250c653.png c06ffa1ca8376effe2d64bba9250c653.png](https://dark-time.com/data/attachments/2/2621-df1e5e0db86ce79efe37a240104b84a1.jpg)
![606db26c63d7750391fe4986ad049466.png 606db26c63d7750391fe4986ad049466.png](https://dark-time.com/data/attachments/2/2622-3382225f2bc77b480ec4d14c65675298.jpg)
После этого смотрим в DUMP, символ был добавлен, а значит это и есть область, где сохраняется серийный номер, поэтому ставим сюда BREAKPOINT MEMORY ON ACCESS, охватывающий 6 цифр (так как мы знаем, что их будет ровно шесть).
![efa7870347be1566269107ae4271ba6c.png efa7870347be1566269107ae4271ba6c.png](https://dark-time.com/data/attachments/2/2623-7cc0d961508da63b6d42f057e742a331.jpg)
Теперь делаем RUN.
![35a1647728e6362e9cdf803a26bd825d.png 35a1647728e6362e9cdf803a26bd825d.png](https://dark-time.com/data/attachments/2/2624-b4ee5370ccef0968ecf4f45466d6a127.jpg)
Появляется окно, в котором вводим следующий символ – “X”.
![6438e44dacf891733c0de893355d1b4e.png 6438e44dacf891733c0de893355d1b4e.png](https://dark-time.com/data/attachments/2/2625-f165477196850872af329143600c459b.jpg)
Останавливаемся на том месте, где происходит сохранение.
![d5a37dbee73688e1bbdcc8421644e798.png d5a37dbee73688e1bbdcc8421644e798.png](https://dark-time.com/data/attachments/2/2626-1f263895fbb84a98df550a57ac1b71d4.jpg)
Здесь по нажатию на F8 происходит копирование ESI в EDI.
![c79619256e47ee2ac35fed55424b4f3c.png c79619256e47ee2ac35fed55424b4f3c.png](https://dark-time.com/data/attachments/2/2627-55ab05598339f89e7774084220c0e5c7.jpg)
![9980081a3bc442053b1be09b0819d769.png 9980081a3bc442053b1be09b0819d769.png](https://dark-time.com/data/attachments/2/2628-dedf5f1c6c31b12b815cd76ec2bde935.jpg)
Здесь происходит копирование четырёх байтов, введённых нами ранее.
![576d22ee59f4e2ba8ea5b78a1959a4db.png 576d22ee59f4e2ba8ea5b78a1959a4db.png](https://dark-time.com/data/attachments/2/2629-0aaf84a56323cf7b643e191744968bc9.jpg)
По нажатию на F8 они копируются в 12E79C.
![1648ecc91b763b1a2231feb6cd8a61fb.png 1648ecc91b763b1a2231feb6cd8a61fb.png](https://dark-time.com/data/attachments/2/2630-f92cf2fe11aba51756649b7a06443c71.jpg)
Так как мы уже используем BREAKPOINT MEMORY ON ACCESS, то можем установить HARDWARE BPX ON ACCESS.
![cd4b433313c7bb95b3c9eba5b1feb1f9.png cd4b433313c7bb95b3c9eba5b1feb1f9.png](https://dark-time.com/data/attachments/2/2631-e9cffdf1377e46c20bcea026c60fa32a.jpg)
![6dcdd0282898eef31a70b3b5b8bf80c9.png 6dcdd0282898eef31a70b3b5b8bf80c9.png](https://dark-time.com/data/attachments/2/2632-0d82ce0a29ac4e6d5576525911a32c1a.jpg)
Если оттрассируем немного, увидим моё имя также перемещается в стек.
![c41e6ae27715e9ab533a38e70f981740.png c41e6ae27715e9ab533a38e70f981740.png](https://dark-time.com/data/attachments/2/2633-6553984f5ee0c89897aa7de5bf5c62a2.jpg)
![f0d59e69e426eebba4ab72b99ed90d73.png f0d59e69e426eebba4ab72b99ed90d73.png](https://dark-time.com/data/attachments/2/2634-46143befb6dc5bceefbee3f41c04323a.jpg)
Точно перед именем находится 0E, которое является его длиной, и она сравнивается с нулём.
![694e51efd1d96c4ca03c334f46bb81a8.png 694e51efd1d96c4ca03c334f46bb81a8.png](https://dark-time.com/data/attachments/2/2635-f8d5e2510940b51b2963fe053b545e3e.jpg)
Так как не равно нулю, выполнение программы продолжается.
![ddb712d6b823d8fb147ef112abe5bfe2.png ddb712d6b823d8fb147ef112abe5bfe2.png](https://dark-time.com/data/attachments/2/2636-66bf075851c7578a67cb4e7f886135e5.jpg)
Затем происходит сравнение имени с теми, кто находится в чёрном списке, то есть оно не должно быть TNO, afdad и т.п.
Снова делаем RUN.
![6f16194b416c04bda7d65bce9e8d4653.png 6f16194b416c04bda7d65bce9e8d4653.png](https://dark-time.com/data/attachments/2/2637-074f5cf8121af71fc62892761c4a0b42.jpg)
Останавливаемся на сравнении с серийным номером.
![13bb4df04a82928a9d7589dd775c5550.png 13bb4df04a82928a9d7589dd775c5550.png](https://dark-time.com/data/attachments/2/2638-385229fa1c9a7eb9cfe0f3e51494bd9c.jpg)
И можем посмотреть, действительно ли это правильный серийный номер. Убираем все точки останова.
![de566416b12fd3b302fc9b7c3ff1ba6d.png de566416b12fd3b302fc9b7c3ff1ba6d.png](https://dark-time.com/data/attachments/2/2639-c290e07dc57691a2968978de3d6cb880.jpg)
После его введения становится доступной кнопка “OK”, после её нажатия мы регистрируемся, хе-хе. Другим способом, на объяснении которого я не буду задерживаться, но который не слишком сложен, является использование WM_KEYUP каждый раз, когда нажимаем клавишу, чтобы останавливать OllyDbg и отслеживать, что происходит с введенным нами символом, но это довольно скучно, и способ, который мы применили, гораздо более простой.
Ок, давайте отдохнём немного. В следующей части мы изучим немного теории и рассмотрим несколько примеров по новой теме.