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

 eXeL@B —› Вопросы новичков —› Сгенерировать ключ, проверяемый CryptoAPI
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 апреля 2010 12:19
· Личное сообщение · #1

Доброго времени суток, изучаю довольно специфичную программу - позволяющую писать расширения внутри себя на C#/.NET, при это часть функционала для расширений в программе закрыта и для его активации из кода вызывается спец функция имеющая на входе строку настроек плагина(привязка к домену) и строку ключа активации. Место проверки ключа я определил, пропатчил его всегда возвращать положительный результат и удостоверился что всё работает, но очень хочется не трогая бинарник определить верный ключ для заданного параметра(ну или вообще написать генератор что было бы лучшим решением).

Код функции проверки - pastie.org/924363 и pastie.org/924377
a7 - ключ
a1 - строка-параметр

CryptoAPI для меня увы тёмные лес, поэтому буду рад любым советам - в какую сторону копать.



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 17 апреля 2010 12:54
· Личное сообщение · #2

ovrkrk пишет:
CryptoAPI

этож только надстройка для работы с крипто. Ну а по алго скоро спецы отпишут.

ovrkrk пишет:
в какую сторону копать

google



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 17 апреля 2010 13:09
· Личное сообщение · #3

На васме (он сейчас вроде в дауде) есть статья как создавать такие ключи www.wasm.ru/article.php?article=dio, только там про RSA, а у тебя вроде SHA, но смысл создания кейгена такой же.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 апреля 2010 17:30
· Личное сообщение · #4

Судя по кодесу, там проверка ЦП. Собрался подделать ЦП? Ну-ну.



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 апреля 2010 18:09
· Личное сообщение · #5

NikolayD пишет:
google

гугл меня уже тихо ненавидит


Vovan666 пишет:
На васме (он сейчас вроде в дауде) есть статья как создавать такие ключи www.wasm.ru/article.php?article=dio, только там про RSA, а у тебя вроде SHA, но смысл создания кейгена такой же.

спасибо, изучаю

Archer пишет:
Судя по кодесу, там проверка ЦП. Собрался подделать ЦП? Ну-ну.

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



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 апреля 2010 20:52
· Личное сообщение · #6

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

1. В программе зашит 1024 битный RSA публичный ключ
2. Автор программы получив от меня пачку хрустящих купюр и необходимую строку инициализации при помощи своего приватного ключа генерирует мне строку-подпись.
3. Приложение дешифрует строку подпись вставленную в код используя публичный ключ и сравнивает её со строкой инициализации - если совпали - разрешает работать.

Т.е. исходя из того что 1024 ключи в обозримом будущем не сломать, вариант написания генератора ключей отпадает и решить задачу можно только правкой бинарника, убирающей вообще проверку. Правильно ли я понимаю? Может ли мне как-то помочь наличие нескольких верных пар "ключ - строка инициализации"?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 17 апреля 2010 23:46
· Личное сообщение · #7

Два основных варианта решения:


Вариант 1

* патч CryptVerifySignatureA (проверка подписи)
* патч проверки CRC, если есть


Вариант 2

* патч публичной экспоненты
* создание ключегена на своей паре
* патч проверки CRC, если есть

-----
EnJoy!



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


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