Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 22.08.2012, 15:37   #1
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию Интересует алгоритм Opcode Obfuscator-а трафика L2

Кто то в курсе, алгоритм построения таблицы для обфускатора в клиенте одинаков для разных хроник? У меня периодически проскакивает ошибка, тоесть обфускатор на сервере не правильно декодирует значение при id == 0xD0

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<= 0xD0; ++i
            
m_decodeTable1[i] = i;
        for (
int i 0<= 0x83; ++i)
            
m_decodeTable2[i] = i;
        
pseudo_rand_seed(obfKey);
        for (
int i 1<= 0xD0; ++i
        {
            
int k pseudo_rand() % (1);
            
int j m_decodeTable1[k];
            
m_decodeTable1[k] = m_decodeTable1[i];
            
m_decodeTable1[i] = j;
        }
        for (
int i 1<= 0x83; ++i
        {
            
int k pseudo_rand() % (1);
            
int j m_decodeTable2[k];
            
m_decodeTable2[k] = m_decodeTable2[i];
            
m_decodeTable2[i] = j;
        }
        for (
0m_decodeTable1[l] != 0x12l++);
        
int j m_decodeTable1[0x12];
        
m_decodeTable1[0x12] = 0x12;
        
m_decodeTable1[l] = j;
        for (
0m_decodeTable1[l] != 0xB1l++);
        
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 и функция за это отвечает?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 21.09.2012, 17:51   #2
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

сейчас тоже столкнулся с этим, только я чтото не могу понять как получается таблица ID..
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 21.09.2012, 18:40   #3
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Как в клиенте получается я сам не могу найти, а на сервере там в ядре функция генерации таблицы есть.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 21.09.2012, 20:07   #4
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

клиент подставляет новый ID в send.
где происходит инициализация не искал.
где посмотреть серверную функцию генерации ?
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 21.09.2012, 21:50   #5
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

В фениксе в классе gameserver.network.OpcodeObfuscator

Функция
public static init_tables(int obfKey)
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 22.09.2012, 16:54   #6
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

у некоторых пакетов ID не меняется. например NetPing.
если верить этому коду, то у пакетов с ID D0 он тоже остается неизменным, а это не верно.
хорошо просматривается в пакетхаке со снятой галкой "Gracia Off-like"
"осилю" код обфускатора "на повторить" буду разбираться что к чему, пока только догадки...
p.s. спасибо за наводку на исходник
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 22.09.2012, 18:22   #7
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Elecktron, у меня именно с этим пакетом и проблема. Не могу сделать как надо так как не знаю алгоритма по которому стпроит таблицу клиент.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 22.09.2012, 18:31   #8
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

вот на мой взгляд более корректная инфа:
http://code.google.com/p/l2packets/s...Obfuscator.cpp
и тут еще немного есть:
http://forum.zone-game.info/showthread.php?p=156785

а я не могу понять как формируется ключ для построения таблицы опкодов..
ключик есть и в KeyPacket и в CharSelected, а как формируется конечный не ясно..
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 22.09.2012 в 18:38.
Elecktron вне форума   Ответить с цитированием
Старый 22.09.2012, 19:01   #9
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Самый первый ключ присылает сервер в пакете KeyPacket, он вроде его рандомно генерирует.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 23.09.2012, 01:12   #10
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

а что в пакетхаке с D0 пакетами?
и что делать со вторым ключиком (из CharSelected)?

действительно с D0 пакетами какая-то фигня...
брал код из пакетхака, программка отправляет D0
с CF тоже глюки..
при этом не D0 кодирует нормально..
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 23.09.2012 в 17:56.
Elecktron вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:38.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!