eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: cppasm
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Крэки, обсуждения —› Защита программы при помощи файла
Посл.ответ Сообщение

Ранг: 4.5 (гость)
Статус: Участник

Создано: 25 июня 2015 12:45 New!
Цитата · Личное сообщение · #1

Для практики взял crackme6 от funguy. Нужно узнать пароль,при этомпароль записан в файл,который не вложен во в папку с программой т.е сначала файл нужно создать. Я его создал и его имя keyfile.dat.В этот файл нужно записать правильный пароль,который записан в коде программы.
У меня есть предположение,что защита начинается с команды:LEA EDX,[40308C]
Также в коде написаны команды,которые не влияют на программу никак.Какими способами можно выяснить пароль?


{ Атач доступен только для участников форума } - CRACKME6.EXE


Ранг: 355.4 (мудрец)
Статус: Uploader
5KRT

Создано: 25 июня 2015 13:03 · Поправил: 25 июня 2015 13:05 Coderess New!
Цитата · Личное сообщение · #2

Защита проверяет есть ли файл keyfile.dat
Считывает содержимое если не пусто идет туда куда Вы и сказали

Code:
  1. 0040114E LEA EDX,DWORD PTR DS:[40308C]
  2.  
  3. Для примера в файл запишем 1234567890, ставим бп на 0040114E и видим
  4.  
  5. 0040114E  LEA EDX,DWORD PTR DS:[40308C] ; "1234567890"

Дальше сами.

| Сообщение посчитали полезным: ullf


Ранг: 4.5 (гость)
Статус: Участник

Создано: 25 июня 2015 13:12 · Поправил: 25 июня 2015 13:14 ullf New!
Цитата · Личное сообщение · #3

Спасибо,вот именно до этого я и дошел.


Ранг: 355.4 (мудрец)
Статус: Uploader
5KRT

Создано: 25 июня 2015 13:36 · Поправил: 25 июня 2015 13:40 Coderess New!
Цитата · Личное сообщение · #4

Ну а какие проблемы пройти дальше?!
Пошагово проходите каждую строку кода нажимая F8 и смотрите что происходит в регистрах

Code:
  1. 0040114E  |> 8D15 8C304000  LEA EDX,DWORD PTR DS:[40308C]
  2. 00401154  |. 83C2 05        ADD EDX,5
  3. 00401157  |. 803A 31        CMP BYTE PTR DS:[EDX],31
  4. 0040115A  |. 75 10            JNZ SHORT CRACKME6.0040116C ;
  5. 0040115C  |. 83C2 03        ADD EDX,3
  6. 0040115F  |. 803A 33        CMP BYTE PTR DS:[EDX],33
  7. 00401162  |. 75 08            JNZ SHORT CRACKME6.0040116C
  8. 00401164  |. 42                 INC EDX
  9. 00401165  |. 803A 30        CMP BYTE PTR DS:[EDX],30
  10. 00401168  |. 74 02            JE SHORT CRACKME6.0040116C
  11. 0040116A  |. EB 15            JMP SHORT CRACKME6.00401181
  12.  

Ранг: 4.5 (гость)
Статус: Участник

Создано: 25 июня 2015 14:28 New!
Цитата · Личное сообщение · #5

Извините,но что-то я не допонимаю.

Ранг: 33.8 (посетитель)
Статус: Участник

Создано: 25 июня 2015 14:36 New!
Цитата · Личное сообщение · #6

ullf вдумайтесь (или погуглите) что означает например строка - CMP BYTE PTR DS:[EDX],31

Ранг: 10.0 (новичок)
Статус: Участник

Создано: 25 июня 2015 15:45 · Поправил: 25 июня 2015 15:58 BiteMoon New!
Цитата · Личное сообщение · #7

ullf
Вобщем там к значению в регистре EDX добавляются(ADD) числа или(INC) увеличивается на единицу содержимое регистра EDX,а потом сравниваются(CMP) полученные значения в регистре EDX с шестнадцатеричными числами,если результат не ноль,то срабатывает короткий прыжок(JNZ SHORT) внутри модуля на определённый адрес или,если ниже значения,срабатывает другой короткий прыжок(JE SHORT),ну или совсем безусловный короткий прыжок(JMP SHORT) и так далее.BYTE PTR-строка,размером в 1 байт,DS-сегмент данных.
Что-то вроде того,совсем разжованно,думаю,теперь у Вас не должно возникнуть каких-либо затруднений...УДАЧИ.

Ранг: 4.5 (гость)
Статус: Участник

Создано: 25 июня 2015 16:43 · Поправил: 25 июня 2015 17:18 ullf New!
Цитата · Личное сообщение · #8

Я начинаю понимать,спасибо вам всем огромное.
Я так понял,что CMP BYTE PTR DS:[EDX],31-сравнивает edx с числом 31 в 16 системе,т.е значение в edx

Добавлено спустя 23 минуты
Всеееее я поняял!Урааа!

Добавлено спустя 25 минут
Понял по какому принципу высчитывается серийник.

Добавлено спустя 35 минут
Получилось! Теперь все стало понятно.


{ Атач доступен только для участников форума } - CRACKME6.EXE


Ранг: 355.4 (мудрец)
Статус: Uploader
5KRT

Создано: 25 июня 2015 17:19 · Поправил: 25 июня 2015 17:19 Coderess New!
Цитата · Личное сообщение · #9

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

Ранг: 138.7 (ветеран)
Статус: Участник

Создано: 26 июня 2015 19:26 New!
Цитата · Личное сообщение · #10

немного офтопа
ullf пишет:
Всеееее я поняял!Урааа!

Как знакомо это состояние души. Когдато давно, когда заломал первую прогу, тоже хотелось орать на весь мир "УРАА, я сделал это"
"И только немного завидуешь тем,
Другим, у которых вершина ещё впереди." (с)

| Сообщение посчитали полезным: LinXP, _FUCKER_


Ранг: 10.0 (новичок)
Статус: Участник

Создано: 27 июня 2015 09:42 New!
Цитата · Личное сообщение · #11

Ещё один,более агрессивный и более простой вариант решения крекми...может кому-нибудь будет интересно.)))

{ Атач доступен только для участников форума } - Crackme.7z

Ранг: 19.3 (новичок)
Статус: Участник

Создано: 27 июня 2015 13:57 New!
Цитата · Личное сообщение · #12

BiteMoon пишет:
Ещё один,более агрессивный и более простой вариант решения крекми

Если уж патчить, то так
Code:
  1. 004010E1     /E9 9B000000   JMP 00401181


{ Атач доступен только для участников форума } - keymaker.7z

| Сообщение посчитали полезным: INCDEC


Ранг: 4.5 (гость)
Статус: Участник

Создано: 27 июня 2015 16:35 New!
Цитата · Личное сообщение · #13

Это мой не первый кряк.
 eXeL@B —› Крэки, обсуждения —› Защита программы при помощи файла

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS