защита клиент игры ltimaOnline

Тема в разделе "WASM.RESEARCH", создана пользователем mirage, 6 янв 2005.

  1. mirage

    mirage New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2005
    Сообщения:
    4
    Адрес:
    Russia
    Я могу ошибаться но общий смысл защиты таков. К клиенту идёт dll'ка (100кб), которая считает контрольные суммы файлов и шифрует всё что клиент отсылает на основе этих ключей. По некому алгоритму. Аналогично происходит на сервере, дешифруя данные.

    Минусы защиты только в том что писалась на делфи и довольно толстая и то что не зашифрована в надежде что все кто будут ломать сами обломаются и до конца копаться не будут.

    Помогите разобраться как можно сделать так чтобы ключи оставались всегда нужными.

    Кому не трудно помоч, подробности по ICQ 9042515 или лично, за пивом)))



    [​IMG] 884578151__dll.rar
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    mirage



    Ночью надо спать :) Ты топик перепутал -

    здесь помощь новички не просят. Особенно

    так сумбурно : чего ты хочешь-то ?!

    Что означает
    ???
     
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    TCrypt32, ECryptError, "Ошибка декодирования. Несовпадение имитовставки.", никто не слыхал что это, гост?







    А откуда они берутся?
     
  4. mirage

    mirage New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2005
    Сообщения:
    4
    Адрес:
    Russia
    Объясню про ключи:

    Как я говорил, это лишь мои догадки, что при загрузке клиента

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

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

    P.S. Почему я перепутал топ, здесь вроде изучение и дисасемблирование)
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105




    Но не разгадки догадок. По названиям функций

    тебе уже подсказали, что это GOST89 - отечественная

    система шифрования. Если сервер тупой, то

    надо просто в отладчике полазить по клиенту

    и забить проверки сумм и генерацию разных

    ключей. Но только GOST89 так не делает,

    поэтому твои догадки неверны.
     
  6. mirage

    mirage New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2005
    Сообщения:
    4
    Адрес:
    Russia
    а с чего ты взял что это GOST89? И что она делает в таком случае, по-твоему?
     
  7. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    mirage





    В двух словах это все равно будет ничем не лучше,

    чем ты написал. Да и все равно ты не об"яснил,

    что ты хочешь ?! Ты видимо и сам это еще не знаешь.







    Это не я взял, а просто раз"ясняю фразу :



    Но для тебя это просто набор непонятных слов ?!

    А это все в "твоей" dll находится.
     
  8. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    Крипт тут разделяется на две части

    1)Самопальная...

    2)TCrypt32 (GOST89?)



    Теперь сам процесс... клиент поулчает от сервера информацию длинной 40 байт далее шифрует её и посылает на сервер но уже 44 байта .. в конец цепляя ИП адрес себя... сервер расшифровывает инфу и если всё ОК то пускает дальше и идёт номральный трафико обмен... а если нет то Ассес Денайд...



    При подключения к серверу мы поулчаем 40 байт которые должны зашифровать ... вначале идёт самапальное шифрование причём шифруются только некоторые части ... пакета... ... то бишь конкретно...



    CODE:00413B42 call GetFirstXorKeyFromDllSize

    CODE:00413B47 mov ebx, eax

    CODE:00413B49 mov eax, ds:GeneralDataPointer

    CODE:00413B4E mov eax, [eax+20h]



    в EBX у нас ключ который получился при вызове функции он всегда один и тот же если ДЛЛ у нас оригинальная +)... в EAX собсвенно говря указатель на первый байт пакета...



    далее ксорим...



    CODE:00413B56 add eax, 20h

    CODE:00413B59 xor [eax], ebx ; First XOR operation



    после чего криптуем ещё 6 участков пакета 6 разными ключами... вот этот цикл..



    CODE:00413B6A CryptLoop:

    CODE:00413B6A mov eax, [ebp+xorTblAddr]

    CODE:00413B6D call LStrToPChar(void)

    CODE:00413B72 mov esi, ebx

    CODE:00413B74 shl esi, 2

    CODE:00413B77 add eax, esi

    CODE:00413B79 push dword ptr [eax]

    CODE:00413B7B mov eax, ds:GeneralDataPointer

    CODE:00413B80 mov eax, [eax+20h]

    CODE:00413B83 call LStrToPChar(void)

    CODE:00413B88 add eax, 4

    CODE:00413B8B add eax, esi

    CODE:00413B8D pop edx

    CODE:00413B8E xor [eax], edx

    CODE:00413B90 inc ebx

    CODE:00413B91 cmp ebx, 6

    CODE:00413B94 jnz short CryptLoop



    на Си это можно представить как...





    unsigned int *ptx = (unsigned int*)buf; //наш пакет



    static unsigned int xorTbl[] =

    {

    0x38D26ACB,

    0x9D5D1F74,

    0xBD2BEAB1,

    0xEBD16290,

    0x24A72C01,

    0x8623FCB1

    };



    for(int i = 0;i<6;i++)

    ptx[i+1]^=xorTbl;



    Ну вот ... эта первая часть крипта пакета +)



    А вообще Ультима это зло =)
     
  9. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    А по поводу загрузки... то при инициализации библиотеки она патчит импорт и хукает CONNECT SEND и RECV да это не оригинальная защита для клиента а хак.. поверх клиента чтоб защитить его от юзеров... защита клиент игры ltimaOnline =)//чтоб быть точным...
     
  10. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
  11. mirage

    mirage New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2005
    Сообщения:
    4
    Адрес:
    Russia
    2Fallout, спасибо )))

    А что на счёт второй части крипта?
     
  12. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    Информация к размышлению....



    www.uosoft.ru - это по поводу того как можно обойти защиту и подменять пакеты програмка зовётся TEOT aka The Eyes Of Truth... ну и ещё какие то ...

    mudator.by.ru - тут кое что тоже по УО

    www.foruo.com - зеркало



    2mirage

    можно и в аське пообщаться прсото довно искал человека который любит ковырять УО.... именно в плане защит...



    2ssx

    Собсвенно гворя от Инжекшан и подобных программ она и сделана...
     
  13. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    Да второй крипт это ГОСТ89 (или подобный)+) нормально работает =) правдо крипт вырипал из асма и оставил в асме часть, а часть переписал в Си... вообще потестил ну да результат один и тот же.. да чуть не забыл криптуется только блок в 40байт а последнии 4 байта это Ип и они не криптуются... после такой проверки..



    Сервер - 40 байт

    Клиент - 44 байта



    используется стандартный трафико обмен на стадии подключения это ЛогинКрипт а на в игре это в данном случаи БлоуФиш