extend config optons DialogBox
teon pvp server hacks
This commit is contained in:
parent
df6a9cc098
commit
a424966835
@ -59,6 +59,8 @@ void ConfigDlg_OnInitDialog( HWND hDlg )
|
|||||||
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.2 - Gracia Part 2") );
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.2 - Gracia Part 2") );
|
||||||
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.3 - Gracia Final") );
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.3 - Gracia Final") );
|
||||||
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.4 - Gracia Epilogue") );
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.4 - Gracia Epilogue") );
|
||||||
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("2nd Throne - Freya") );
|
||||||
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("2nd Throne - High Five") );
|
||||||
SendMessage( h, CB_SETCURSEL, (WPARAM)g_cfg.L2_version, 0 );
|
SendMessage( h, CB_SETCURSEL, (WPARAM)g_cfg.L2_version, 0 );
|
||||||
// L2 Client Version
|
// L2 Client Version
|
||||||
h = GetDlgItem( hDlg, IDC_CB_L2CVER );
|
h = GetDlgItem( hDlg, IDC_CB_L2CVER );
|
||||||
@ -68,6 +70,8 @@ void ConfigDlg_OnInitDialog( HWND hDlg )
|
|||||||
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.2 - Gracia Part 2") );
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.2 - Gracia Part 2") );
|
||||||
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.3 - Gracia Final") );
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.3 - Gracia Final") );
|
||||||
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.4 - Gracia Epilogue") );
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("Chaotic Throne 2.4 - Gracia Epilogue") );
|
||||||
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("2nd Throne - Freya") );
|
||||||
|
SendMessage( h, CB_ADDSTRING, 0, (LPARAM)TEXT("2nd Throne - High Five") );
|
||||||
SendMessage( h, CB_SETCURSEL, (WPARAM)g_cfg.L2_client_version, 0 );
|
SendMessage( h, CB_SETCURSEL, (WPARAM)g_cfg.L2_client_version, 0 );
|
||||||
|
|
||||||
// full mode enable
|
// full mode enable
|
||||||
@ -80,6 +84,8 @@ void ConfigDlg_OnInitDialog( HWND hDlg )
|
|||||||
CheckDlgButton( hDlg, IDC_C_GAMEGUARDREPLY, g_cfg.ReplyL2JGameGuardQuery );
|
CheckDlgButton( hDlg, IDC_C_GAMEGUARDREPLY, g_cfg.ReplyL2JGameGuardQuery );
|
||||||
// Gracia Epilogue protocol 148 hacks
|
// Gracia Epilogue protocol 148 hacks
|
||||||
CheckDlgButton( hDlg, IDC_C_EPILOGUE_148_146, g_cfg.GraciaEpilogueProtocol_148_hacks );
|
CheckDlgButton( hDlg, IDC_C_EPILOGUE_148_146, g_cfg.GraciaEpilogueProtocol_148_hacks );
|
||||||
|
// TeonPvP hacks
|
||||||
|
CheckDlgButton( hDlg, IDC_C_TEONPVP_HACKS, g_cfg.TeonPvP_hacks );
|
||||||
|
|
||||||
// L2Walker_DropRequestGMList
|
// L2Walker_DropRequestGMList
|
||||||
CheckDlgButton( hDlg, IDC_C_L2WDROPGMLIST, g_cfg.L2Walker_DropRequestGMList );
|
CheckDlgButton( hDlg, IDC_C_L2WDROPGMLIST, g_cfg.L2Walker_DropRequestGMList );
|
||||||
@ -120,6 +126,7 @@ void ConfigDlg_OnInitDialog( HWND hDlg )
|
|||||||
// forced game server select setting
|
// forced game server select setting
|
||||||
SetDlgItemTextA( hDlg, IDC_E_FORCEGSIP, g_cfg.ForceGameServerIP );
|
SetDlgItemTextA( hDlg, IDC_E_FORCEGSIP, g_cfg.ForceGameServerIP );
|
||||||
SetDlgItemInt( hDlg, IDC_E_FORCEGSPORT, g_cfg.ForceGameServerPort, TRUE );
|
SetDlgItemInt( hDlg, IDC_E_FORCEGSPORT, g_cfg.ForceGameServerPort, TRUE );
|
||||||
|
SetDlgItemInt( hDlg, IDC_E_INGAME_GAMESERVER_PORT, g_cfg.IngameGameServerPort, TRUE );
|
||||||
|
|
||||||
ConfigDlg_UpateEnabledControls( hDlg );
|
ConfigDlg_UpateEnabledControls( hDlg );
|
||||||
}
|
}
|
||||||
@ -141,6 +148,8 @@ void ConfigDlg_OnOK( HWND hDlg, BOOL bEndDialog )
|
|||||||
g_cfg.ReplyL2JGameGuardQuery = IsDlgButtonChecked( hDlg, IDC_C_GAMEGUARDREPLY );
|
g_cfg.ReplyL2JGameGuardQuery = IsDlgButtonChecked( hDlg, IDC_C_GAMEGUARDREPLY );
|
||||||
// Gracia Epilogue protocol 148 hacks
|
// Gracia Epilogue protocol 148 hacks
|
||||||
g_cfg.GraciaEpilogueProtocol_148_hacks = IsDlgButtonChecked( hDlg, IDC_C_EPILOGUE_148_146 );
|
g_cfg.GraciaEpilogueProtocol_148_hacks = IsDlgButtonChecked( hDlg, IDC_C_EPILOGUE_148_146 );
|
||||||
|
// TeonPvP hacks
|
||||||
|
g_cfg.TeonPvP_hacks = IsDlgButtonChecked( hDlg, IDC_C_TEONPVP_HACKS );
|
||||||
|
|
||||||
// L2Walker_DropRequestGMList
|
// L2Walker_DropRequestGMList
|
||||||
g_cfg.L2Walker_DropRequestGMList = IsDlgButtonChecked( hDlg, IDC_C_L2WDROPGMLIST );
|
g_cfg.L2Walker_DropRequestGMList = IsDlgButtonChecked( hDlg, IDC_C_L2WDROPGMLIST );
|
||||||
@ -177,10 +186,12 @@ void ConfigDlg_OnOK( HWND hDlg, BOOL bEndDialog )
|
|||||||
// forced GS settings
|
// forced GS settings
|
||||||
GetDlgItemTextA( hDlg, IDC_E_FORCEGSIP, g_cfg.ForceGameServerIP, sizeof(g_cfg.ForceGameServerIP) );
|
GetDlgItemTextA( hDlg, IDC_E_FORCEGSIP, g_cfg.ForceGameServerIP, sizeof(g_cfg.ForceGameServerIP) );
|
||||||
g_cfg.ForceGameServerPort = GetDlgItemInt( hDlg, IDC_E_FORCEGSPORT, NULL, TRUE );
|
g_cfg.ForceGameServerPort = GetDlgItemInt( hDlg, IDC_E_FORCEGSPORT, NULL, TRUE );
|
||||||
|
g_cfg.IngameGameServerPort = GetDlgItemInt( hDlg, IDC_E_INGAME_GAMESERVER_PORT, NULL, TRUE );
|
||||||
|
|
||||||
//
|
//
|
||||||
g_cfg.SaveConfig();
|
g_cfg.SaveConfig();
|
||||||
if( bEndDialog == TRUE ) EndDialog( hDlg, IDOK );
|
if( bEndDialog == TRUE )
|
||||||
|
EndDialog( hDlg, IDOK );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigDlg_OnApply( HWND hDlg )
|
void ConfigDlg_OnApply( HWND hDlg )
|
||||||
@ -269,6 +280,11 @@ void ConfigDlg_UpateEnabledControls( HWND hDlg )
|
|||||||
EnableWindow( GetDlgItem( hDlg, IDC_E_REALPORT ), FALSE );
|
EnableWindow( GetDlgItem( hDlg, IDC_E_REALPORT ), FALSE );
|
||||||
//EnableWindow( GetDlgItem( hDlg, IDC_E_PLAYGSNO ), FALSE );
|
//EnableWindow( GetDlgItem( hDlg, IDC_E_PLAYGSNO ), FALSE );
|
||||||
}
|
}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// disable some controls in outgame mode
|
||||||
|
// EnableWindow( GetDlgItem( hDlg, IDC_E_INGAME_GAMESERVER_PORT ), FALSE );
|
||||||
|
//}
|
||||||
// also temporarily disable some controls
|
// also temporarily disable some controls
|
||||||
EnableWindow( GetDlgItem( hDlg, IDC_C_ENABLE_MODGT ), FALSE );
|
//EnableWindow( GetDlgItem( hDlg, IDC_C_ENABLE_MODGT ), FALSE );
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ void CConfig::_initNull()
|
|||||||
OverrideGameProtocolVersion = 0;
|
OverrideGameProtocolVersion = 0;
|
||||||
ReplyL2JGameGuardQuery = 0;
|
ReplyL2JGameGuardQuery = 0;
|
||||||
GraciaEpilogueProtocol_148_hacks = 0;
|
GraciaEpilogueProtocol_148_hacks = 0;
|
||||||
|
TeonPvP_hacks = 0;
|
||||||
// L2Walker fixes
|
// L2Walker fixes
|
||||||
L2Walker_DropRequestGMList = 0;
|
L2Walker_DropRequestGMList = 0;
|
||||||
L2Walker_FixMoveBackwardToLocation = 1;
|
L2Walker_FixMoveBackwardToLocation = 1;
|
||||||
@ -172,6 +173,10 @@ bool CConfig::ReadConfig( const char *szConfigFileName )
|
|||||||
{
|
{
|
||||||
sscanf( token, "%d", &(this->GraciaEpilogueProtocol_148_hacks) );
|
sscanf( token, "%d", &(this->GraciaEpilogueProtocol_148_hacks) );
|
||||||
}
|
}
|
||||||
|
if( strstr( line, "TeonPvP_hacks" ) == line )
|
||||||
|
{
|
||||||
|
sscanf( token, "%d", &(this->TeonPvP_hacks) );
|
||||||
|
}
|
||||||
if( strstr( line, "ThreadProirityRaiseEnable" ) == line )
|
if( strstr( line, "ThreadProirityRaiseEnable" ) == line )
|
||||||
{
|
{
|
||||||
sscanf( token, "%d", &(this->ThreadProirityRaiseEnable) );
|
sscanf( token, "%d", &(this->ThreadProirityRaiseEnable) );
|
||||||
@ -221,13 +226,15 @@ bool CConfig::SaveConfig()
|
|||||||
fprintf( f, ""
|
fprintf( f, ""
|
||||||
"# First - configure Lineage2 game protocol version and L2 Client version.\n"
|
"# First - configure Lineage2 game protocol version and L2 Client version.\n"
|
||||||
"# Supported versions are:\n"
|
"# Supported versions are:\n"
|
||||||
"# * Chaotic Throne 1 - The Kamael = 0\n"
|
"# * Chaotic Throne 1 - The Kamael = 0\n"
|
||||||
"# * Chaotic Throne 1.5 - Hellbound = 1\n"
|
"# * Chaotic Throne 1.5 - Hellbound = 1\n"
|
||||||
"# * Chaotic Throne 2 - Gracia (Part 1) = 2\n"
|
"# * Chaotic Throne 2 - Gracia (Part 1) = 2\n"
|
||||||
"# * Chaotic Throne 2.2 - Gracia Part 2 = 3\n"
|
"# * Chaotic Throne 2.2 - Gracia Part 2 = 3\n"
|
||||||
"# * Chaotic Throne 2.3 - Gracia Final = 4\n"
|
"# * Chaotic Throne 2.3 - Gracia Final = 4\n"
|
||||||
"# * Chaotic Throne 2.4 - Gracia Epilogue = 5\n"
|
"# * Chaotic Throne 2.4 - Gracia Epilogue = 5\n"
|
||||||
"# default is 4 (CT2.3 Gracia Final)\n"
|
"# * 2nd Throne - Freya = 6\n"
|
||||||
|
"# * 2nd Throne - High Five = 7\n"
|
||||||
|
"# default is 6 (CT2.5 Freya)\n"
|
||||||
"Lineage2Version = %d\n"
|
"Lineage2Version = %d\n"
|
||||||
"Lineage2ClientVersion = %d\n"
|
"Lineage2ClientVersion = %d\n"
|
||||||
"\n\n",
|
"\n\n",
|
||||||
@ -384,6 +391,12 @@ bool CConfig::SaveConfig()
|
|||||||
"\n",
|
"\n",
|
||||||
GraciaEpilogueProtocol_148_hacks );
|
GraciaEpilogueProtocol_148_hacks );
|
||||||
|
|
||||||
|
fprintf( f, ""
|
||||||
|
"# Enables server specific protocol handlers for TeonPvP server.\n"
|
||||||
|
"TeonPvP_hacks = %d\n"
|
||||||
|
"\n",
|
||||||
|
TeonPvP_hacks );
|
||||||
|
|
||||||
fprintf( f, ""
|
fprintf( f, ""
|
||||||
"# Fixes L2Walker wrong or old packets\n"
|
"# Fixes L2Walker wrong or old packets\n"
|
||||||
"L2Walker_DropRequestGMList = %d\n"
|
"L2Walker_DropRequestGMList = %d\n"
|
||||||
@ -426,13 +439,9 @@ bool CConfig::SaveConfig()
|
|||||||
|
|
||||||
void CConfig::SetDefault()
|
void CConfig::SetDefault()
|
||||||
{
|
{
|
||||||
// declared in L2PcodeObfuscator.h (include L2Packets.h)
|
// declared in L2_versions.h (include L2Packets.h)
|
||||||
//#define L2_VERSION_T1 0
|
L2_version = 7;
|
||||||
//#define L2_VERSION_T15 1
|
L2_client_version = 7;
|
||||||
//#define L2_VERSION_T2 2
|
|
||||||
//#define L2_VERSION_T22 3
|
|
||||||
L2_version = 4;
|
|
||||||
L2_client_version = 4;
|
|
||||||
|
|
||||||
// Listen port setup
|
// Listen port setup
|
||||||
strcpy( FakeListenLoginIP, "127.0.0.1" );
|
strcpy( FakeListenLoginIP, "127.0.0.1" );
|
||||||
@ -462,6 +471,7 @@ void CConfig::SetDefault()
|
|||||||
OverrideGameProtocolVersion = 0;
|
OverrideGameProtocolVersion = 0;
|
||||||
ReplyL2JGameGuardQuery = 0;
|
ReplyL2JGameGuardQuery = 0;
|
||||||
GraciaEpilogueProtocol_148_hacks = 0;
|
GraciaEpilogueProtocol_148_hacks = 0;
|
||||||
|
TeonPvP_hacks = 0;
|
||||||
|
|
||||||
// L2Walker fixes
|
// L2Walker fixes
|
||||||
L2Walker_DropRequestGMList = 0;
|
L2Walker_DropRequestGMList = 0;
|
||||||
|
@ -51,6 +51,7 @@ public:
|
|||||||
int OverrideGameProtocolVersion;
|
int OverrideGameProtocolVersion;
|
||||||
int ReplyL2JGameGuardQuery;
|
int ReplyL2JGameGuardQuery;
|
||||||
int GraciaEpilogueProtocol_148_hacks;
|
int GraciaEpilogueProtocol_148_hacks;
|
||||||
|
int TeonPvP_hacks;
|
||||||
|
|
||||||
// L2Walker fixes
|
// L2Walker fixes
|
||||||
int L2Walker_DropRequestGMList;
|
int L2Walker_DropRequestGMList;
|
||||||
|
@ -37,6 +37,7 @@ void DebugDlg_OnTimer( HWND hDlg, UINT_PTR nIDEvent );
|
|||||||
void DebugDlg_updateInfo( HWND hDlg );
|
void DebugDlg_updateInfo( HWND hDlg );
|
||||||
void DebugDlg_OnBnClickedValidateInterception( HWND hDlg );
|
void DebugDlg_OnBnClickedValidateInterception( HWND hDlg );
|
||||||
void DebugDlg_OnBnClickedInterceptConnect( HWND hDlg );
|
void DebugDlg_OnBnClickedInterceptConnect( HWND hDlg );
|
||||||
|
void DebugDlg_OnBnClickedRestoreConnect( HWND hDlg );
|
||||||
void DebugDlg_OnBnClickedCheckVP( HWND hDlg );
|
void DebugDlg_OnBnClickedCheckVP( HWND hDlg );
|
||||||
void DebugDlg_OnBnClickedDumpAllRelations( HWND hDlg );
|
void DebugDlg_OnBnClickedDumpAllRelations( HWND hDlg );
|
||||||
void DebugDlg_OnBnClickedPrintAddrTid( HWND hDlg );
|
void DebugDlg_OnBnClickedPrintAddrTid( HWND hDlg );
|
||||||
@ -63,6 +64,7 @@ INT_PTR CALLBACK DebugDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
|||||||
case IDC_B_CONDISABLE: DebugDlg_OnBnClickedDisableConsole( hDlg ); break;
|
case IDC_B_CONDISABLE: DebugDlg_OnBnClickedDisableConsole( hDlg ); break;
|
||||||
case IDC_B_VALIDATEINTERCEPT: DebugDlg_OnBnClickedValidateInterception( hDlg ); break;
|
case IDC_B_VALIDATEINTERCEPT: DebugDlg_OnBnClickedValidateInterception( hDlg ); break;
|
||||||
case IDC_B_INTERCEPTCONNECT: DebugDlg_OnBnClickedInterceptConnect( hDlg ); break;
|
case IDC_B_INTERCEPTCONNECT: DebugDlg_OnBnClickedInterceptConnect( hDlg ); break;
|
||||||
|
case IDC_B_RESTORECONNECT: DebugDlg_OnBnClickedRestoreConnect( hDlg ); break;
|
||||||
case IDC_B_CHECK_VIRTUALPROTECTEX: DebugDlg_OnBnClickedCheckVP( hDlg ); break;
|
case IDC_B_CHECK_VIRTUALPROTECTEX: DebugDlg_OnBnClickedCheckVP( hDlg ); break;
|
||||||
case IDC_B_LOADWALKER: DebugDlg_OnBnClickedLoadWalker( hDlg ); break;
|
case IDC_B_LOADWALKER: DebugDlg_OnBnClickedLoadWalker( hDlg ); break;
|
||||||
case IDC_B_UNLOADWALKER: DebugDlg_OnBnClickedUnloadWalker( hDlg ); break;
|
case IDC_B_UNLOADWALKER: DebugDlg_OnBnClickedUnloadWalker( hDlg ); break;
|
||||||
@ -305,6 +307,12 @@ void DebugDlg_OnBnClickedInterceptConnect( HWND hDlg )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebugDlg_OnBnClickedRestoreConnect( HWND hDlg )
|
||||||
|
{
|
||||||
|
hDlg = NULL;
|
||||||
|
Hook_RestoreConnect_my();
|
||||||
|
}
|
||||||
|
|
||||||
void DebugDlg_OnBnClickedCheckVP( HWND hDlg )
|
void DebugDlg_OnBnClickedCheckVP( HWND hDlg )
|
||||||
{
|
{
|
||||||
hDlg = NULL;
|
hDlg = NULL;
|
||||||
|
@ -233,7 +233,7 @@ bool GameClient::PP_full_fromClient( unsigned char *bytes, unsigned int len,
|
|||||||
p->read_protoVer( &(this->gameProtoVer) );
|
p->read_protoVer( &(this->gameProtoVer) );
|
||||||
delete p;
|
delete p;
|
||||||
log_error( LOG_PACKETNAME, "Client: 0e ProtocolVersion %u\n", this->gameProtoVer );
|
log_error( LOG_PACKETNAME, "Client: 0e ProtocolVersion %u\n", this->gameProtoVer );
|
||||||
if( this->gameProtoVer >= 0xFFFFFFF0 )
|
if( this->gameProtoVer >= 0xFFFFFFF0 ) // < 0
|
||||||
{
|
{
|
||||||
this->thisWasJustServerPing = true; // received client ping (full)
|
this->thisWasJustServerPing = true; // received client ping (full)
|
||||||
log_error( LOG_PACKETNAME, "Received client ping server... no process\n" );
|
log_error( LOG_PACKETNAME, "Received client ping server... no process\n" );
|
||||||
|
@ -145,6 +145,7 @@ bool GameClient::PP_full_fromServer( unsigned char *bytes, unsigned int len,
|
|||||||
lpco->init_tables( this->opcodeObfuscator );
|
lpco->init_tables( this->opcodeObfuscator );
|
||||||
this->clsObfuscator = (void *)lpco;
|
this->clsObfuscator = (void *)lpco;
|
||||||
}
|
}
|
||||||
|
else log_error( LOG_PACKETNAME, "Server: 2e KeyPacket: not using obfuscation key! OK\n" );
|
||||||
} break; // KeyPacket
|
} break; // KeyPacket
|
||||||
case 0x09: // CharacterSelectionInfo // Hellbound
|
case 0x09: // CharacterSelectionInfo // Hellbound
|
||||||
{
|
{
|
||||||
|
@ -83,7 +83,7 @@ bool GameClient::PC_sniff( SOCKET scl, unsigned char *sip, unsigned short int sp
|
|||||||
log_error( LOG_WARNING, "GameClient::ProcessClient_onlySniff(): Cannot open log file [%s] for writing!\n",
|
log_error( LOG_WARNING, "GameClient::ProcessClient_onlySniff(): Cannot open log file [%s] for writing!\n",
|
||||||
filename );
|
filename );
|
||||||
// open raw log data for not decrypted packets, if problems with decryption
|
// open raw log data for not decrypted packets, if problems with decryption
|
||||||
// this->logfileRaw = fopen( filename_raw, "wt" );
|
this->logfileRaw = fopen( filename_raw, "wt" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// set initial game client state
|
// set initial game client state
|
||||||
@ -235,6 +235,11 @@ closeSocks: // all cleanup
|
|||||||
fclose( this->logfile );
|
fclose( this->logfile );
|
||||||
this->logfile = NULL;
|
this->logfile = NULL;
|
||||||
}
|
}
|
||||||
|
if( this->logfileRaw )
|
||||||
|
{
|
||||||
|
fclose( this->logfileRaw );
|
||||||
|
this->logfileRaw = NULL;
|
||||||
|
}
|
||||||
// stop AI thread
|
// stop AI thread
|
||||||
ai.notifyEvent( UAI_EVENT_STOP );
|
ai.notifyEvent( UAI_EVENT_STOP );
|
||||||
this->resetConnectedState();
|
this->resetConnectedState();
|
||||||
|
@ -77,20 +77,44 @@ void GameClient::PP_sniff_fromServer( unsigned char *bytes, unsigned int len )
|
|||||||
//case 0x00: // Interlude: KeyPacket, FirstKey
|
//case 0x00: // Interlude: KeyPacket, FirstKey
|
||||||
case 0x2e: // Hellbound: KeyPacket, FirstKey
|
case 0x2e: // Hellbound: KeyPacket, FirstKey
|
||||||
{
|
{
|
||||||
L2Game_KeyPacket *p = new L2Game_KeyPacket( bytes, len );
|
if( g_cfg.TeonPvP_hacks )
|
||||||
p->read_key( this->key_client_cs );
|
{
|
||||||
p->read_GameServerID();
|
L2GamePacket *p = new L2GamePacket( bytes, len );
|
||||||
this->opcodeObfuscator = p->read_OpcodeObfuscator();
|
unsigned char opcode = p->getPacketType();
|
||||||
L2Game_KeyPacket::createInitialHellboundKey( this->key_client_cs,
|
unsigned char protoOk = p->readC();
|
||||||
this->key_client_cs );
|
p->readBytes( this->key_client_cs, 16 ); // 16 bytes instead of 8?
|
||||||
delete p;
|
int d1 = p->readD();
|
||||||
|
int d2 = p->readD();
|
||||||
|
int c1 = p->readC();
|
||||||
|
int obf_key = p->readD();
|
||||||
|
delete p;
|
||||||
|
//
|
||||||
|
log_error( LOG_PACKETNAME, "TeonPvP: enbaled hacks. KeyPacket [%02X] Read key [", (unsigned)opcode );
|
||||||
|
for( i=0; i<16; i++ ) log_error_np( LOG_PACKETNAME, "%02X", (unsigned)this->key_client_cs[i] );
|
||||||
|
log_error_np( LOG_PACKETNAME, "]\n" );
|
||||||
|
log_error( LOG_PACKETNAME, " protocolOk : %d\n", protoOk );
|
||||||
|
log_error( LOG_PACKETNAME, " d1 : %d\n", d1 );
|
||||||
|
log_error( LOG_PACKETNAME, " d2 : %d\n", d2 );
|
||||||
|
log_error( LOG_PACKETNAME, " c1 : %d\n", c1 );
|
||||||
|
log_error( LOG_PACKETNAME, " obf_key : %d\n", obf_key );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
L2Game_KeyPacket *p = new L2Game_KeyPacket( bytes, len );
|
||||||
|
p->read_key( this->key_client_cs );
|
||||||
|
p->read_GameServerID();
|
||||||
|
this->opcodeObfuscator = p->read_OpcodeObfuscator();
|
||||||
|
L2Game_KeyPacket::createInitialHellboundKey( this->key_client_cs,
|
||||||
|
this->key_client_cs );
|
||||||
|
delete p;
|
||||||
|
}
|
||||||
memcpy( this->key_client_sc, this->key_client_cs,
|
memcpy( this->key_client_sc, this->key_client_cs,
|
||||||
sizeof(this->key_client_cs) );
|
sizeof(this->key_client_cs) );
|
||||||
this->xor_enabled = true;
|
this->xor_enabled = true;
|
||||||
log_error( LOG_PACKETNAME, "Server: 2e KeyPacket\n" );
|
log_error( LOG_PACKETNAME, "Server: 2e KeyPacket\n" );
|
||||||
log_error( LOG_DEBUGDUMP, "Server: 2e KeyPacket: key: " );
|
log_error( LOG_PACKETNAME, "Server: 2e KeyPacket: key: " );
|
||||||
for( i=0; i<16; i++ ) log_error_np( LOG_DEBUGDUMP, "%02X ", this->key_client_cs[i] );
|
for( i=0; i<16; i++ ) log_error_np( LOG_PACKETNAME, "%02X ", this->key_client_cs[i] );
|
||||||
log_error_np( LOG_DEBUGDUMP, "\n" );
|
log_error_np( LOG_PACKETNAME, "\n" );
|
||||||
// log obfuscator, if it is != 0x00000000
|
// log obfuscator, if it is != 0x00000000
|
||||||
LOG_LEVEL log_level = LOG_DEBUGDUMP;
|
LOG_LEVEL log_level = LOG_DEBUGDUMP;
|
||||||
if( this->opcodeObfuscator != 0x00000000 )
|
if( this->opcodeObfuscator != 0x00000000 )
|
||||||
@ -111,6 +135,7 @@ void GameClient::PP_sniff_fromServer( unsigned char *bytes, unsigned int len )
|
|||||||
lpco->init_tables( this->opcodeObfuscator );
|
lpco->init_tables( this->opcodeObfuscator );
|
||||||
this->clsObfuscator = (void *)lpco;
|
this->clsObfuscator = (void *)lpco;
|
||||||
}
|
}
|
||||||
|
else log_error( LOG_PACKETNAME, "Server: 2e KeyPacket: not using obfuscator\n" );
|
||||||
} break; // KeyPacket
|
} break; // KeyPacket
|
||||||
case 0x09: // CharacterSelectionInfo // Hellbound
|
case 0x09: // CharacterSelectionInfo // Hellbound
|
||||||
{
|
{
|
||||||
|
@ -24,54 +24,59 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
IDD_CONFIG DIALOGEX 0,0,332,261
|
IDD_CONFIG DIALOGEX 0,0,332,297
|
||||||
CAPTION "Network/Protocol Setup"
|
CAPTION "Network/Protocol Setup"
|
||||||
FONT 8,"MS Shell Dlg",400,0,1
|
FONT 8,"MS Shell Dlg",400,0,1
|
||||||
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
|
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "OK",IDOK,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,208,241,50,15
|
CONTROL "OK",IDOK,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,132,276,50,15
|
||||||
CONTROL "Cancel",IDCANCEL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,262,241,50,15
|
CONTROL "Cancel",IDCANCEL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,260,276,50,15
|
||||||
CONTROL "OverrideGameProtocolVersion:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,16,84,100,9
|
CONTROL "OverrideGameProtocolVersion:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,16,96,100,9
|
||||||
CONTROL "",IDC_E_OVERRIDE_GPV,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,120,81,40,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_OVERRIDE_GPV,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,120,92,40,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Logging level:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,186,127,46,9
|
CONTROL "Logging level:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,186,138,46,9
|
||||||
CONTROL "Enable modify Game Server Traffic",IDC_C_ENABLE_MODGT,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,180,81,128,11
|
CONTROL "Enable modify Game Server Traffic",IDC_C_ENABLE_MODGT,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,180,92,128,11
|
||||||
CONTROL "",IDC_CB_LOGLEVEL,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,258,127,60,87
|
CONTROL "",IDC_CB_LOGLEVEL,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,258,138,60,87
|
||||||
CONTROL "ThreadPriorityRaiseEnable",IDC_C_ENABLE_THREADPRI,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,180,96,100,11
|
CONTROL "ThreadPriorityRaiseEnable",IDC_C_ENABLE_THREADPRI,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,180,107,100,11
|
||||||
CONTROL "L2Walker_Fix_MoveBackwardToLocation",IDC_C_L2WMOVEFIX,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,144,146,11
|
CONTROL "L2Walker_Fix_MoveBackwardToLocation",IDC_C_L2WMOVEFIX,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,155,146,11
|
||||||
CONTROL "Ports Setup",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,10,192,320,46
|
CONTROL "Ports Setup",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,203,322,67
|
||||||
CONTROL "Listen Login Port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,18,206,56,9
|
CONTROL "Listen Login Port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,18,216,56,9
|
||||||
CONTROL "Listen Game Port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,18,219,58,9
|
CONTROL "Listen Game Port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,18,232,58,9
|
||||||
CONTROL "",IDC_E_FLPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,82,201,36,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_FLPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,82,212,30,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "",IDC_E_FGPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,82,217,36,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_FGPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,82,228,30,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Real Login Server:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,126,203,60,9
|
CONTROL "Real Login Server:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,120,214,82,9
|
||||||
CONTROL "",IDC_E_REALIP,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,196,201,84,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_REALIP,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,210,212,70,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,201,8,9
|
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,212,8,9
|
||||||
CONTROL "",IDC_E_REALPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,201,32,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_REALPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,212,32,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Apply :)",IDC_APPLY,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,152,241,50,15
|
CONTROL "Apply :)",IDC_APPLY,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,196,276,50,15
|
||||||
CONTROL "Log Game Packets",IDC_C_LOGGAMEP,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,184,142,128,11
|
CONTROL "Log Game Packets",IDC_C_LOGGAMEP,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,184,153,128,11
|
||||||
CONTROL "Log File Name Prefix:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,184,158,68,9
|
CONTROL "Log File Name Prefix:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,184,169,68,9
|
||||||
CONTROL "",IDC_E_LOGFNPREFIX,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,258,155,60,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_LOGFNPREFIX,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,258,166,60,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Lineage II Server Protocol Version:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,20,16,112,8
|
CONTROL "Lineage II Server Protocol Version:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,20,16,112,8
|
||||||
CONTROL "",IDC_CB_L2VER,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,150,14,172,70
|
CONTROL "",IDC_CB_L2VER,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,150,14,172,70
|
||||||
CONTROL "Lineage II Client Version:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,20,31,82,9
|
CONTROL "Lineage II Client Version:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,20,31,82,9
|
||||||
CONTROL "",IDC_CB_L2CVER,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,150,29,172,70
|
CONTROL "",IDC_CB_L2CVER,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,150,29,172,70
|
||||||
CONTROL "Lineage II Versions",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,5,318,61
|
CONTROL "Lineage II Versions",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,5,318,72
|
||||||
CONTROL "Logging",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,178,116,148,70
|
CONTROL "Logging",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,178,127,148,70
|
||||||
CONTROL "L2Walker_Drop_RequestGMList",IDC_C_L2WDROPGMLIST,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,132,146,11
|
CONTROL "L2Walker_Drop_RequestGMList",IDC_C_L2WDROPGMLIST,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,144,146,11
|
||||||
CONTROL "WarnUnknownPackets",IDC_C_WARNUNKP,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,184,171,88,11
|
CONTROL "WarnUnknownPackets",IDC_C_WARNUNKP,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,184,182,88,11
|
||||||
CONTROL "L2Walker_Fix_ChangeWaitType2",IDC_C_L2WSITFIX,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,155,146,11
|
CONTROL "L2Walker_Fix_ChangeWaitType2",IDC_C_L2WSITFIX,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,166,146,11
|
||||||
CONTROL "Force Game Server IP:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,124,219,76,9
|
CONTROL "Force Game Server IP:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,120,232,84,9
|
||||||
CONTROL "",IDC_E_FORCEGSIP,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,204,217,76,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_FORCEGSIP,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,210,228,70,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "",IDC_E_FORCEGSPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,217,32,15,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_FORCEGSPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,228,32,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,217,4,9
|
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,228,4,9
|
||||||
CONTROL "L2Walker fixes",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,116,162,70
|
CONTROL "L2Walker fixes",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,127,162,70
|
||||||
CONTROL "L2Walker_Inject_StatusUpdate",IDC_C_L2WALKER_INJECTSTATUSUPDATE,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,166,146,11
|
CONTROL "L2Walker_Inject_StatusUpdate",IDC_C_L2WALKER_INJECTSTATUSUPDATE,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,179,146,11
|
||||||
CONTROL "Misc hacks (be careful!!!)",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,72,318,41
|
CONTROL "Misc hacks (be careful!!!)",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,83,318,41
|
||||||
CONTROL "Reply to L2J GameGuard query",IDC_C_GAMEGUARDREPLY,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,97,134,11
|
CONTROL "Reply to L2J GameGuard query",IDC_C_GAMEGUARDREPLY,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,108,134,11
|
||||||
CONTROL "Gracia Epilogue Server protocol 148 -> Client protocol 146 hacks (experimental!)",IDC_C_EPILOGUE_148_146,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,18,46,302,11
|
CONTROL "Gracia Epilogue Server protocol 148 -> Client protocol 146 hacks (experimental!)",IDC_C_EPILOGUE_148_146,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,18,46,302,11
|
||||||
|
CONTROL "TeonPvP server hacks",IDC_C_TEONPVP_HACKS,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,18,59,114,9
|
||||||
|
CONTROL "",IDC_E_INGAME_GAMESERVER_PORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,245,32,13,WS_EX_CLIENTEDGE
|
||||||
|
CONTROL "Also intercept this game server port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,120,249,154,9
|
||||||
|
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,247,4,9
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_DEBUG DIALOGEX 0,0,266,158
|
|
||||||
|
IDD_DEBUG DIALOGEX 0,0,266,160
|
||||||
CAPTION "Debug"
|
CAPTION "Debug"
|
||||||
FONT 8,"MS Shell Dlg",400,0,1
|
FONT 8,"MS Shell Dlg",400,0,1
|
||||||
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
|
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
|
||||||
@ -91,13 +96,14 @@ BEGIN
|
|||||||
CONTROL "char_name",IDC_CHARNAME,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP|SS_SUNKEN,7,76,251,11
|
CONTROL "char_name",IDC_CHARNAME,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP|SS_SUNKEN,7,76,251,11
|
||||||
CONTROL "Enable Console",IDC_B_CONENABLE,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,65,42,64,14
|
CONTROL "Enable Console",IDC_B_CONENABLE,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,65,42,64,14
|
||||||
CONTROL "Disable Console",IDC_B_CONDISABLE,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,141,42,63,14
|
CONTROL "Disable Console",IDC_B_CONDISABLE,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,141,42,63,14
|
||||||
CONTROL "Check Interceptions",IDC_B_VALIDATEINTERCEPT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,6,94,92,15
|
CONTROL "Check Interceptions",IDC_B_VALIDATEINTERCEPT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,6,94,74,15
|
||||||
CONTROL "Intercept connect",IDC_B_INTERCEPTCONNECT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,106,94,80,15
|
CONTROL "Intercept connect",IDC_B_INTERCEPTCONNECT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,136,94,62,15
|
||||||
CONTROL "Check VP",IDC_B_CHECK_VIRTUALPROTECTEX,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,190,94,60,15
|
CONTROL "Check VPEx",IDC_B_CHECK_VIRTUALPROTECTEX,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,84,94,48,15
|
||||||
CONTROL "Load L2Walker.dll",IDC_B_LOADWALKER,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,7,116,75,14
|
CONTROL "Load L2Walker.dll",IDC_B_LOADWALKER,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,8,118,76,15
|
||||||
CONTROL "Unload L2Walker.dll",IDC_B_UNLOADWALKER,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,90,116,76,15
|
CONTROL "Unload L2Walker.dll",IDC_B_UNLOADWALKER,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,90,118,76,15
|
||||||
CONTROL "Dump All Relations",IDC_B_DUMP_ALL_RELATIONS,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,8,136,86,15
|
CONTROL "Dump All Relations",IDC_B_DUMP_ALL_RELATIONS,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,8,140,86,15
|
||||||
CONTROL "Print address of UserAI::dwThreadID",IDC_B_PRINTADDRTID,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,102,136,136,15
|
CONTROL "Print address of UserAI::dwThreadID",IDC_B_PRINTADDRTID,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,102,140,136,15
|
||||||
|
CONTROL "Restore connect",IDC_B_RESTORECONNECT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,200,94,62,15
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,11 +113,11 @@ BOOL CALLBACK RadarDllWindowThread_EnumWindowsProc( HWND hWnd, LPARAM lParam )
|
|||||||
// window is running in the same process as we are
|
// window is running in the same process as we are
|
||||||
// check window class or name to check is it is main Lineage II window
|
// check window class or name to check is it is main Lineage II window
|
||||||
bool isL2Window = false;
|
bool isL2Window = false;
|
||||||
TCHAR wndTitle[256];
|
wchar_t wndTitle[256];
|
||||||
memset( wndTitle, 0, sizeof(wndTitle) );
|
memset( wndTitle, 0, sizeof(wndTitle) );
|
||||||
GetWindowText( hWnd, wndTitle, 255 );
|
GetWindowTextW( hWnd, wndTitle, 255 );
|
||||||
log_error( LOG_DEBUGDUMP, ".. got window title [%S]\n", wndTitle );
|
log_error( LOG_DEBUGDUMP, ".. got window title [%S]\n", wndTitle );
|
||||||
if( _tcsicmp( wndTitle, _T("Lineage II") ) == 0 )
|
if( _wcsicmp( wndTitle, L"Lineage II" ) == 0 )
|
||||||
{
|
{
|
||||||
isL2Window = true;
|
isL2Window = true;
|
||||||
log_error( LOG_DEBUG, "... found L2 window by title!\n" );
|
log_error( LOG_DEBUG, "... found L2 window by title!\n" );
|
||||||
@ -126,11 +126,11 @@ BOOL CALLBACK RadarDllWindowThread_EnumWindowsProc( HWND hWnd, LPARAM lParam )
|
|||||||
if( !isL2Window )
|
if( !isL2Window )
|
||||||
{
|
{
|
||||||
log_error( LOG_DEBUGDUMP, "... window title doesn't match, trying by class name...\n" );
|
log_error( LOG_DEBUGDUMP, "... window title doesn't match, trying by class name...\n" );
|
||||||
TCHAR buffer_for_class_name[256] = {0};
|
wchar_t buffer_for_class_name[256] = {0};
|
||||||
if( GetClassName( hWnd, buffer_for_class_name, 255 ) )
|
if( GetClassNameW( hWnd, buffer_for_class_name, 255 ) )
|
||||||
{
|
{
|
||||||
log_error( LOG_DEBUGDUMP, ".... got window class name = [%S]\n", buffer_for_class_name );
|
log_error( LOG_DEBUGDUMP, ".... got window class name = [%S]\n", buffer_for_class_name );
|
||||||
if( _tcsicmp( buffer_for_class_name, _T("l2UnrealWWindowsViewportWindow") ) == 0 )
|
if( _wcsicmp( buffer_for_class_name, _T("l2UnrealWWindowsViewportWindow") ) == 0 )
|
||||||
{
|
{
|
||||||
isL2Window = true;
|
isL2Window = true;
|
||||||
log_error( LOG_DEBUG, ".... found L2 window by class name!\n" );
|
log_error( LOG_DEBUG, ".... found L2 window by class name!\n" );
|
||||||
@ -139,6 +139,33 @@ BOOL CALLBACK RadarDllWindowThread_EnumWindowsProc( HWND hWnd, LPARAM lParam )
|
|||||||
else
|
else
|
||||||
ErrorLogger_LogLastError( "GetClassName()", GetLastError() );
|
ErrorLogger_LogLastError( "GetClassName()", GetLastError() );
|
||||||
}
|
}
|
||||||
|
// try by process name!
|
||||||
|
if( !isL2Window )
|
||||||
|
{
|
||||||
|
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, dwPid );
|
||||||
|
if( hProcess )
|
||||||
|
{
|
||||||
|
wchar_t szFileName[512] = {0};
|
||||||
|
//QueryFullProcessImageName( // >=Vista only
|
||||||
|
DWORD nameLen = GetProcessImageFileNameW( hProcess, szFileName, sizeof(szFileName)/sizeof(szFileName[0]) );
|
||||||
|
if( nameLen > 0 )
|
||||||
|
{
|
||||||
|
const wchar_t *wExe = wcsrchr( szFileName, '\\' );
|
||||||
|
if( (_wcsicmp( wExe, L"l2.bin" ) == 0) || (_wcsicmp( wExe, L"l2.exe" ) == 0 ) )
|
||||||
|
{
|
||||||
|
isL2Window = true;
|
||||||
|
wchar_t wClassName[256] = {0};
|
||||||
|
GetClassNameW( hWnd, wClassName, 255 );
|
||||||
|
log_error( LOG_OK, "... found L2 Window by process name (what???) of class [%S]\n", wClassName );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ErrorLogger_LogLastError( "GetProcessImageFileName()", GetLastError() );
|
||||||
|
CloseHandle( hProcess );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ErrorLogger_LogLastError( "OpenProcess()", GetLastError() );
|
||||||
|
}
|
||||||
// checks...
|
// checks...
|
||||||
if( isL2Window ) // found
|
if( isL2Window ) // found
|
||||||
{
|
{
|
||||||
|
@ -94,7 +94,8 @@
|
|||||||
#define IDC_E_FORCEGSPORT 1088
|
#define IDC_E_FORCEGSPORT 1088
|
||||||
#define IDC_B_VALIDATEINTERCEPT 1089
|
#define IDC_B_VALIDATEINTERCEPT 1089
|
||||||
#define IDC_B_INTERCEPTCONNECT 1090
|
#define IDC_B_INTERCEPTCONNECT 1090
|
||||||
#define IDC_B_CHECK_VIRTUALPROTECTEX 1091
|
#define IDC_B_RESTORECONNECT 1158
|
||||||
|
#define IDC_B_CHECK_VIRTUALPROTECTEX 1092
|
||||||
#define IDC_C_L2WALKER_INJECTSTATUSUPDATE 1122
|
#define IDC_C_L2WALKER_INJECTSTATUSUPDATE 1122
|
||||||
#define IDC_B_LOADWALKER 1123
|
#define IDC_B_LOADWALKER 1123
|
||||||
#define IDC_B_UNLOADWALKER 1124
|
#define IDC_B_UNLOADWALKER 1124
|
||||||
@ -102,6 +103,8 @@
|
|||||||
#define IDC_C_EPILOGUE_148_146 1126
|
#define IDC_C_EPILOGUE_148_146 1126
|
||||||
#define IDC_B_DUMP_ALL_RELATIONS 1127
|
#define IDC_B_DUMP_ALL_RELATIONS 1127
|
||||||
#define IDC_B_PRINTADDRTID 1128
|
#define IDC_B_PRINTADDRTID 1128
|
||||||
|
#define IDC_C_TEONPVP_HACKS 1159
|
||||||
|
#define IDC_E_INGAME_GAMESERVER_PORT 1160
|
||||||
|
|
||||||
// radar sound alerts setup dlg
|
// radar sound alerts setup dlg
|
||||||
#define IDC_C_SOUNDENEMYENTER 1089
|
#define IDC_C_SOUNDENEMYENTER 1089
|
||||||
|
@ -8,6 +8,7 @@ bool Hook_ValidateAlign();
|
|||||||
|
|
||||||
// my method
|
// my method
|
||||||
void Hook_InterceptConnect_my();
|
void Hook_InterceptConnect_my();
|
||||||
|
void Hook_RestoreConnect_my();
|
||||||
bool Hook_ValidateInterception_my();
|
bool Hook_ValidateInterception_my();
|
||||||
bool Hook_IsWinsockConnectOrig();
|
bool Hook_IsWinsockConnectOrig();
|
||||||
bool Hook_CheckVirtualProtect();
|
bool Hook_CheckVirtualProtect();
|
||||||
|
@ -29,6 +29,9 @@ VirtualProtectEx (kernel32) 8B FF 55 8B EC 5D // jump follows, r
|
|||||||
// rejump/relocate to VirtualProtectEx inside kernelbase.dll
|
// rejump/relocate to VirtualProtectEx inside kernelbase.dll
|
||||||
===================================== */
|
===================================== */
|
||||||
|
|
||||||
|
#define INSTR_PUSH 0x68
|
||||||
|
#define INSTR_RET 0xC3
|
||||||
|
|
||||||
unsigned char old_func_prologue[6] = {0,0,0, 0,0,0}; // îáëàñòü äëÿ õðàíåíèÿ 6-òè çàòèðàåìûõ áàéò íà÷àëà ôóíêöèè
|
unsigned char old_func_prologue[6] = {0,0,0, 0,0,0}; // îáëàñòü äëÿ õðàíåíèÿ 6-òè çàòèðàåìûõ áàéò íà÷àëà ôóíêöèè
|
||||||
jmp_push_ret jump_code; // ìàøèííûå èíñòðóêöèè push addr; ret
|
jmp_push_ret jump_code; // ìàøèííûå èíñòðóêöèè push addr; ret
|
||||||
unsigned int connect_orig; // áóäóùèé àäðåñ îðèãèíàëüíîé ôóíêöèè
|
unsigned int connect_orig; // áóäóùèé àäðåñ îðèãèíàëüíîé ôóíêöèè
|
||||||
@ -48,8 +51,10 @@ unsigned int g_hook_flag_allow_write = PAGE_EXECUTE_READWRITE; // PAGE_EXECUT
|
|||||||
bool g_hook_restore_read_only = false;
|
bool g_hook_restore_read_only = false;
|
||||||
unsigned int Proxied_VirtualProtectEx = 0;
|
unsigned int Proxied_VirtualProtectEx = 0;
|
||||||
|
|
||||||
|
|
||||||
BOOL __stdcall Proxy_VirtualProtectEx( HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect );
|
BOOL __stdcall Proxy_VirtualProtectEx( HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect );
|
||||||
|
|
||||||
|
|
||||||
void Hook_InterceptConnect_my()
|
void Hook_InterceptConnect_my()
|
||||||
{
|
{
|
||||||
//ñíà÷àëà ïîëó÷èì àáñîëþòíûé àäðåñ ôóíêöèè äëÿ ïåðåõâàòà
|
//ñíà÷àëà ïîëó÷èì àáñîëþòíûé àäðåñ ôóíêöèè äëÿ ïåðåõâàòà
|
||||||
@ -63,7 +68,7 @@ void Hook_InterceptConnect_my()
|
|||||||
connect_orig = (DWORD)GetProcAddress( hws2_32, "connect" );
|
connect_orig = (DWORD)GetProcAddress( hws2_32, "connect" );
|
||||||
if( connect_orig == 0 )
|
if( connect_orig == 0 )
|
||||||
{
|
{
|
||||||
log_error( LOG_ERROR, "Hook_InterceptConnect_my(): cannot get adress of original connect()!\n" );
|
log_error( LOG_ERROR, "Hook_InterceptConnect_my(): cannot get adress of ws2_32.dll!connect()!\n" );
|
||||||
ErrorLogger_FlushLogFile();
|
ErrorLogger_FlushLogFile();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -78,15 +83,20 @@ void Hook_InterceptConnect_my()
|
|||||||
|
|
||||||
// struct member alignment must be == 1 !!!!!
|
// struct member alignment must be == 1 !!!!!
|
||||||
// Çàäàäèì ìàøèííûé êîä èíñòðóêöèè ïåðåõîäà, êîòîðûé çàòåì âïèøåì â íà÷àëî ïîëó÷åííîãî àäðåñà:
|
// Çàäàäèì ìàøèííûé êîä èíñòðóêöèè ïåðåõîäà, êîòîðûé çàòåì âïèøåì â íà÷àëî ïîëó÷åííîãî àäðåñà:
|
||||||
jump_code.instr_push = 0x68;
|
jump_code.instr_push = INSTR_PUSH; // PUSH
|
||||||
jump_code.push_arg = (unsigned int)connect_hook_my;
|
jump_code.push_arg = (unsigned int)connect_hook_my; // connect_hook_my
|
||||||
jump_code.instr_ret = 0xC3;
|
jump_code.instr_ret = INSTR_RET; // RET
|
||||||
|
|
||||||
// Ïðî÷èòàåì è ñîõðàíèì ïåðâûå îðèãèíàëüíûå 6 áàéò ñòàíäàðòíîé API ôóíêöèè
|
// Ïðî÷èòàåì è ñîõðàíèì ïåðâûå îðèãèíàëüíûå 6 áàéò ñòàíäàðòíîé API ôóíêöèè
|
||||||
po = (unsigned char *)&old_func_prologue;
|
po = (unsigned char *)&old_func_prologue;
|
||||||
pj = (unsigned char *)connect_orig;
|
pj = (unsigned char *)connect_orig;
|
||||||
po[0] = pj[0]; po[1] = pj[1]; po[2] = pj[2];
|
if( pj[0] != INSTR_PUSH )
|
||||||
po[3] = pj[3]; po[4] = pj[4]; po[5] = pj[5];
|
{
|
||||||
|
po[0] = pj[0]; po[1] = pj[1]; po[2] = pj[2];
|
||||||
|
po[3] = pj[3]; po[4] = pj[4]; po[5] = pj[5];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
log_error( LOG_WARNING, "Hook_InterceptConnect_my(): current connect() prolog already contains PUSH/RET code, do not overwriting old_prolog!\n" );
|
||||||
|
|
||||||
// remove read-only access to memory; remember prev.access rights
|
// remove read-only access to memory; remember prev.access rights
|
||||||
//ret = VirtualProtect( (void *)connect_orig, 6, PAGE_EXECUTE_WRITECOPY, &old_protect );
|
//ret = VirtualProtect( (void *)connect_orig, 6, PAGE_EXECUTE_WRITECOPY, &old_protect );
|
||||||
@ -127,12 +137,85 @@ void Hook_InterceptConnect_my()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
log_error( LOG_DEBUG, "Hook_InterceptConnect_my(): work done?...\n" );
|
log_error( LOG_DEBUG, "Hook_InterceptConnect_my(): END: work done?...\n" );
|
||||||
#endif
|
#endif
|
||||||
ErrorLogger_FlushLogFile();
|
ErrorLogger_FlushLogFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Hook_RestoreConnect_my()
|
||||||
|
{
|
||||||
|
HINSTANCE hws2_32 = GetModuleHandle( TEXT("ws2_32.dll") );
|
||||||
|
if( !hws2_32 )
|
||||||
|
{
|
||||||
|
log_error( LOG_ERROR, "Hook_RestoreConnect_my(): cannot get module handle of ws2_32.dll!\n" );
|
||||||
|
ErrorLogger_FlushLogFile();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
connect_orig = (DWORD)GetProcAddress( hws2_32, "connect" );
|
||||||
|
if( connect_orig == 0 )
|
||||||
|
{
|
||||||
|
log_error( LOG_ERROR, "Hook_RestoreConnect_my(): cannot get adress of ws2_32.dll!connect()!\n" );
|
||||||
|
ErrorLogger_FlushLogFile();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( Proxied_VirtualProtectEx )
|
||||||
|
log_error( LOG_WARNING, "Hook_RestoreConnect_my(): START: Using proxied VirtualProtectEx!\n" );
|
||||||
|
ErrorLogger_FlushLogFile();
|
||||||
|
|
||||||
|
BOOL ret;
|
||||||
|
DWORD old_protect = 0, old_protect_2 = 0;
|
||||||
|
unsigned char *pc = NULL, *po = NULL;
|
||||||
|
|
||||||
|
// check old prolog
|
||||||
|
if( old_func_prologue[0] == 0x8B )
|
||||||
|
{
|
||||||
|
// make memory page readwrite
|
||||||
|
DWORD flProtect = g_hook_flag_allow_write;
|
||||||
|
ret = 0;
|
||||||
|
if( Proxied_VirtualProtectEx )
|
||||||
|
ret = Proxy_VirtualProtectEx( (HANDLE)-1, (void *)connect_orig, 6, flProtect, &old_protect );
|
||||||
|
else
|
||||||
|
ret = VirtualProtectEx( (HANDLE)-1, (void *)connect_orig, 6, flProtect, &old_protect );
|
||||||
|
if( (ret != TRUE) )
|
||||||
|
{
|
||||||
|
DWORD le = GetLastError();
|
||||||
|
if( le == ERROR_ACCESS_DENIED )
|
||||||
|
log_error( LOG_ERROR, "Hook_RestoreConnect_my(): VirtialProtectEx() failed (allow write): (%d) ERROR_ACCESS_DENIED\n", le );
|
||||||
|
else
|
||||||
|
ErrorLogger_LogLastError( "Hook_RestoreConnect_my(): VirtialProtectEx() failed (allow write)", le );
|
||||||
|
ErrorLogger_FlushLogFile();
|
||||||
|
}
|
||||||
|
po = (unsigned char *)&old_func_prologue;
|
||||||
|
pc = (unsigned char *)connect_orig;
|
||||||
|
pc[0] = po[0]; pc[1] = po[1]; pc[2] = po[2];
|
||||||
|
pc[3] = po[3]; pc[4] = po[4]; pc[5] = po[5];
|
||||||
|
log_error( LOG_OK, "Hook_RestoreConnect_my(): restored original connect...\n" );
|
||||||
|
ErrorLogger_FlushLogFile();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
log_error( LOG_WARNING, "Hook_RestoreConnect_my(): old connect() prolog is invalid :(\n" );
|
||||||
|
|
||||||
|
|
||||||
|
// restore previous access to memory
|
||||||
|
if( g_hook_restore_read_only )
|
||||||
|
{
|
||||||
|
if( Proxied_VirtualProtectEx )
|
||||||
|
ret = Proxy_VirtualProtectEx( (HANDLE)-1, (void *)connect_orig, 6, old_protect, &old_protect_2 );
|
||||||
|
else
|
||||||
|
ret = VirtualProtectEx( (HANDLE)-1, (void *)connect_orig, 6, old_protect, &old_protect_2 );
|
||||||
|
if( (ret != TRUE) )
|
||||||
|
{
|
||||||
|
DWORD le = GetLastError();
|
||||||
|
ErrorLogger_LogLastError( "Hook_RestoreConnect_my(): VirtualProtectEx() failed (restore prev)", le );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ErrorLogger_FlushLogFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Hook_check_func_prolog( LPCWSTR dllName, LPCSTR funcName, const unsigned char *orig_bytes )
|
bool Hook_check_func_prolog( LPCWSTR dllName, LPCSTR funcName, const unsigned char *orig_bytes )
|
||||||
{
|
{
|
||||||
HINSTANCE hDll = GetModuleHandleW( dllName );
|
HINSTANCE hDll = GetModuleHandleW( dllName );
|
||||||
@ -218,7 +301,7 @@ bool Hook_ValidateInterception_my()
|
|||||||
logLevel = LOG_WARNING;
|
logLevel = LOG_WARNING;
|
||||||
log_error( LOG_WARNING, "Not intercepted! Dump will follow...\n" );
|
log_error( LOG_WARNING, "Not intercepted! Dump will follow...\n" );
|
||||||
}
|
}
|
||||||
else log_error( LOG_OK, "Interception OK!\n" );
|
else log_error( LOG_OK, "ws2_32.dll!connect() Interception OK!\n" );
|
||||||
|
|
||||||
log_error( logLevel,
|
log_error( logLevel,
|
||||||
"dump of machine codes:\n"
|
"dump of machine codes:\n"
|
||||||
@ -251,7 +334,7 @@ int __stdcall connect_hook_my( unsigned int sock, void *sockaddr, int addrlen )
|
|||||||
DWORD le = 0;
|
DWORD le = 0;
|
||||||
|
|
||||||
if( Proxied_VirtualProtectEx )
|
if( Proxied_VirtualProtectEx )
|
||||||
log_error( LOG_WARNING, "connect_hook_my(): Using proxied VirtualProtectEx!\n" );
|
log_error( LOG_WARNING, "connect_hook_my(): START: Using proxied VirtualProtectEx!\n" );
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
log_error( LOG_DEBUGDUMP, "connect_hook_my(): before restoring old code\n" );
|
log_error( LOG_DEBUGDUMP, "connect_hook_my(): before restoring old code\n" );
|
||||||
@ -327,14 +410,14 @@ int __stdcall connect_hook_my( unsigned int sock, void *sockaddr, int addrlen )
|
|||||||
// log
|
// log
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
if( paddr->sin_family == AF_INET )
|
if( paddr->sin_family == AF_INET )
|
||||||
log_error_np( LOG_DEBUG, "original connect() returned %d\n", ret );
|
log_error_np( LOG_DEBUG, "... original connect() returned %d\n", ret );
|
||||||
ErrorLogger_FlushLogFile();
|
ErrorLogger_FlushLogFile();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Ñíîâà çàìåíÿåì 6 áàéò ôóíêöèè íà êîìàíäó ïåðåõîäà íà íàøó ôóíêöèþ
|
//Ñíîâà çàìåíÿåì 6 áàéò ôóíêöèè íà êîìàíäó ïåðåõîäà íà íàøó ôóíêöèþ
|
||||||
pc[0] = pj[0]; pc[1] = pj[1]; pc[2] = pj[2];
|
pc[0] = pj[0]; pc[1] = pj[1]; pc[2] = pj[2];
|
||||||
pc[3] = pj[3]; pc[4] = pj[4]; pc[5] = pj[5];
|
pc[3] = pj[3]; pc[4] = pj[4]; pc[5] = pj[5];
|
||||||
log_error( LOG_DEBUGDUMP, "connect_hook_my(): after setting jump again\n" );
|
log_error( LOG_DEBUGDUMP, "connect_hook_my(): ENDING: after setting jump again\n" );
|
||||||
|
|
||||||
// restore prev. protect
|
// restore prev. protect
|
||||||
if( g_hook_restore_read_only )
|
if( g_hook_restore_read_only )
|
||||||
@ -370,7 +453,8 @@ int __stdcall connect_nohook_my( unsigned int sock, void *sockaddr, int addrlen
|
|||||||
BOOL vp_ret = FALSE;
|
BOOL vp_ret = FALSE;
|
||||||
DWORD le = 0; // last error
|
DWORD le = 0; // last error
|
||||||
|
|
||||||
if( Proxied_VirtualProtectEx ) log_error( LOG_WARNING, "connect_nohook_my(): Using proxied VirtualProtectEx!\n" );
|
if( Proxied_VirtualProtectEx )
|
||||||
|
log_error( LOG_WARNING, "connect_nohook_my(): Using proxied VirtualProtectEx!\n" );
|
||||||
|
|
||||||
po = (unsigned char *)&old_func_prologue;
|
po = (unsigned char *)&old_func_prologue;
|
||||||
pj = (unsigned char *)&jump_code;
|
pj = (unsigned char *)&jump_code;
|
||||||
@ -507,6 +591,7 @@ bool Hook_CheckVirtualProtect()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
__declspec(naked) BOOL __stdcall
|
__declspec(naked) BOOL __stdcall
|
||||||
Proxy_VirtualProtectEx( HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect )
|
Proxy_VirtualProtectEx( HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect )
|
||||||
{
|
{
|
||||||
|
@ -1,33 +1,57 @@
|
|||||||
#define IDC_STATIC -1
|
#define IDC_STATIC -1
|
||||||
#define IDC_B_DUMP_ALL_RELATIONS 1001
|
|
||||||
#define IDC_B_PRINTADDRTID 1002
|
|
||||||
|
|
||||||
IDD_DEBUG DIALOGEX 0,0,266,158
|
#include "resource.h"
|
||||||
CAPTION "Debug"
|
#include "targetver.h"
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
IDD_CONFIG DIALOGEX 0,0,332,297
|
||||||
|
CAPTION "Network/Protocol Setup"
|
||||||
FONT 8,"MS Shell Dlg",400,0,1
|
FONT 8,"MS Shell Dlg",400,0,1
|
||||||
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
|
STYLE WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME|DS_SETFONT|DS_FIXEDSYS
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "Login listener status:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,7,7,68,8
|
CONTROL "OK",IDOK,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,132,276,50,15
|
||||||
CONTROL "Game listener status:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,7,25,69,8
|
CONTROL "Cancel",IDCANCEL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,260,276,50,15
|
||||||
CONTROL "",IDC_ELLSTATUS,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY|ES_AUTOHSCROLL,90,7,40,14,WS_EX_CLIENTEDGE
|
CONTROL "OverrideGameProtocolVersion:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,16,96,100,9
|
||||||
CONTROL "",IDC_EGLSTATUS,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY|ES_AUTOHSCROLL,89,23,40,14,WS_EX_CLIENTEDGE
|
CONTROL "",IDC_E_OVERRIDE_GPV,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,120,92,40,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Start LL",IDC_STARTLL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,141,7,50,14
|
CONTROL "Logging level:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,186,138,46,9
|
||||||
CONTROL "Start GL",IDC_STARTGL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,142,23,50,14
|
CONTROL "Enable modify Game Server Traffic",IDC_C_ENABLE_MODGT,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,180,92,128,11
|
||||||
CONTROL "Stop LL",IDC_STOPLL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,197,7,50,14
|
CONTROL "",IDC_CB_LOGLEVEL,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,258,138,60,87
|
||||||
CONTROL "Stop GL",IDC_STOPGL,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,198,23,50,14
|
CONTROL "ThreadPriorityRaiseEnable",IDC_C_ENABLE_THREADPRI,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,180,107,100,11
|
||||||
CONTROL "Flush Log File",IDC_FLUSH_LOG,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,7,42,50,14
|
CONTROL "L2Walker_Fix_MoveBackwardToLocation",IDC_C_L2WMOVEFIX,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,155,146,11
|
||||||
CONTROL "hp",IDC_HP,"Static",WS_VISIBLE|WS_GROUP|SS_SUNKEN|SS_LEFTNOWORDWRAP,7,61,72,11
|
CONTROL "Ports Setup",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,203,322,67
|
||||||
CONTROL "mp",IDC_MP,"Static",WS_VISIBLE|WS_GROUP|SS_SUNKEN|SS_LEFTNOWORDWRAP,82,61,72,11
|
CONTROL "Listen Login Port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,18,216,56,9
|
||||||
CONTROL "cp",IDC_CP,"Static",WS_VISIBLE|WS_GROUP|SS_SUNKEN|SS_LEFTNOWORDWRAP,156,61,72,11
|
CONTROL "Listen Game Port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,18,232,58,9
|
||||||
CONTROL "char_name",IDC_CHARNAME,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP|SS_SUNKEN,7,76,251,11
|
CONTROL "",IDC_E_FLPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,82,212,30,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Enable Console",IDC_B_CONENABLE,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,65,42,64,14
|
CONTROL "",IDC_E_FGPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,82,228,30,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Disable Console",IDC_B_CONDISABLE,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,141,42,63,14
|
CONTROL "Real Login Server:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,120,214,82,9
|
||||||
CONTROL "Validate Interception",IDC_B_VALIDATEINTERCEPT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,6,94,92,15
|
CONTROL "",IDC_E_REALIP,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,210,212,70,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Intercept connect",IDC_B_INTERCEPTCONNECT,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,106,94,80,15
|
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,212,8,9
|
||||||
CONTROL "Check VP",IDC_B_CHECK_VIRTUALPROTECTEX,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,190,94,60,15
|
CONTROL "",IDC_E_REALPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,212,32,15,WS_EX_CLIENTEDGE
|
||||||
CONTROL "Load L2Walker.dll",IDC_B_LOADWALKER,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,7,116,75,14
|
CONTROL "Apply :)",IDC_APPLY,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,196,276,50,15
|
||||||
CONTROL "Unload L2Walker.dll",IDC_B_UNLOADWALKER,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,90,116,76,15
|
CONTROL "Log Game Packets",IDC_C_LOGGAMEP,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,184,153,128,11
|
||||||
CONTROL "Dump All Relations",IDC_B_DUMP_ALL_RELATIONS,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,8,136,86,15
|
CONTROL "Log File Name Prefix:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,184,169,68,9
|
||||||
CONTROL "Print address of UserAI::dwThreadID",IDC_B_PRINTADDRTID,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,102,136,136,15
|
CONTROL "",IDC_E_LOGFNPREFIX,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,258,166,60,15,WS_EX_CLIENTEDGE
|
||||||
|
CONTROL "Lineage II Server Protocol Version:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,20,16,112,8
|
||||||
|
CONTROL "",IDC_CB_L2VER,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,150,14,172,70
|
||||||
|
CONTROL "Lineage II Client Version:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,20,31,82,9
|
||||||
|
CONTROL "",IDC_CB_L2CVER,"ComboBox",WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,150,29,172,70
|
||||||
|
CONTROL "Lineage II Versions",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,5,318,72
|
||||||
|
CONTROL "Logging",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,178,127,148,70
|
||||||
|
CONTROL "L2Walker_Drop_RequestGMList",IDC_C_L2WDROPGMLIST,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,144,146,11
|
||||||
|
CONTROL "WarnUnknownPackets",IDC_C_WARNUNKP,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,184,182,88,11
|
||||||
|
CONTROL "L2Walker_Fix_ChangeWaitType2",IDC_C_L2WSITFIX,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,166,146,11
|
||||||
|
CONTROL "Force Game Server IP:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,120,232,84,9
|
||||||
|
CONTROL "",IDC_E_FORCEGSIP,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,210,228,70,15,WS_EX_CLIENTEDGE
|
||||||
|
CONTROL "",IDC_E_FORCEGSPORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,228,32,15,WS_EX_CLIENTEDGE
|
||||||
|
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,228,4,9
|
||||||
|
CONTROL "L2Walker fixes",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,127,162,70
|
||||||
|
CONTROL "L2Walker_Inject_StatusUpdate",IDC_C_L2WALKER_INJECTSTATUSUPDATE,"Button",WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,179,146,11
|
||||||
|
CONTROL "Misc hacks (be careful!!!)",IDC_STATIC,"Button",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,8,83,318,41
|
||||||
|
CONTROL "Reply to L2J GameGuard query",IDC_C_GAMEGUARDREPLY,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,16,108,134,11
|
||||||
|
CONTROL "Gracia Epilogue Server protocol 148 -> Client protocol 146 hacks (experimental!)",IDC_C_EPILOGUE_148_146,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,18,46,302,11
|
||||||
|
CONTROL "TeonPvP server hacks",IDC_C_TEONPVP_HACKS,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,18,59,114,9
|
||||||
|
CONTROL "",IDC_E_INGAME_GAMESERVER_PORT,"Edit",WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL,290,245,32,13,WS_EX_CLIENTEDGE
|
||||||
|
CONTROL "Also intercept this game server port:",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,120,249,154,9
|
||||||
|
CONTROL ":",IDC_STATIC,"Static",WS_CHILD|WS_VISIBLE|WS_GROUP,284,247,4,9
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#include <commdlg.h>
|
#include <commdlg.h>
|
||||||
|
#include <Psapi.h>
|
||||||
// DirectX
|
// DirectX
|
||||||
#include <ddraw.h>
|
#include <ddraw.h>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user