Показать сообщение отдельно
Старый 05.12.2012, 11:11  
amtp
На доске почёта
Аватар для amtp
OFFLINE
Регистрация: 26.10.2011
Возраст: 35
Сообщений: 0
Благодарностей:
18 всего
Мнения: -180
Репутация: 55

ключи у меня верные, это уже выяснил,
по поводу:
Цитата:
самое простое тут - взять оригинальный ланчер от 5 апа, проснифать как он общается с логином, после этого по созданному файлу запустить иклиента в отладчике - и посмотреть чем шифруются куски сессионного ключа и логина, и получить раскодированный defaultset ну а дальше по нему и логу обмена с логин сервером понять что и откуда берется.
тут всё просто я сравнил пакет с этой темой, он оказался идентичным
тоесть я уже написал всё в первом сообщение, моя задача это теперь всё реализовать на си
тоесть заного разоврать пакет выташить с него эти 10 ключей сесии и выбрать из них 4, вот это то что мне нужно, но я не програмист в си,.. поэтому прошу помощи, вот тут приём пакета:
Цитата:
bool CNetworkEX::EnterWorld(int n, char* pMsg)
{
_select_world_result_locl *pRecv = (_select_world_result_locl *)pMsg;
if(pRecv->byRetCode)
{
printf("byRetCode!=0 (%d)",pRecv->byRetCode);
return false;
}
g_Main.m_DefSet.dwServerIP = pRecv->dwWorldGateIP;
g_Main.m_DefSet.wServerPort = pRecv->wWorldGatePort;
memcpy(g_Main.m_DefSet.dwSessionKey,pRecv->dwWorldMasterKey,16);
g_Main.SaveAndLauch();
return true;
вот тут что то не понятное для меня, но мне кажется это касается дела:
Цитата:
struct DefaultSet
{
DWORD dwServerIP;
short wServerPort;
BYTE szLogin[11];
DWORD dwAccountID;
DWORD dwSessionKey[4];
short wUnk1;
DWORD dwAccountID2;//?
//DWORD dwUnk2;
//DWORD dwUnk3;
//short wLocaleCode; //0 - korea, 7 - russia
DefaultSet(){
ZeroMemory(this,sizeof(*this));
}
};

class CMainThread
{
public:
CNetworkEX m_NetworkEX;
DWORD m_dwLoginIP;
DWORD m_dwCheckLoginOldTick;

WORD wXorKey;
BYTE byPlusKey;

char szLogin[13];
char szPassword[13];
int nSelectedServer;


DefaultSet m_DefSet;

_billing_user_inform_locl m_BillInfo;

CMainThread(void);
~CMainThread(void);
bool Init();
void MainLoop();
void CheckLoginConnection();

void SaveAndLauch();
};

void EnCryptString( char* pStr, int nSize, BYTE byPlus, WORD wCryptKey );
Добавлено через 2 минуты
Цитата:
а зачем запускать бинарник то? достаточно в отладчике посмотреть как собирается в ланчере defaultset и отснифать пакеты логина и все. Потом точно так же собирать defaultset и запускать клиент. У него 100% из за разницы в пакетах неправильно собирается defaultset, так как в 5 и 6 апах на разных местах стоят ключи в последнем пакете от серва.
НЕТ!, дефаулт сет уже собирается правильно, я уже поправил, проблема втом что не правильно формируются ключи сесии, сообщение выше

Добавлено через 3 минуты
Цитата:
так как в 5 и 6 апах на разных местах стоят ключи в последнем пакете от серва.
да да да!! имено это. правильно сказал,
а я всё не как не мог объяснить)

Последний раз редактировалось amtp; 05.12.2012 в 11:15. Причина: Добавлено сообщение
 
Ответить с цитированием