Сейчас на форуме: asfa, bartolomeo (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Найти место проверки CRC
Посл.ответ Сообщение

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

Создано: 28 июня 2012 11:08
· Личное сообщение · #1

На любое изменение кода исполняемого файла программа реагирует переключением в демо режим, внешне это проявляется появлением надписи в главном окне SIMULATION. Проверяет прога себя на диске, т.к. пропатчивание в Olly к переключению в демо не приводит.
Дополнительная зацепка: имеется кнопка SIMULATION, которая переключает этот режим вручную (в случае непатченного варианта экзешника).
Как найти место проверки CRC? Или, что лучше, место переключения режимов рабочий/демо? Где копать?

Программа: UltimateDefrag 4.0.96.0 www.disktrix.com




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 28 июня 2012 11:10
· Личное сообщение · #2

Chris
Эту программу уже ведь ломали в запросах....

-----
One death is a tragedy, one million is a statistic.





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 28 июня 2012 11:20
· Личное сообщение · #3

Chris
Ставь бряк на CreateFile и смотри когда прога начнет открывать себя на чтение.. далее на ReadFile ... ну а дальше смотри что происходит с содержимом буфера чтения..

-----
aLL rIGHTS rEVERSED!


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

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

Создано: 28 июня 2012 11:24 · Поправил: Konstantin
· Личное сообщение · #4

Chris пишет:
Как найти место проверки CRC? Или, что лучше, место переключения режимов рабочий/демо? Где копать?

CreatFile, ReadFile, MapViewOfFile ...

ЗЫ: Пока писал, уже ответили.

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


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

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

Ковырял как-то предыдущий билд:
Code:
  1. 004395C0  /$ 55             PUSH EBP                                 ; patch
  2. 004395C1  |. 8BEC           MOV EBP,ESP
  3. 004395C3  |. 83EC 10        SUB ESP,10
  4. 004395C6  |. 894D F4        MOV DWORD PTR SS:[EBP-C],ECX
  5. 004395C9  |. C745 FC A08601>MOV DWORD PTR SS:[EBP-4],186A0
  6. 004395D0  |. C745 F8 000000>MOV DWORD PTR SS:[EBP-8],0
  7. 004395D7  |. EB 09          JMP SHORT Ultimate.004395E2
  8. 004395D9  |> 8B45 F8        /MOV EAX,DWORD PTR SS:[EBP-8]
  9. 004395DC  |. 83C0 01        |ADD EAX,1
  10. 004395DF  |. 8945 F8        |MOV DWORD PTR SS:[EBP-8],EAX
  11. 004395E2  |> 8B4D F8         MOV ECX,DWORD PTR SS:[EBP-8]
  12. 004395E5  |. 3B4D FC        |CMP ECX,DWORD PTR SS:[EBP-4]
  13. 004395E8  |. 7D 2D          |JGE SHORT Ultimate.00439617
  14. 004395EA  |. 8B55 F8        |MOV EDX,DWORD PTR SS:[EBP-8]
  15. 004395ED  |. 8955 F0        |MOV DWORD PTR SS:[EBP-10],EDX
  16. 004395F0  |. 8B45 F0        |MOV EAX,DWORD PTR SS:[EBP-10]
  17. 004395F3  |. 8B4D 08        |MOV ECX,DWORD PTR SS:[EBP+8]
  18. 004395F6  |. 3B0CC5 E0098F0>|CMP ECX,DWORD PTR DS:[EAX*8+8F09E0]
  19. 004395FD  |. 75 16          |JNZ SHORT Ultimate.00439615
  20. 004395FF  |. 8B55 F0        |MOV EDX,DWORD PTR SS:[EBP-10]
  21. 00439602  |. 8B45 0C        |MOV EAX,DWORD PTR SS:[EBP+C]
  22. 00439605  |. 3B04D5 E4098F0>|CMP EAX,DWORD PTR DS:[EDX*8+8F09E4]
  23. 0043960C  |. 75 07          |JNZ SHORT Ultimate.00439615
  24. 0043960E  |. B8 01000000    |MOV EAX,1
  25. 00439613  |. EB 04          |JMP SHORT Ultimate.00439619
  26. 00439615  |>^EB C2          \JMP SHORT Ultimate.004395D9
  27. 00439617  |> 33C0           XOR EAX,EAX
  28. 00439619  |> 8BE5           MOV ESP,EBP
  29. 0043961B  |. 5D             POP EBP
  30. 0043961C  \. C2 0800        RETN 8


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

-----
Array[Login..Logout] of Life




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

Создано: 28 июня 2012 19:48
· Личное сообщение · #6

Kindly
Спасибо, но это немного не то. Этот блок отвечает за регистрацию, при его пропатчивании убирается стартовый триальный NAG, однако при нажатии на кнопку Registration information прога неожиданно падает - некрасиво как-то. У меня это сделано в другом месте и работает более изящно.
К тому же всё это в демо режиме, т.е. основная задача: отключить проверку CRC и переключить с демо на основной режим всё ещё в стадии решения.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 29 июня 2012 11:10 · Поправил: OnLyOnE
· Личное сообщение · #7

Короче ковырнул я эту программулину, стало интересно...
Собственно тутор писать нет желания. Просто поделюсь наработками, может кому в будущем и сгодиться.
Думаю молодежи точно
Первое что нарыл - формат серийника имеет вид ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ
Второе серийный номер формируется из десятеричных чисел от 0 до 9, т.е. пример 1234-5678-9012-3456-7890-1234
Далее каждый сегмент серийного номера, а их 6, преобразуется в шестнадцатеричное число...т.е. 1234 = 4D2h и т.д.
Далее из преобразованных сегментов формируется бинарная строка длиной в 12 байт (0Сh), пример (04 D2 16 2E 23 34 0D 80 1E D2 04 D2)
Далее данная бинарная строка хешируется MD5. И получаем как пример такой хеш - b5a8a4ee1b08a9b0b9537ff6c9b14528
Для подтверждения правильности введенного серийного номера используется обычное сравнивание части MD5 хеша с данными массива расположенного по адресу 008F0A00h и имеющий размер 186A0h.
Сравнение идет только первых двух dword-ов MD5 хеша бинарной строки сформированной из введенного серийного номера.
К примеру [b5a8a4ee] и [1b08a9b0], если в массиве находим аналогичные dword-ы мы зарегистрированы.
Далее идет процесс занесения регистрационных данных 1 - в реестр (создается ветка "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG4") и 2 - в файл win.ini (находиться в папке WINDOWS)/
В реестр в выше указанную ветку заноситься 2 параметра:

1.параметр - SdInfo, он формируется из строки серийного номера и регистрационного имени (пример - "1234-5678-9012-3456-7890-1234OnLyOnE")
далее данная строка ксориться побайтово на байт 53h и заноситься в реестр в бинарном виде и unicode формате

(пример "SdInfo"=hex:62,00,62,00,62,00,62,00,7e,00,61,00,61,00,61,00,61,00,7e,00,60,00,\
60,00,60,00,60,00,7e,00,67,00,67,00,67,00,67,00,7e,00,66,00,66,00,66,00,66,\
00,7e,00,65,00,65,00,65,00,65,00,1c,00,3d,00,1f,00,2a,00,1c,00,3d,00,16,00);

2.параметр - SdHash, он формируется из первой части хеша серийного номера [b5a8a4ee] и заноситься в реестр в виде значения DWORD (пример - "SdHash"=dword:b5a8a4ee)

Вторая часть хеша MD5 [1b08a9b0] конвертируется в десятеричное знаковое число (пример - 1b08a9b0 -> 453552560) и при помощи API WriteProfileString заносится в файл win.ini
в секцию [Udbdef] в параметр bootparamex4
(пример записи в файле - [Udbdef]
bootparamex4=453552560)

Эти параметры программа и проверяет при запуске.

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

На основе всего выше изложенного я написал не кейген а регистратор .. который вносит необходимые данные по указанным выше адресам, предварительно конечно выдрав
массив с валидными кусками хеша и программы.

Прилагаю свой регистратор, если кому будет интересно... могу скинуть исходник (предупреждаю, исходник написан на MASM)
--> Скачать регистратор <--
pass: OnLyOnE

P.S. Регистратор без музыкального сопровождения меломанам не качать!

-----
aLL rIGHTS rEVERSED!


| Сообщение посчитали полезным: ZaZa, igorca, Kindly


Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 29 июня 2012 11:34 · Поправил: ZaZa
· Личное сообщение · #8

OnLyOnE
Кстати, интересный момент: воспользовался твоим регистратором, запускаем программу и в меню HELP-Registration Information... видим:
Registered to: ZaZa
Serial Number: 8389-9500-0101-2728-2333-0900

То есть он его как то вычисляет из тех значений, что ты ввел в реестре и в win.ini
Или это я чего то не понял?

-----
One death is a tragedy, one million is a statistic.





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 29 июня 2012 11:45 · Поправил: OnLyOnE
· Личное сообщение · #9

Serial Number генерируется случайным образом.
для регистрации важен параметр SdHash в реестре и bootparamex4 в win.ini.

P.S. Интересен еще один момент, массив валидных данных сформирован на основании уже проданных копий программы.. а т.к. я использую данные именно этот массива.. то вероятность бана через инет равна нулю на настоящий момент.. хотя не факт что что-то не измениться в будущих версиях программы.

-----
aLL rIGHTS rEVERSED!





Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 29 июня 2012 11:51 · Поправил: ZaZa
· Личное сообщение · #10

OnLyOnE пишет:
Serial Number генерируется случайным образом.

Действительно! Попробовал ввести выданный мне серийный номер, ответ: серийный номер некорректен!
Заново воспользовался твоим регистратором, серийник стал другим....

Update:
Так может при установленной проге и при запуске твоего регистратора как то получать этот массив? Тогда универсальность обеспечена до того момента, пока не сменят алгоритм...

-----
One death is a tragedy, one million is a statistic.





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 29 июня 2012 12:04
· Личное сообщение · #11

ZaZa пишет:
Так может при установленной проге и при запуске твоего регистратора как то получать этот массив? Тогда универсальность обеспечена до того момента, пока не сменят алгоритм...

Можно и доработать, ничего сложного нет..
Массив на 10000 серийных номеров, думаю скоро не поменяют

-----
aLL rIGHTS rEVERSED!





Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 29 июня 2012 12:33
· Личное сообщение · #12

OnLyOnE
Выложи исходники, плиз, поглядеть. Да тогда и тему уже можно будет прикрыть...

-----
One death is a tragedy, one million is a statistic.





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 29 июня 2012 14:01
· Личное сообщение · #13

Вот обещанный исходник --> Source.rar <--
pass: OnLyOnE

-----
aLL rIGHTS rEVERSED!


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

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

Создано: 01 июля 2012 19:20
· Личное сообщение · #14

ZaZa пишет:
Да тогда и тему уже можно будет прикрыть...

С какой стати?
Регистратор OnLyOnE - это отдельное решение, подчиняющее прогу и заставляющее её работать. Кстати, по принципу действия аналогичное этому: http://rghost.ru/38973437

Тема о другом решении. Пропатченная под отладчиком в части триала прога нормально работает, и единственное, что требуется, - перенести этот патч на диск (в экзешник). Этому мешает заложенная проверка CRC. Требуется найти это место.
(Фактически я перефразировал первый пост).




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 июля 2012 19:23
· Личное сообщение · #15

Chris
А зачем что то патчить в программе, если регистратор выполняет свою функцию по регистрации программного продукта?

-----
One death is a tragedy, one million is a statistic.





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 01 июля 2012 20:07
· Личное сообщение · #16

Chris пишет:
Кстати, по принципу действия аналогичное этому: http://rghost.ru/38973437

Ну во первых - это не кейген, FFF с названием своего продукта здесь явно погорячились...
Во вторых, я могу ошибаться... но весь прикол чтобы не вмешиваться физически в код программы..
Открою секрет - чем меньше ты модифицируешь код исходной программы, тем выше твой уровень как крэкера...
Написание кейгена - это верх мастерства...
Стремись именно к этому... если все-таки цель повысить свой уровень как специалиста в нашем деле ...

-----
aLL rIGHTS rEVERSED!


| Сообщение посчитали полезным: DimitarSerg, ZaZa, igorca

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

Создано: 01 июля 2012 20:54
· Личное сообщение · #17

ZaZa пишет:
А зачем что то патчить в программе

Это не самоцель. Регистратор решительно не устраивает по простой причине: привязка к компу. Мне надо переносить готовенькую, не требующую телодвижений для регистрации, полностью работающую программу.

OnLyOnE пишет:
Стремись именно к этому...

Эти постулаты я прекрасно знаю. А частное решение по сабжу я объяснил.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 01 июля 2012 21:07
· Личное сообщение · #18

Chris пишет:
привязка к компу

Ты читал вообще, что я писал по разбору регистрации программы?
Какая привязка? Где ты ее нашел?
Chris пишет:
Эти постулаты я прекрасно знаю. А частное решение по сабжу я объяснил.

Я понял.. ученого учить только портить ...

-----
aLL rIGHTS rEVERSED!




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

Создано: 01 июля 2012 21:37
· Личное сообщение · #19

OnLyOnE

По ссылке из 13 поста невозможно скачать исходник. Залейте еще раз пожалуйста.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 июля 2012 21:52 · Поправил: ZaZa
· Личное сообщение · #20

Dynamic
http://rghost.ru/38977033
Пароль: OnLyOnE

В доступе будет 5 дней...

-----
One death is a tragedy, one million is a statistic.


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


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