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

 eXeL@B —› Основной форум —› Статья. Исследование и анализ алгоритма защиты TSRh official keygenme #1
Посл.ответ Сообщение


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 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

Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 14 июня 2013 00:58
· Личное сообщение · #2

Вообще загадка не угадана. Там все сводится к квадратному уравнению. И знание численных методов для решения уравнения 5-ой степени не требуется. Т.е. требуется познать FPU (многие крекеры решившие данный кейгенми, впервые изучили FPU из-за этого крекми), если он еще не познан, кропотливо разобрать все хэши и преобразования и проявить небольшую смекалку и свести финальное уравнение в уравнение 2-ой степени, т.е. квадратное, которые в школе все решать научились.

Хотя признаюсь, после кейгена в варианте квадратного уравнения, я сделал уравнение 5-ой степени через метод Ньютона. Но! Сделал это на чистом ассемблере, на паскале или си это скучно и не об этом. Этот кейгенми нет цели просто решить, это не грандиозно сложная задача, которая должна выявить уровень крекера, а простой обучающий курс для человека, который может еще через месяц или полгода будет выплевывать 100 кейгенов в месяц, как такие легенды, как Funbit и Nitrogen.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 14 июня 2013 01:21
· Личное сообщение · #3

int пишет:
впервые изучили FPU из-за этого крекми

Да и я не стыкался с таким кол-вом фпу-команд до этого (так пара-тройка, которые либо хексрейс легко разбирал либо сразу было понятно).

int пишет:
Вообще загадка не угадана.

Возможно. Я не говорю, что у меня единственно правильный и самый короткий/простой путь. У меня такое видение решения, хотя подозревал, что можно что-то упростить, так как обращаемый цикл с "ролами" над 3-им блоком не пришлось обращать и та часть, где берутся индексы по 256-байтовой табличке тоже обращаема, но в моем решении тоже не пришлось.

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

-----
ds




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

Создано: 14 июня 2013 15:31
· Личное сообщение · #4

у меня вот только один вопрос: "зачем?"
хочешь показать всем, что ты неебически крут и решил официальный кейгенми от TSRh (через пень-колоду, правда)? Молодец, возьми с полки конфетку.

прошу прощения за мат, не смог подобрать подходящее слово



Ранг: 9.8 (гость), 20thx
Активность: 0.010
Статус: Участник
tPORt

Создано: 14 июня 2013 15:54 · Поправил: JMPer
· Личное сообщение · #5

Ну сделал - молодец, можно было спросить у тсрх перед выкладыванием.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 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




Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 14 июня 2013 16:08
· Личное сообщение · #7

DimitarSerg
Молодец хорошая работа.



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 14 июня 2013 16:08
· Личное сообщение · #8

[X-Ray] пишет:
у меня вот только один вопрос: "зачем?"

А зачем пишутся кигенми?
Кигенми не какой то приватный, а лежит для паблика!

DimitarSerg пишет:
Хоть один номерок неверный сгенерил ?

Имелось ввиду наверно что решил не как все. А если сделано не как "Я", то значит неверно.
И киген на С или паскалике - тоже не есть гуд, ибо скучно и не об этом

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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 14 июня 2013 16:15 · Поправил: ARCHANGEL
· Личное сообщение · #9

Да и я вот что-то не понял, почему на человека наехали. DimitarSerg - молодец. Статью написал, всё подробно объяснил. Респект.

-----
Stuck to the plan, always think that we would stand up, never ran.


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

Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 14 июня 2013 16:58
· Личное сообщение · #10

А как теперь будут принимать людей в TSRH ?



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 14 июня 2013 17:03
· Личное сообщение · #11

Есть еще keygenme #2 )



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 14 июня 2013 17:22
· Личное сообщение · #12

а где он есть?



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 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

какой то там




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 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

Forbidden
This is antileeching system of TSRH

А не, качается, если подумать

За 30 секунд бегло оценил. Вроде проще первого (думаю на порядок)...
Первый ценен фпу

-----
ds




Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 14 июня 2013 19:07 · Поправил: SWR
· Личное сообщение · #15

DimitarSerg
я его там разобрал.
Только в TSRh сразу не понравилось.
Почитал устав - пахать как на работе.


PS я его брутом сделал .
Хотя тут его не любят (тут на конкурсе крекеров 1е задание тоже брутом. (не искал дырку) зато универсально. заткнув дырку мой брут все равно работал бы).
Я считай что если брут максимум 1-2 секунды работает. то норм.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 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




Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 15 июня 2013 00:11
· Личное сообщение · #17

DimitarSerg, от души спасибо за познавательную статью и потраченное время!



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 24 июня 2013 15:19
· Личное сообщение · #18

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

Первым делом необходим разбор всех процедур, внутренних для основной процедуры проверки ключа. Первой встречается hex2int (перевод строкового шестнадцатеричного числа в число). Сразу становится понятно, что код состоит из 4-х блоков. 1-ый 4 цифры, остальные по 8. Далее есть strlen и crc32. В самой процедуре встречается несколько необратимых (хэширование) и обратимых алгоритмов. Хэши восстанавливаем в своем кейгене, обратимые алгоритмы разворачиваем. Теперь о двух финальных проверках:
Code:
  1. flt_404054      dd 7.77
  2. ...
  3. .text:00401A03                 mov     eax, [ebp+block4]
  4. .text:00401A06                 bswap   eax
  5. .text:00401A08                 sub     eax, [ebp+username_crc32]
  6. .text:00401A0B                 xor     eax, 0FADEC0DEh
  7. .text:00401A10                 mov     [ebp+X], eax
  8. .text:00401A13                 fld     [ebp+X]
  9. .text:00401A16                 fabs
  10. .text:00401A18                 fcomp   flt_404054
  11. .text:00401A1E                 fstsw   ax
  12. .text:00401A21                 sahf
  13. .text:00401A22                 jb      short loc_401AA2

Ну здесь проверяется X. username_crc32, который уже успел пройти через операцию NOT, ксорится с FADEC0DE, помещается в стэк FPU, берется абсолютное значение (модуль) и сравнивается с 7.77. Причем здесь 7.77? На самом деле это защита от подстановки малых значений X. А вот следующая проверка, с которой все становится понятно:
Code:
  1. .text:00401A24                 nop
  2. .text:00401A25                 finit
  3. .text:00401A28                 fld     [ebp+X]
  4. .text:00401A2B                 fmul    [ebp+X]
  5. .text:00401A2E                 fld     [ebp+B0]
  6. .text:00401A31                 fmulp   st(1), st
  7. .text:00401A33                 fld     [ebp+X]
  8. .text:00401A36                 fmul    [ebp+X]
  9. .text:00401A39                 fimul   [ebp+B1]
  10. .text:00401A3C                 faddp   st(1), st
  11. .text:00401A3E                 fld     [ebp+X]
  12. .text:00401A41                 fimul   [ebp+C]
  13. .text:00401A44                 faddp   st(1), st
  14. .text:00401A46                 fadd    [ebp+D0]
  15. .text:00401A49                 fild    [ebp+D1]
  16. .text:00401A4C                 fabs
  17. .text:00401A4E                 fchs
  18. .text:00401A50                 faddp   st(1), st
  19. .text:00401A52                 fld     [ebp+X]
  20. .text:00401A55                 fmul    [ebp+X]
  21. .text:00401A58                 fmul    [ebp+X]
  22. .text:00401A5B                 fmul    [ebp+X]
  23. .text:00401A5E                 fmul    [ebp+X]
  24. .text:00401A61                 fld     [ebp+A1]
  25. .text:00401A64                 fmulp   st(1), st
  26. .text:00401A66                 faddp   st(1), st
  27. .text:00401A68                 fld     [ebp+X]
  28. .text:00401A6B                 fmul    [ebp+X]
  29. .text:00401A6E                 fmul    [ebp+X]
  30. .text:00401A71                 fmul    [ebp+X]
  31. .text:00401A74                 fmul    [ebp+X]
  32. .text:00401A77                 fld     [ebp+A0]
  33. .text:00401A7A                 fmulp   st(1), st
  34. .text:00401A7C                 faddp   st(1), st
  35. .text:00401A7E                 fabs
  36. .text:00401A80                 fcom    flt_404044
  37. .text:00401A86                 fstsw   ax
  38. .text:00401A89                 sahf
  39. .text:00401A8A                  jnb     short loc_401AA2

В человеческой форме это выглядит как

(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_


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 24 июня 2013 21:52 · Поправил: DimitarSerg
· Личное сообщение · #19

int пишет:
Вы такие кейгены пользователям тоже будете предлагать?

Не в защиту SWR (так как сам признаю и ценю тру релизы (кейгены к интересным алго)), но поверьте, да я думаю вы и сами согласны, что как в своё время говорил Красный Барон "Пользователю пох*й". Если у него даже будет выводится один серийник в едитбокс (брутом 10-минутны) но будет регать нужную ему программу, то пользователь будет счастлив.
Это Вы, я, другие кейгенеры могут заценить что-то интересное (сложная рега разобрана + красивый эффект + gfx + трекерная музычка) = hi-quality release
А именно пользователям (большинству) скорее всего насрать, и если серийник не привязан к машине, то он вообще сохранит его в serial.txt а кейген потрёт к х*ям.

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

p.p.s извините что написал дофига, сегодня ДР, позволил себе пару бутылок пива раз в полгода выпить ), жара +37 (в тени), шо то Остапа понесло

-----
ds


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

Ранг: 13.0 (новичок), 2thx
Активность: 0.030
Статус: Участник

Создано: 25 июня 2013 15:46
· Личное сообщение · #20

Порадовал, статей на кряклабе уже давно не было
Только для новичков как мне кажется слабо разжевано а профи и без статьи разберутся
Команда tsrh как я понял уже 4 года в коме находится а то и больше?



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 25 июня 2013 19:02
· Личное сообщение · #21

DimitarSerg
Методы касательных, метод хорд и другие методы решения уравнений больших степеней - это тоже по сути брутфорс, только умный. Заставлять пользователя программы, у которого до сих пор Pentium II, ждать два часа, пока брутфорс посчитает все - не красиво. Согласен, пользователю в принципе пофиг. У меня были случаи, что кроме как брутфорсом нельзя было сделать. Впихнул предварительно вычисленную таблицу значений прямо в кейген и работал он мгновенно на любой машине, давая 1000 разных вариантов для каждого имени.

Просто смысл тогда кейгена, если в него зашит длинный брут? Есть патчи и другие решения. Данный кейгенми, как я выше сказал, имел другую цель - отсеять лентяев, которые будут стучаться в команду. Rigel тоже сделал кейген для этого кейгенми, хотя его уровень опыта, когда он вступал в команду, сильно отличается от того, что он может сейчас. TSRh по-моему мнению это школа реверса прежде всего, а уже потом команда, которая радует своими релизами. Я ушел не потому, что надоело штамповать релизы, а потому что слишком много не ординарных авторитарных личностей в команде, с которыми я часто конфликтовал.

matrix пишет:
а профи и без статьи разберутся

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




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 01 июля 2013 19:10
· Личное сообщение · #22

DimitarSerg пишет:
За 30 секунд бегло оценил. Вроде проще первого (думаю на порядок)

Мне второй больше понравился

matrix пишет:
Команда tsrh как я понял уже 4 года в коме находится а то и больше?

Не, точно не 4 года, у них домен менялся чуть ли ни каждый год.

P.S. Кто знает последний адрес? ([X-Ray])

-----
Лучше быть одиноким, но свободным © $me




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

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

http://tsrh.freeserials.com/



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

Создано: 02 июля 2013 01:02
· Личное сообщение · #24

Ничего непонятно. А где сама статья про второй кейгенми?



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 02 июля 2013 09:48 · Поправил: tihiy_grom
· Личное сообщение · #25

neoBlinXaker пишет:
Ничего непонятно. А где сама статья про второй кейгенми?







Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 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




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

Создано: 02 июля 2013 14:06
· Личное сообщение · #27

DimitarSerg, а мне было бы интересно почитать тутор от Вас




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 04 июля 2013 11:33 · Поправил: Isaev
· Личное сообщение · #28

Это конечно дело автора, но я думаю зря статью на паблик
Как по мне, то это самый интересный кейгенми, который я встречал, убил на него много времени в своё время и fpu да, встретил первый раз в нём, было очень интересно и получил удовольствие...
Ребята его как тест для вступления в тиму писали вроде. Достойная работа получилась)

ps: кто не делал его сам, не читайте статью, пока не осилите! Он того стоит ;)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 13.0 (новичок), 2thx
Активность: 0.030
Статус: Участник

Создано: 06 июля 2013 00:31
· Личное сообщение · #29

int пишет:
профи почему-то делают брутфорс)

Это професиональный брутфорс

DimitarSerg
Вот еще не решенный интересный не тупо крипто и математика

ab5e_06.07.2013_EXELAB.rU.tgz - kgm12.exe




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 06 июля 2013 02:40 · Поправил: DimitarSerg
· Личное сообщение · #30

matrix пишет:
Вот еще не решенный интересный не тупо крипто и математика

Для интересных кейгенми есть вроде тема, создана Isaev, туда было бы лучше запостить, просто насчёт кейгенми TSRh - это как исключение, длинная история, почему я его сделал и написал тутор. На самом деле я кейгенмисы не люблю, предпочитаю реальный софт, кейген к которому можно релизнуть, а иногда еще и подзаработать. Поэтому если что от меня и появится в плане туторов, то уже на примере реального незакейгененного софта )
Прошу не оффтопить, если что по теме - пишите конечно, а то съехали немного не туда, не охота закрывать.

-----
ds



 eXeL@B —› Основной форум —› Статья. Исследование и анализ алгоритма защиты TSRh official keygenme #1
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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