Сейчас на форуме: Magister Yoda, vasilevradislav (+3 невидимых)

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

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

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

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


566e_25.06.2015_EXELAB.rU.tgz - CRACKME6.EXE




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 25 июня 2015 13:03 · Поправил: Coderess
· Личное сообщение · #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"

Дальше сами.

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes


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

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

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

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




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 25 июня 2015 13:36 · Поправил: Coderess
· Личное сообщение · #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.  


-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




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

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

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



Ранг: 33.8 (посетитель), 38thx
Активность: 0.060
Статус: Участник

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

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



Ранг: 15.7 (новичок), 12thx
Активность: 0.050.07
Статус: Участник

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

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



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

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

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

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

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

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


6c5d_25.06.2015_EXELAB.rU.tgz - CRACKME6.EXE




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

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

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

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

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

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

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


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

Ранг: 15.7 (новичок), 12thx
Активность: 0.050.07
Статус: Участник

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

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

a5ec_27.06.2015_EXELAB.rU.tgz - Crackme.7z



Ранг: 19.2 (новичок), 12thx
Активность: 0.030
Статус: Участник

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

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

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


a8fc_27.06.2015_EXELAB.rU.tgz - keymaker.7z

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

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

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

Это мой не первый кряк.


 eXeL@B —› Крэки, обсуждения —› Защита программы при помощи файла
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати