О том, как работает Injection.

Ask for help

Moderators: Murderator+, Murderator

omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

шифровать не умеют 99% эмуляторов, инже шифры не мешают
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

omi4 wrote:шифровать не умеют 99% эмуляторов, инже шифры не мешают

Как это не умеют?.. Те кто не умеют - у тех играют через nocryptclient - там зайти с инжей вообще проще некуда..

Проблема в том, что некоторые всё-таки умеют и успешно это делают. А некоторые даже специально обучены администраторами делать это по-вумному.

Вообще, в наши времена, с либой от некра (вместе с которой идёт отличное описание шифрования в целом) - пора бы научиться шифровать..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

дык укажи где крупт клиент нужен? Шарды где навесное оборудование прилепляют можно пропустить, это не то немного.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

omi4 wrote:дык укажи где крупт клиент нужен? Шарды где навесное оборудование прилепляют можно пропустить, это не то немного.

Рассмотрение частных случаев выходит за рамки этой темы, а тем более - этого раздела.

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

Крипт клиент например на антаресе нужен - ну и что? - Какой прок от этой информации?..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Сразу обиделся...

ilpatch.cfg это файл с шифрованием ну никак не связан, он нужен для патча. Точки для присоединения инжи к клиенту. Антарес с криптом?

Вытри что мы тут нафлудили и поправь.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

omi4 wrote:Сразу обиделся...

ilpatch.cfg это файл с шифрованием ну никак не связан, он нужен для патча. Точки для присоединения инжи к клиенту. Антарес с криптом?

Вытри что мы тут нафлудили и поправь.

Традиционно в файле размещается информация благодаря которой правится память клиента и снимается шифрование. Лично записывал туда diff байтиков простого клиента и патченного нокриптом, для большего понимания ситуации. Делал собственно по указке Yoko, которого целые сутки мучал по ICQ.

"Точки для присоединения инжи к клиенту" - вот это вообще не понял, признаться честно - я всегда недопонимал через какое место лаунчер лепит Injection.dll и направляет на него коннекшн, но чтобы размещать эту информацию в ilpatch.cfg - тут уж вы меня извините, полный бред.

А Антарес - действительно с криптом - зайти на него nocryptclient'ом не получиться. Это KR-серваки не могут похвастаться шифрованием, а вот старый изученный ренисанц - давным давно всеми хорошо шифруется.

ilpatch.cfg это файл ...., он нужен для патча.

Давай тогда заодно определение слова патч, в котором объясни, что патчить непосредственно необходимо под нокрипт и получи текст один в один мой.

PS: Сначала дофлудим, потом вытру.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Injection - можно перевести как введение или инъекция. Он перехватывает и если нужно подменяет истинные данные. Для этого клиен патчится лаучером. В этом файле адреса для патча. Он даже так называется..
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

omi4 wrote:Injection - можно перевести как введение или инъекция. Он перехватывает и если нужно подменяет истинные данные. Для этого клиен патчится лаучером. В этом файле адреса для патча. Он даже так называется..

угу.. а храним мы там инфу по снятию крипта с клиента..

так и называется.. это как? ILPatch = Injection Launcher Patch ?) Млиа..

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

Примечание: Флудить - в условном смысле, т.к. некоторую смысловую нагрузку твои сообщения всё же несут..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

давай по слогам

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

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

Так работают инжа, разор, асист.

Как описать это еще проще даже незнаю.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

omi4 wrote:давай по слогам

Ок.

omi4 wrote:Криптование снимается переписыванием байтиков в ехзешнике, делается это раз и навсегда. Кем написаны икак пользоватся все знают. Делать это при каждом запуске бессмысленно.

Ну не то, чтобы совсем бессмысленно, в любом случае - так делают, против фактов не попрёшь. Взять хотя бы топик Injection 2007.

omi4 wrote:Инжекция происходит следующим макаром. Инжект запускает клиента, находит его в памяти и на основании данных файла о назначении которого спор вычисляет адреса где нужно поправить байтики чтобы перенаправить данные на инжект. Вот и все.

Неправда.

omi4 wrote:Так работают инжа, разор, асист.

См. выше, Yoko Injection видимо особенный. Иначе чем ты объяснишь вполне работоспособную конструкцию:

Code: Select all

"string" crc32 length : 

? Тобишь вообще без байтов.. ? Запускается и работает, если клиент - нокрипт.. Как тогда происходит перенаправление ?..

PS: Что курил?
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Для большего понимания всеми, что в информация в ilpatch.cfg предназначена не для прикручивания клиента к инже, маленькая вырезка из аси:
119060 (03:48:53 2/05/2007)
слушай, а ведь инжа - кулл штука, она после того, как клиент загрузится - в памяти ковырятся, и делает это с лёгкой руки через любую инфу в илпатче :)

Кулл :)

Yoko (13:28:19 2/05/2007)
4) да, если патч статичный, т.е. то что надо править не меняется в зависимости от тех или иных параметров. Более того, программы типа изиуо и ассиста прямо через память управляют клиентом


Не говоря уже про то, что заявление omi4 - написано видимо с большого недосыпу.

Пока есть желание добавить к своему тексту только то, что неплохо бы в конце каждого файла ставить перевод строки - упрощает жизнь.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Временно перенёс в раздел хелпа..

Предлагаю обсудить, а потом обратно - в фак, чтобы не уплыл.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Destruction wrote:
omi4 wrote:давай по слогам

Ок.

omi4 wrote:Криптование снимается переписыванием байтиков в ехзешнике, делается это раз и навсегда. Кем написаны икак пользоватся все знают. Делать это при каждом запуске бессмысленно.

Ну не то, чтобы совсем бессмысленно, в любом случае - так делают, против фактов не попрёшь. Взять хотя бы топик Injection 2007.

omi4 wrote:Инжекция происходит следующим макаром. Инжект запускает клиента, находит его в памяти и на основании данных файла о назначении которого спор вычисляет адреса где нужно поправить байтики чтобы перенаправить данные на инжект. Вот и все.

Неправда.

лауч запускает длл инжи, которая запускает и патчит клиента. После этого лауч больше не нужен.

Что неправда?

omi4 wrote:Так работают инжа, разор, асист.

См. выше, Yoko Injection видимо особенный. Иначе чем ты объяснишь вполне работоспособную конструкцию:

Code: Select all

"string" crc32 length : 

? Тобишь вообще без байтов.. ? Запускается и работает, если клиент - нокрипт.. Как тогда происходит перенаправление ?..

PS: Что курил?


Вопрос не понял.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

omi4 wrote:Вопрос не понял.

Я тебя тоже не понял. Не оверквоть кстате.

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

На что ты мне вот говоришь, что дескать вопрос не понял..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

это часть строки, если нет там цифер, значит нет

вот что будет

Code: Select all

bool Patch::load(const char * filename, unsigned int checksum,
    unsigned int length)
{
    FILE *hFile;
    if((hFile = fopen(filename, "rb")) == 0) return false;

    while(true)
    {
        char buffer[PATCH_LINE_MAX];
        fgets(buffer, PATCH_LINE_MAX, hFile);

        if(feof(hFile)) break;

        char *pToken = &buffer[strspn(buffer, " \t\n\r")];

        if(*pToken++ != '\"') continue;

        char *strName = pToken;

        if((pToken = strchr(pToken, '\"')) == 0) continue;

        *pToken++ = 0;

        unsigned int currentChecksum;
        unsigned int currentLength;

        if(sscanf(pToken, "%x %x", &currentChecksum, &currentLength) != 2) continue;

        if((currentChecksum != checksum) || (currentLength != length)) continue;

        if((pToken = strchr(pToken, ':')) == 0) continue;

        if(!load_line(pToken + 1)) continue;

        strcpy(m_name, strName);

        fclose(hFile);
        return true;
    }

    fclose(hFile);

    return false;
}


вот строчка

Code: Select all

if((pToken = strchr(pToken, ':')) == 0) continue;


по этому и непойму про что ты спросил
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Re: О том, как работает Injection.

Post by Grin »

Injection настроен на получение не зашифрованных пакетов, для чего нужно снять шифрование с клиента.

Никто его не настраивал;) и принимает он как криптованые так и не криптованые пакеты, а передает в клиент только не криптованые.

В отличаа от инжекта, тот же разор (поповоду асиста не знаю, но на 99% тот же принцип) перехват осущевствляется после того как пакет расшифруется самим клиентом и до как пойдет на шифрование, в инжекте же на оборот все;) По чему то разработчики решили, что хорошо было бы управлять шифрованием, в итоге получили, что в случаи не известных ключей инжект просто не работоспособен.

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

На самом деле 3 ключ не вычисляется походу. их ровно 3, просто ввиду избраного алгоритма кодирования стадии подключения (логин), если один ключь отличается от другово всего 1 младшим битом, то ключи идентичны, а если не младшим;)) то тогда мы имеем вариант с абисом;)

Code: Select all

void LoginCrypt::encrypt(unsigned char * in, unsigned char * out, int len)
{
    for(int i = 0; i < len; i++)
    {
        out[i] = in[i] ^ static_cast<unsigned char>(m_key[0]);

        unsigned int table0 = m_key[0];
        unsigned int table1 = m_key[1];

        m_key[1] =
            (
                (
                    (
                        ((table1 >> 1) | (table0 << 31))
                        ^ m_k1
                    )
                    >> 1
                )
                | (table0 << 31)
            ) ^ m_k1;
        m_key[0] = ((table0 >> 1) | (table1 << 31)) ^ m_k2;
    }
}
это то что имеет инжект, а вот что на самом деле

Code: Select all

void LoginCrypt::encrypt(unsigned char * in, unsigned char * out, int len)
{
    for(int i = 0; i < len; i++)
    {
        out[i] = in[i] ^ static_cast<unsigned char>(m_key[0]);

        unsigned int table0 = m_key[0];
        unsigned int table1 = m_key[1];

        m_key[1] =
            (
                (
                    (
                        ((table1 >> 1) | (table0 << 31))^ m_k2
                    )>> 1
                )
                | (table0 << 31)
            ) ^ m_k1;
        m_key[0] = ((table0 >> 1) | (table1 << 31)) ^ m_k3;
    }
}


соответствено младший бит ключа m_k2 мало значим, так как присутствует опирация сдвига на 1 бит в право, следовательно (как оно и есть во всех клиентах) если разница между (вовтором примере) ключами m_k2 и m_k1 1 бит (младший) то они эдентичны;)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Я ща вообще нафиг топик грохну.

Вы меня убить этими кодами решили?..

Я понятия не имею, что эти коды значат.

Пишите мне побайтно, что где в первом посте исправить, а лучше - пишите свой топик.

PS:

Code: Select all

    while(true)
    {
        ...
        return true;
    }

Какой индус это писал?... Там не было случаем копирайта?..
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

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

Нет. Илпатч нужен только для того что бы инжект не пытался расшифравать пакеты которые ему передает инжект, так как инжект передает пакеты в расшифрованном виде клиенту.
Инжект использует самую простую схему подключения, подменяет в таблице импорта основные пункции для работы ссокетами, и просто в наглую на "низком" уровне хватает трафик;) при этом инжект должен обладать возможность расшифровок и тд... в случаи с разаром нужно иметь таблицу куда цеплятся в памяти что бы перезхватывать выход с фунций расшифровки и шифровки.
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

был

// ignition.cpp
//
// Copyright (C) 2001 Luke 'Infidel' Dunstan
//
// Parts based on Ignition:
// Copyright (C) 2000 Bruno 'Beosil' Heidelberger
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Destruction wrote:Какой индус это писал?... Там не было случаем копирайта?..

когда познакомишься с особенностями компиляторов такда поймешь;) что это не индус писал;) хотя можно было бы и красивше.
Post Reply