Posted: 2007-12-27 19:17:23
шифровать не умеют 99% эмуляторов, инже шифры не мешают
Как это не умеют?.. Те кто не умеют - у тех играют через nocryptclient - там зайти с инжей вообще проще некуда..omi4 wrote:шифровать не умеют 99% эмуляторов, инже шифры не мешают
Рассмотрение частных случаев выходит за рамки этой темы, а тем более - этого раздела.omi4 wrote:дык укажи где крупт клиент нужен? Шарды где навесное оборудование прилепляют можно пропустить, это не то немного.
Традиционно в файле размещается информация благодаря которой правится память клиента и снимается шифрование. Лично записывал туда diff байтиков простого клиента и патченного нокриптом, для большего понимания ситуации. Делал собственно по указке Yoko, которого целые сутки мучал по ICQ.omi4 wrote:Сразу обиделся...
ilpatch.cfg это файл с шифрованием ну никак не связан, он нужен для патча. Точки для присоединения инжи к клиенту. Антарес с криптом?
Вытри что мы тут нафлудили и поправь.
Давай тогда заодно определение слова патч, в котором объясни, что патчить непосредственно необходимо под нокрипт и получи текст один в один мой.ilpatch.cfg это файл ...., он нужен для патча.
угу.. а храним мы там инфу по снятию крипта с клиента..omi4 wrote:Injection - можно перевести как введение или инъекция. Он перехватывает и если нужно подменяет истинные данные. Для этого клиен патчится лаучером. В этом файле адреса для патча. Он даже так называется..
Ок.omi4 wrote:давай по слогам
Ну не то, чтобы совсем бессмысленно, в любом случае - так делают, против фактов не попрёшь. Взять хотя бы топик Injection 2007.omi4 wrote:Криптование снимается переписыванием байтиков в ехзешнике, делается это раз и навсегда. Кем написаны икак пользоватся все знают. Делать это при каждом запуске бессмысленно.
Неправда.omi4 wrote:Инжекция происходит следующим макаром. Инжект запускает клиента, находит его в памяти и на основании данных файла о назначении которого спор вычисляет адреса где нужно поправить байтики чтобы перенаправить данные на инжект. Вот и все.
См. выше, Yoko Injection видимо особенный. Иначе чем ты объяснишь вполне работоспособную конструкцию:omi4 wrote:Так работают инжа, разор, асист.
Code: Select all
"string" crc32 length : Не говоря уже про то, что заявление omi4 - написано видимо с большого недосыпу.119060 (03:48:53 2/05/2007)
слушай, а ведь инжа - кулл штука, она после того, как клиент загрузится - в памяти ковырятся, и делает это с лёгкой руки через любую инфу в илпатче
Кулл
Yoko (13:28:19 2/05/2007)
4) да, если патч статичный, т.е. то что надо править не меняется в зависимости от тех или иных параметров. Более того, программы типа изиуо и ассиста прямо через память управляют клиентом
Вопрос не понял.Destruction wrote:Ок.omi4 wrote:давай по слогам
Ну не то, чтобы совсем бессмысленно, в любом случае - так делают, против фактов не попрёшь. Взять хотя бы топик Injection 2007.omi4 wrote:Криптование снимается переписыванием байтиков в ехзешнике, делается это раз и навсегда. Кем написаны икак пользоватся все знают. Делать это при каждом запуске бессмысленно.
Неправда.omi4 wrote:Инжекция происходит следующим макаром. Инжект запускает клиента, находит его в памяти и на основании данных файла о назначении которого спор вычисляет адреса где нужно поправить байтики чтобы перенаправить данные на инжект. Вот и все.
лауч запускает длл инжи, которая запускает и патчит клиента. После этого лауч больше не нужен.
Что неправда?
См. выше, Yoko Injection видимо особенный. Иначе чем ты объяснишь вполне работоспособную конструкцию:omi4 wrote:Так работают инжа, разор, асист.? Тобишь вообще без байтов.. ? Запускается и работает, если клиент - нокрипт.. Как тогда происходит перенаправление ?..Code: Select all
"string" crc32 length :
PS: Что курил?
Я тебя тоже не понял. Не оверквоть кстате.omi4 wrote:Вопрос не понял.
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", ¤tChecksum, ¤tLength) != 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;Никто его не настраивал;) и принимает он как криптованые так и не криптованые пакеты, а передает в клиент только не криптованые.Injection настроен на получение не зашифрованных пакетов, для чего нужно снять шифрование с клиента.
На самом деле 3 ключ не вычисляется походу. их ровно 3, просто ввиду избраного алгоритма кодирования стадии подключения (логин), если один ключь отличается от другово всего 1 младшим битом, то ключи идентичны, а если не младшим;)) то тогда мы имеем вариант с абисом;)На самом деле - для шифрования пакетов Injection необходимо знать три ключа, но третий выясняется по ходу дела, поэтому его указывать не нужно.
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;
}
}Code: Select all
while(true)
{
...
return true;
} Нет. Илпатч нужен только для того что бы инжект не пытался расшифравать пакеты которые ему передает инжект, так как инжект передает пакеты в расшифрованном виде клиенту.Инжекция происходит следующим макаром. Инжект запускает клиента, находит его в памяти и на основании данных файла о назначении которого спор вычисляет адреса где нужно поправить байтики чтобы перенаправить данные на инжект. Вот и все.
когда познакомишься с особенностями компиляторов такда поймешь;) что это не индус писал;) хотя можно было бы и красивше.Destruction wrote: Какой индус это писал?... Там не было случаем копирайта?..