Сейчас на форуме: vsv1, johnniewalker, NIKOLA (+7 невидимых)

 eXeL@B —› Крэки, обсуждения —› Разбор алгоритма RC6
Посл.ответ Сообщение

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

Создано: 18 сентября 2016 23:17
· Личное сообщение · #1

Всем привет!

Столкнулся с защитой, основанной на RC6. К сожалению, информации по шифру очень мало.
Статьи в Википедии (русская и английская) очень куцые, увы.
Все, что пока что знаю на данный момент:
регистрационное имя должно быть не менее 3х символов, длина серийника должна быть равна 32 символа.
Используются следующие константы: 0x0B7E15163 и 0x09E3779B9

Подскажите, пожалуйста, куда копать в деле разбора RC6? Должен быть еще ключ, но я не пойму как его найти.
Буду благодарен за любую информацию по делу!




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 00:44
· Личное сообщение · #2

ну допустим вот вам RC6

сам алго определён - это хорошо.
но каким образом он применяется в отношении серийника и имени - это уже от конкретного случая зависит

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

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

Создано: 19 сентября 2016 07:44
· Личное сообщение · #3

Спасибо за исходники!

Вот еще бы где найти описание алгоритма на человеческом языке



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

Создано: 19 сентября 2016 09:13
· Личное сообщение · #4

Mefist0 пишет:
но я не пойму как его найти

Значит ты еще просто не задетектил процедуру инициализации ключа )

Mefist0 пишет:
куда копать в деле разбора RC6

Куда и любой другой шифр на Фейстеле, задетектить 3 основные: инициализация (развертывание) ключа, и собственно крипт/декрипт.

p.s. DimitarSerg (рабочий акк)

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


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 15:55
· Личное сообщение · #5

Mefist0 пишет:
Вот еще бы где найти описание алгоритма на человеческом языке

хм. Этож крипто, о каком человеческом языке тут может идти речь?
википедия даёт сухую основу, а суть операций можно уловить медитируя на исходник.

Хотя зачем это? Если алго уже известен, то достаточно просто определить его процедуры в коде и реверсить в сторону входных/выходных значений.

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



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

Создано: 19 сентября 2016 18:59
· Личное сообщение · #6

-=AkaBOSS=-
Насчет модификации алгоритма я уже тоже думал, но вроде бы стандартная реализация.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 19:14
· Личное сообщение · #7

Mefist0 пишет:
вроде бы стандартная реализация

вот чтобы не гадать - возьми входные данные и ключ и проверь в другой проге, типа AT4RE KeygenerAssistant или SnD Reverser Tool (с этой осторожнее, она косячит)

а потом сравни с тем что на выходе в целевой проге



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

Создано: 19 сентября 2016 21:45
· Личное сообщение · #8

-=AkaBOSS=-
Вот я пока что и застрял на поиске ключа.
Есть куча однотипных операций, в которых происходят действия с 0x0B7E15163 и 0x09E3779B9.
Эти числа пишутся в область памяти через один, иногда через один, но число используется одно и тоже.
Пример куска стека на картинке в приложении. И эта область в памяти занимает (если я правильно подсчитал) 1D0h (464 dec). В моем случае начинается с 0018E700 и заканчивается 0018E530.
Затем генерится похожий массив, но в другой области (0018F700).
Что это? Расширение ключа?

b6c3_19.09.2016_EXELAB.rU.tgz - stack.png




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 21:55
· Личное сообщение · #9

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

Mefist0 пишет:
Есть куча однотипных операций, в которых происходят действия с 0x0B7E15163 и 0x09E3779B9.

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



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

Создано: 19 сентября 2016 22:06 · Поправил: Mefist0
· Личное сообщение · #10

-=AkaBOSS=-,
так и ковыряю алгоритм для того, чтобы понять, где сам пользовательский ключ.
Потому как алго сразу начинает куда-то копировать эти два числа P и Q.
У меня подозрения, что пользовательский ключ как раз находится в стеке между P и Q.
Ведь как я понял этими константами "разбавляется" пользовательский ключ.
Поправьте, если не прав.

Исходники еще раз посмотрю, но я ориентируюсь пока что на формулу в Вики.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 22:14
· Личное сообщение · #11

Mefist0 пишет:
так и ковыряю алгоритм для того, чтобы понять, где сам пользовательский ключ.

ну вот эта процедура которая вертит этими константами, по идее, принимает два аргумента - адрес пользовательского ключа и его длину.

найди откуда вызывается эта функция и сможешь увидеть что в неё передаётся



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

Создано: 19 сентября 2016 22:32
· Личное сообщение · #12

-=AkaBOSS=- пишет:
найди откуда вызывается эта функция и сможешь увидеть что в неё передаётся


В функцию передаются длины имени и серийника, имя и серийник.
А что с ними дальше происходит - непонятно. Я долго трейсил и не заметил обращений к этим переменным.
Может пользовательский ключ быть жестко зашит в программе постоянно?




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 19 сентября 2016 22:53
· Личное сообщение · #13

Mefist0 пишет:
Может пользовательский ключ быть жестко зашит в программе постоянно?


может пора положить конец гаданиям и показать цель?



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

Создано: 20 сентября 2016 07:52
· Личное сообщение · #14

-=AkaBOSS=- пишет:
может пора положить конец гаданиям и показать цель?


Хорошо, но только если у меня самого опустятся руки
Если сделаете за меня - ума это мне не прибавит.
Вы итак хорошо помогаете.


 eXeL@B —› Крэки, обсуждения —› Разбор алгоритма RC6
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати