eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: RevCred (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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

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

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

Всем привет!

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

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


Ранг: 140.5 (ветеран)
Статус: Участник

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

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

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

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


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

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

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

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

Ранг: 2.8 (гость)
Статус: Участник

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

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

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

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

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

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

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



Ранг: 140.5 (ветеран)
Статус: Участник

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

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

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

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

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

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

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

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


Ранг: 140.5 (ветеран)
Статус: Участник

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

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

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

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

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

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

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

{ Атач доступен только для участников форума } - stack.png


Ранг: 140.5 (ветеран)
Статус: Участник

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

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

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

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

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

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

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

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


Ранг: 140.5 (ветеран)
Статус: Участник

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

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

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

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

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

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

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


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


Ранг: 140.5 (ветеран)
Статус: Участник

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

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


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

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

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

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


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

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS