08-18-2012, 03:00 PM
Кто то в курсе, алгоритм построения таблицы для обфускатора в клиенте одинаков для разных хроник? У меня периодически проскакивает ошибка, тоесть обфускатор на сервере не правильно декодирует значение при id == 0xD0
PHP код:
<?php
private void prepare(int obfKey)
{
_obfKey = obfKey;
int l = 0;
m_decodeTable1 = new int[0xD0 + 1];
m_decodeTable2 = new int[0x83 + 1];
for (int i = 0; i <= 0xD0; ++i)
m_decodeTable1[i] = i;
for (int i = 0; i <= 0x83; ++i)
m_decodeTable2[i] = i;
pseudo_rand_seed(obfKey);
for (int i = 1; i <= 0xD0; ++i)
{
int k = pseudo_rand() % (i + 1);
int j = m_decodeTable1[k];
m_decodeTable1[k] = m_decodeTable1[i];
m_decodeTable1[i] = j;
}
for (int i = 1; i <= 0x83; ++i)
{
int k = pseudo_rand() % (i + 1);
int j = m_decodeTable2[k];
m_decodeTable2[k] = m_decodeTable2[i];
m_decodeTable2[i] = j;
}
for (l = 0; m_decodeTable1[l] != 0x12; l++);
int j = m_decodeTable1[0x12];
m_decodeTable1[0x12] = 0x12;
m_decodeTable1[l] = j;
for (l = 0; m_decodeTable1[l] != 0xB1; l++);
int d = m_decodeTable1[0xB1];
m_decodeTable1[0xB1] = 0xB1;
m_decodeTable1[l] = d;
m_decodeTable1[0xD0] = 0xD0;
m_decodeTable1[0x11] = 0x11;
m_enabled = true;
}
Смущают строки вроде:
m_decodeTable1[0xD0] = 0xD0;
Но если их закомментировать все равно в таблице остается неверное значение.
Где бы почитать про алгоритм обфускации в клиенте, можно ли его там изменит на свой, какая dll и функция за это отвечает?