eXeL@B —› Основной форум —› Статья. Исследование и анализ алгоритма защиты TSRh official keygenme #1 |
Посл.ответ | Сообщение |
|
Создано: 13 июня 2013 23:58 · Поправил: DimitarSerg · Личное сообщение · #1 В общем разбор в аттаче. Сложность - не для новичков (crc-32, quintic equation, fpu math) Инструменты: OllyDbg 1.10+плагины для удобства (NameChanger, Table Exporter, Code Ripper), Borland Delphi 7 (для кейгена) Надеюсь TSRh в скором времени обновят keygenme ;). 7b95_13.06.2013_EXELAB.rU.tgz - tsrh.rar ----- ds | Сообщение посчитали полезным: SReg, plutos, ZaZa, verdizela, Abraham, nick8606, alexpol, ARCHANGEL, evggrig, Gideon Vi, 4kusNick, Evol, Rio, Dynamic, tempread, KViNTO, matrix, hors, _ruzmaz_, stas_02, Lacoste, ssx |
|
Создано: 14 июня 2013 00:58 · Личное сообщение · #2 Вообще загадка не угадана. Там все сводится к квадратному уравнению. И знание численных методов для решения уравнения 5-ой степени не требуется. Т.е. требуется познать FPU (многие крекеры решившие данный кейгенми, впервые изучили FPU из-за этого крекми), если он еще не познан, кропотливо разобрать все хэши и преобразования и проявить небольшую смекалку и свести финальное уравнение в уравнение 2-ой степени, т.е. квадратное, которые в школе все решать научились. Хотя признаюсь, после кейгена в варианте квадратного уравнения, я сделал уравнение 5-ой степени через метод Ньютона. Но! Сделал это на чистом ассемблере, на паскале или си это скучно и не об этом. Этот кейгенми нет цели просто решить, это не грандиозно сложная задача, которая должна выявить уровень крекера, а простой обучающий курс для человека, который может еще через месяц или полгода будет выплевывать 100 кейгенов в месяц, как такие легенды, как Funbit и Nitrogen. |
|
Создано: 14 июня 2013 01:21 · Личное сообщение · #3 int пишет: впервые изучили FPU из-за этого крекми Да и я не стыкался с таким кол-вом фпу-команд до этого (так пара-тройка, которые либо хексрейс легко разбирал либо сразу было понятно). int пишет: Вообще загадка не угадана. Возможно. Я не говорю, что у меня единственно правильный и самый короткий/простой путь. У меня такое видение решения, хотя подозревал, что можно что-то упростить, так как обращаемый цикл с "ролами" над 3-им блоком не пришлось обращать и та часть, где берутся индексы по 256-байтовой табличке тоже обращаема, но в моем решении тоже не пришлось. Если у кого замечания - с радостью выслушаю, тем более решение можно сказать уже в паблике, поэтому кому интересна задача - предлагайте свои решения. ----- ds |
|
Создано: 14 июня 2013 15:31 · Личное сообщение · #4 |
|
Создано: 14 июня 2013 15:54 · Поправил: JMPer · Личное сообщение · #5 |
|
Создано: 14 июня 2013 15:56 · Личное сообщение · #6 [X-Ray] пишет: у меня вот только один вопрос: "зачем?" а почему нет ? Было свободное время и желание... [X-Ray] пишет: хочешь показать всем, что ты неебически крут и решил официальный кейгенми от TSRh Хотел самому себе доказать, что сделаю, а статья само собой получилась. Особенно https://ssl.exelab.ru/f/action=vthread&forum=7&topic=5954#12 [X-Ray] пишет: (через пень-колоду, правда) Хоть один номерок неверный сгенерил ? p.s. в общем примерно таких комментов и ждал от тсрх, изначально статья планировалась для хабра, но нервов не хватило из готового ртфа перегнать нормально в хабровский редактор (то, что можно видеть в chm-файле кардинально отличается от того, что сделал хабраредактор с текстом (особенно подсветкой кода)) ----- ds |
|
Создано: 14 июня 2013 16:08 · Личное сообщение · #7 |
|
Создано: 14 июня 2013 16:08 · Личное сообщение · #8 [X-Ray] пишет: у меня вот только один вопрос: "зачем?" А зачем пишутся кигенми? Кигенми не какой то приватный, а лежит для паблика! DimitarSerg пишет: Хоть один номерок неверный сгенерил ? Имелось ввиду наверно что решил не как все. А если сделано не как "Я", то значит неверно. И киген на С или паскалике - тоже не есть гуд, ибо скучно и не об этом А посетители форума могли бы и лайкнуть статью, при том что статьи в последнее время на лабе пишутся раз в пятитку. Да и за бесплатно уже мало кто даже дебагер запускает. |
|
Создано: 14 июня 2013 16:15 · Поправил: ARCHANGEL · Личное сообщение · #9 Да и я вот что-то не понял, почему на человека наехали. DimitarSerg - молодец. Статью написал, всё подробно объяснил. Респект. ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: hors |
|
Создано: 14 июня 2013 16:58 · Личное сообщение · #10 |
|
Создано: 14 июня 2013 17:03 · Личное сообщение · #11 |
|
Создано: 14 июня 2013 17:22 · Личное сообщение · #12 |
|
Создано: 14 июня 2013 18:32 · Поправил: SWR · Личное сообщение · #13 http://exelab.ru/f/action=vthread&forum=1&topic=262 это первый? второй совсем другой. тоже математика но несколько разных алг. был на форуме топик, гдето http://tsrh.freeserials.com/search.php?search=1&fprogram=1&program=keygenme+&filename=&releaser=TSRh+TeaM&datefrom=2013-05-15&dateto=2013-06-14&max_onpage=20&sort_type=progname какой то там |
|
Создано: 14 июня 2013 18:49 · Поправил: DimitarSerg · Личное сообщение · #14 SWR пишет: http://exelab.ru/f/action=vthread&forum=1&topic=262 это первый? не вот первый http://exelab.ru/f/action=vthread&forum=2&topic=13266&page=0 This is antileeching system of TSRH А не, качается, если подумать За 30 секунд бегло оценил. Вроде проще первого (думаю на порядок)... Первый ценен фпу ----- ds |
|
Создано: 14 июня 2013 19:07 · Поправил: SWR · Личное сообщение · #15 DimitarSerg я его там разобрал. Только в TSRh сразу не понравилось. Почитал устав - пахать как на работе. PS я его брутом сделал . Хотя тут его не любят (тут на конкурсе крекеров 1е задание тоже брутом. (не искал дырку) зато универсально. заткнув дырку мой брут все равно работал бы). Я считай что если брут максимум 1-2 секунды работает. то норм. |
|
Создано: 14 июня 2013 22:32 · Поправил: DimitarSerg · Личное сообщение · #16 int пишет: Там все сводится к квадратному уравнению. если обнулить оба коэффициента при х^5 ? ну тогда да, один у меня обнулен, другой обнуляется так: ebp2c:=Log10(ebp4A-StrToInt('$'+b2_6)); то есть чтобы получить 0 ( log10 (1) = 0) нужно чтобы ebp4A-StrToInt('$'+b2_6) = 1 ebp4A:=sum shr 8 and $F or 2; оно там на црц считается от имени и еще математика... в общем обращать не нужно а вот b2_6 - 6ой символ второго блока запросто можно задать b2_6 = ebp4A-1 Ну а дальше останется квадратное. Видимо так ? ----- ds |
|
Создано: 15 июня 2013 00:11 · Личное сообщение · #17 |
|
Создано: 24 июня 2013 15:19 · Личное сообщение · #18 Поскольку я потерял свое решение данного кейгенми, все же опишу по памяти краткий смысл взлома. Первым делом необходим разбор всех процедур, внутренних для основной процедуры проверки ключа. Первой встречается hex2int (перевод строкового шестнадцатеричного числа в число). Сразу становится понятно, что код состоит из 4-х блоков. 1-ый 4 цифры, остальные по 8. Далее есть strlen и crc32. В самой процедуре встречается несколько необратимых (хэширование) и обратимых алгоритмов. Хэши восстанавливаем в своем кейгене, обратимые алгоритмы разворачиваем. Теперь о двух финальных проверках: Code:
Ну здесь проверяется X. username_crc32, который уже успел пройти через операцию NOT, ксорится с FADEC0DE, помещается в стэк FPU, берется абсолютное значение (модуль) и сравнивается с 7.77. Причем здесь 7.77? На самом деле это защита от подстановки малых значений X. А вот следующая проверка, с которой все становится понятно: Code:
В человеческой форме это выглядит как (A0 + A1)X^5 + (B0 + B1)X^2 + CX + D0 - |D1| < 0.3131313 Опять же, под числом 0.3131313 скрыта идея - не сравнивать с нулем, а замаскировать ноль, просто заменив его маленьким значением. На самом же деле это уравнение 5-ой степени: (A0 + A1)X^5 + (B0 + B1)X^2 + CX + D0 - |D1| = 0 Идея Фанбита была в том, чтобы обнулить A0 + A1. Решать квадратные уравнения в школе научились все. Но численные методы позволяют решить это уравнение и если оставить коэффициент при X^5 в вещественных корнях. Я применил метод касательных (метод Ньютона), реализовав его на FPU (математическое обоснование метода здесь: http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0). Сначала находим производную функцию: F = (A0 + A1)X^5 + (B0 + B1)X^2 + CX + D0 - |D1| F' = 5(A0 + A1)X^4 + 2(B0 + B1)X + C Реализация на FPU не сохранилась, но в ней нет ничего интересного. Заново ее делать я не стал. Реализовав обе функции в виде процедур с FPU дальше остается только выбрать какой-нибудь X. На самом деле любой. Потом надо реализовать процедуру приближения к корню, каждый раз новый X определяется формулой X_new = X_old - F(X_old) / derivative(X_old). Нужно делать это с определенной точностью, допустим это 4 знака после запятой. Тогда имеем формулу проверки abs(X_new - X_old) < 0.00001. Как только условие отрабатывает - мы нашли корень уравнения. Его обратная конвертация в 4-ый блок серийного номера завершает процедуру генерации ключа. Для чего создавался этот keygen me, как вижу это я: 1. Научить человека разбираться в FPU, если он до этого не знал даже смысл команд математического сопроцессора. Зачем это надо? Вступив в TSRh одной из первых 20 программ, мне попалась такая, в которой FPU было и мне это пригодилось. 2. Научить человека разбираться в стандартных алгоритмах. Пример - процедура длины строки. Такая оптимизация длины строки встречается много где. 3. Научить или проверить способность человека отличать обратимые алгоритмы от необратимых. Для этого дан хэш crc32 (а это еще учит новичка искать по константам алгоритмы хэширования, что тоже потребуется в дальнейшем) и несколько других кустарных алгоритмов. 4. Проверить наличие смекалки у крекера. Обнулить коэффициент при X^5 мало кто в итоге догадался. Именно из таких людей, способных пройти все эти проверки, вырастают "бомбардировщики" команды TSRh, способные справиться с любой задачей. И дело не в том, что надо пахать как лошадь, как сказал SWR, который этот кейгенми не решил. Дело в том, что надо делать это красиво. Ибо TSRh всегда боролась за качество. Лозунг команды почитайте - TSRh делает кейгены по качеству, лучше чем качество программ, для которых эти кейгены написаны. Хотя я видел экземпляры, которые из-за графики и наворотов не отлаженных не везде работают даже. По поводу решения SWR: может на мощной игровой машине брутфорс и сходится быстро, но когда я проверял это решение, оно у меня заглючило минут на 15, повесив всю систему. Вы такие кейгены пользователям тоже будете предлагать? Если вы делаете креки для себя, зачем вообще вступать в команды какие либо? Да, для кого-то все это смешно, дух соревнования, качество релизов. Но это сцена, изначально там все это было. Вдумайтесь в год создания кейгенми - 2004. | Сообщение посчитали полезным: SReg, 4kusNick, ZaZa, 3ton, _ruzmaz_ |
|
Создано: 24 июня 2013 21:52 · Поправил: DimitarSerg · Личное сообщение · #19 int пишет: Вы такие кейгены пользователям тоже будете предлагать? Не в защиту SWR (так как сам признаю и ценю тру релизы (кейгены к интересным алго)), но поверьте, да я думаю вы и сами согласны, что как в своё время говорил Красный Барон "Пользователю пох*й". Если у него даже будет выводится один серийник в едитбокс (брутом 10-минутны) но будет регать нужную ему программу, то пользователь будет счастлив. Это Вы, я, другие кейгенеры могут заценить что-то интересное (сложная рега разобрана + красивый эффект + gfx + трекерная музычка) = hi-quality release А именно пользователям (большинству) скорее всего насрать, и если серийник не привязан к машине, то он вообще сохранит его в serial.txt а кейген потрёт к х*ям. p.s. Один мой друг-реверсер разбирал интересное алго математическое, загорелся был идеей графического представление решения прямо в кейгене, но поняв, что это мало кто оценит забил на интересную на мой взгляд идею. p.p.s извините что написал дофига, сегодня ДР, позволил себе пару бутылок пива раз в полгода выпить ), жара +37 (в тени), шо то Остапа понесло ----- ds | Сообщение посчитали полезным: Abraham |
|
Создано: 25 июня 2013 15:46 · Личное сообщение · #20 |
|
Создано: 25 июня 2013 19:02 · Личное сообщение · #21 DimitarSerg Методы касательных, метод хорд и другие методы решения уравнений больших степеней - это тоже по сути брутфорс, только умный. Заставлять пользователя программы, у которого до сих пор Pentium II, ждать два часа, пока брутфорс посчитает все - не красиво. Согласен, пользователю в принципе пофиг. У меня были случаи, что кроме как брутфорсом нельзя было сделать. Впихнул предварительно вычисленную таблицу значений прямо в кейген и работал он мгновенно на любой машине, давая 1000 разных вариантов для каждого имени. Просто смысл тогда кейгена, если в него зашит длинный брут? Есть патчи и другие решения. Данный кейгенми, как я выше сказал, имел другую цель - отсеять лентяев, которые будут стучаться в команду. Rigel тоже сделал кейген для этого кейгенми, хотя его уровень опыта, когда он вступал в команду, сильно отличается от того, что он может сейчас. TSRh по-моему мнению это школа реверса прежде всего, а уже потом команда, которая радует своими релизами. Я ушел не потому, что надоело штамповать релизы, а потому что слишком много не ординарных авторитарных личностей в команде, с которыми я часто конфликтовал. matrix пишет: а профи и без статьи разберутся профи почему-то делают брутфорс) новичкам рекомендую не читать статью, а сесть и потратить хоть месяц на разбор (я потратил 3 месяца на решение, но плотно сидел над задачей всего лишь две недели буквально), это хороший учебник |
|
Создано: 01 июля 2013 19:10 · Личное сообщение · #22 DimitarSerg пишет: За 30 секунд бегло оценил. Вроде проще первого (думаю на порядок) Мне второй больше понравился matrix пишет: Команда tsrh как я понял уже 4 года в коме находится а то и больше? Не, точно не 4 года, у них домен менялся чуть ли ни каждый год. P.S. Кто знает последний адрес? ([X-Ray]) ----- Лучше быть одиноким, но свободным © $me |
|
Создано: 01 июля 2013 19:11 · Личное сообщение · #23 |
|
Создано: 02 июля 2013 01:02 · Личное сообщение · #24 |
|
Создано: 02 июля 2013 09:48 · Поправил: tihiy_grom · Личное сообщение · #25 |
|
Создано: 02 июля 2013 12:50 · Поправил: DimitarSerg · Личное сообщение · #26 *offtop* Эх блин, разделал кейгенми от RED (http://redcrew.astalavista.ms/home/downloads/RED.Official.KeygenMe.Read.NfO-RED.zip , банальщина по большому счёту), думал еще написать небольшую статью, но на последнем этапе (решение DLP) вбил в гугл один из параметров подписи Эль-Гамаля и нашлось одно совпадение - http://bbs.pediy.com/archive/t-132650.html Какой-то китаец уже выдал решение на паблик, поэтому наверное делать тутор уже не актуально ----- ds |
|
Создано: 02 июля 2013 14:06 · Личное сообщение · #27 |
|
Создано: 04 июля 2013 11:33 · Поправил: Isaev · Личное сообщение · #28 Это конечно дело автора, но я думаю зря статью на паблик Как по мне, то это самый интересный кейгенми, который я встречал, убил на него много времени в своё время и fpu да, встретил первый раз в нём, было очень интересно и получил удовольствие... Ребята его как тест для вступления в тиму писали вроде. Достойная работа получилась) ps: кто не делал его сам, не читайте статью, пока не осилите! Он того стоит ;) ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 06 июля 2013 00:31 · Личное сообщение · #29 int пишет: профи почему-то делают брутфорс) Это професиональный брутфорс DimitarSerg Вот еще не решенный интересный не тупо крипто и математика ab5e_06.07.2013_EXELAB.rU.tgz - kgm12.exe |
|
Создано: 06 июля 2013 02:40 · Поправил: DimitarSerg · Личное сообщение · #30 matrix пишет: Вот еще не решенный интересный не тупо крипто и математика Для интересных кейгенми есть вроде тема, создана Isaev, туда было бы лучше запостить, просто насчёт кейгенми TSRh - это как исключение, длинная история, почему я его сделал и написал тутор. На самом деле я кейгенмисы не люблю, предпочитаю реальный софт, кейген к которому можно релизнуть, а иногда еще и подзаработать. Поэтому если что от меня и появится в плане туторов, то уже на примере реального незакейгененного софта ) Прошу не оффтопить, если что по теме - пишите конечно, а то съехали немного не туда, не охота закрывать. ----- ds |
eXeL@B —› Основной форум —› Статья. Исследование и анализ алгоритма защиты TSRh official keygenme #1 |