Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Исследование защиты программы СпецКалькулятор 1.4
Посл.ответ Сообщение

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

Создано: 08 мая 2015 20:40 · Поправил: MisterSmile
· Личное сообщение · #1

Прошу помочь с данной программой: не могу никак найти ту функцию, которая отвечает за считывание введенного ключа.
Она маленькая, написана на С++ и не упакована.
Интересно раскрыть алгоритм и написать генератор ключей.
Буду очень благодарен тому, кто не просто напишет "у меня вышло", но и опишет, как получилось.
Ссылка на программу --> тут <--



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 08 мая 2015 20:44
· Личное сообщение · #2

MisterSmile пишет:
Интересно раскрыть алгоритм и написать генератор ключей.

раз интересно - пиши. в чем проблема то? иду с хексреем отменили уже?

-----
SaNX




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

Создано: 08 мая 2015 20:51
· Личное сообщение · #3

SaNX пишет:
раз интересно - пиши.


Я Olly использовал. И вот не могу понять где точку останова поставить.
Искал в intermodullar calls - не нашёл функции, считывающей ключ.

Как пользоваться IDA, только изучаю.



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 08 мая 2015 20:54
· Личное сообщение · #4

MisterSmile
--> Link <--

-----
SaNX




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 08 мая 2015 22:08
· Личное сообщение · #5

MisterSmile пишет:
Спасибо, если не получится, я отпишусь.

Зачем отписываться, если это очевидно ?
лучше почитайте статьи из топика Введение в крэкинг с нуля, используя OllyDbg (сборник) (странно, как вы его умудрились не заметить перед созданием темы)



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 08 мая 2015 23:28 · Поправил: dosprog
· Личное сообщение · #6

MisterSmile пишет:
не могу никак найти ту функцию, которая отвечает за считывание введенного ключа.
Она маленькая, написана на С++ и не упакована.


- Точно маленькая? Сомневаюсь. ((Добавлено позднее - BCB- поправил, thanks 2 DimitarSerg)).
Такие вещи патчатся одним байтом и забываются навсегда.
Программа десятилетней давности, функционала в ней нужного нету (HEX/OCT/BIN),
глючная впридачу (наберите число и %, например: "1%"), в чём прикол не пойму.

Вот лоадер.

-- Дбавлено --
К следующему посту:

-- Ну Ок, удалил.
)) Это как раз тот случай, когда "нужны шашечки".



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 09 мая 2015 01:11
· Личное сообщение · #7

dosprog
какой лоадер ??? имейте совесть, он же кейген просил

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


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 09 мая 2015 01:53
· Личное сообщение · #8

Человек явно не для лоадера для говнокалькулятора тему создавал

MisterSmile
Программа на BCB, обработчик нажатия кнопки реги можешь найти напр. с помощью Ems Source Rescue
Code:
  1. procedure TRenameForm.Next1Click(Sender: TObject);
  2. begin
  3. // Address $423B64
  4. end;

Проверка длинны серийника
0042304C |> \83FA 14 CMP EDX, 0x14

А дальше сам, вперед за орденами.

-----
ds


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

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

Создано: 09 мая 2015 14:05
· Личное сообщение · #9

У меня взлом защиты программ вызывает некий азарт, чувство соревнования и интерес. Я пока учусь.
А тему эту создал, что почему-то именно эту программу мне уже давно хочется взломать. Несколько раз подходил, но не получалось: на функции, считывающие данные из Edit (из которых я вижу здесь только GetWindowTextA), брейкпоинты ставил - пользы это не приносило.

Но вчера у меня был некий прорыв и счастье: я решил поискать в стеке введенное мной значение. Найдя его, меня посетила мысль, что где-то рядом должен быть возврат из той функции, которая занимается его обработкой.
Предположение оказалось верным, адрес её 00422F3C.
Далее, воспользовался IDA, которая создала великолепный наглядный граф проверок, и изменив условные переходы согласно этому графу, сумел довести программу до сообщения "Спасибо за регистрацию". Но в действительности программу это не зарегило: возможно не был создан какой-то ключ в реестре или есть ещё какая-то проверка при каждом запуске.

Программа может того не стоит и малофункциональна. Но у меня просто соревнование и обучение. Потому отношения к делу её функции не имеют.



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

Создано: 09 мая 2015 14:57
· Личное сообщение · #10

Code:
  1. 042304C  |> \83FA 14       CMP EDX,14
  2. 00423125  |.  83F8 4B       CMP EAX,4B
  3. 004231C8  |.  83FA 30       CMP EDX,30
  4. 0042326A  |.  83FA 37       CMP EDX,37
  5. 0042330C  |.  83F8 41       CMP EAX,41


Ключ = 20 символам, он вот такой - 1K340677921994197790
начните с адреса 00423125 - пол часа и все поймете. Присутствует деление и умножение, но по сути защита шлак 5 классника. Незачот.

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

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

Создано: 09 мая 2015 16:40 · Поправил: MisterSmile
· Личное сообщение · #11

Спасибо большое всем!

Хочу попросить тех, кому не сложно, описать последовательность своих действий (подход), прежде чем адрес с обрабатывающей функцией был найден. Для расширения кругозора.

Ещё раз всем искренняя благодарность за отзывчивость!



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

Создано: 09 мая 2015 18:05
· Личное сообщение · #12

Ну как вариант - то что предложил DimitarSerg
Я поступил так:
загрузил в wdasm (ну или ИДУ кому как нравится), поискал строки относящиеся к регистрации.
нашел текст спасибо за регистрацию по адресу 004239DE
Зашел в процедуру - 004239E3
Вот начало - 004F6F44
запустил прогу ввел код от балды, поставил бряк на 004F6F44, нажал на кнопку.
Вышел из процедуры и оказался там где надо.
Если сумбурно, извиняюсь - праздную.



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 09 мая 2015 20:21 · Поправил: dosprog
· Личное сообщение · #13

dimka_new пишет:
Ключ = 20 символам, он вот такой - 1K340677921994197790
начните с адреса 00423125 - пол часа и все поймете. Присутствует деление и умножение, но по сути защита шлак 5 классника. Незачот.


)) Вот именно, пол-часа, не меньше. А если занят в это время другой задачей, то это ппц. (Если не занят - то тоже мозго.бство).

В отладчике за пять минут выходим на такое место:
Code:
  1.  .0040EFA7: E88C99FFFF             call       .000408938   -------- (2)   
  2.  .0040EFAC: *84*C0________________ test        al,al             
  3.  .0040EFAE: 0F8512010000           jne        .00040F0C6   -------- (3)   
Процедура должна вернуть AL не равный 0. Следующая проверка - единственная.
Поэтому:
Code:
  1.  .0040EFA7: E88C99FFFF                   call       .000408938   -------- (2)   
  2.  .0040EFAC: *FF*C0 ___(*FIX BYTE*)______ inc       al                     
  3.  .0040EFAE: 0F8512010000                 jne        .00040F0C6   -------- (3)   
И усё.
Хотя да, с ключом круче. Но цена вопроса..

Если применялся ключ, то сброс регистрации удалением ветки реестра "HKCU\Software\kvoSoftware".




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


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