Newbie Spellweaver
- Joined
- Oct 7, 2012
- Messages
- 18
- Reaction score
- 14
hey fellows!
To make it works properly, you have to update the item table checksum or you'll get DC(4) :glare:
file : sinItem.cpp
class: cItem
method: int CheckItemTable();
==================================================================================
Another problem I found is:
Attack Packet Endcoding.
file : Damage.cpp
function: int RecvDamagePacketModule(TRANS_FUNC_MEMORY *lpTransFuncModule);
original function:
Although the new function works perfectly and memcpy as well, when you try to call fnEncodeDamagePacket (void*) the game crash.
I don't know why, but the game just can't call function allocated with new operator :huh:
#edit:
Now I know :$:
The 'solution' I have done is:
There are more functions that has this problem. It will work for all of them.
The problem is I didn't call VirtualFree anywhere.
=====================================================
oh I almost forgot :blush:
The Focus changed "protection"
In few words, this protection will disconnect you if you change windows Focus ( genius! :thumbdown
file: OnServer.cpp
function: int RecvMessage( smTHREADSOCK *SockInfo );
this smTRANSCODE_FINDCRACK2 opCode is sent to server in this function:
file: netplay.cpp
function: int SendCrackWindow( HWND hWnd );
file: netplay.cpp
function: int NetWorkPlay();
Just delete above code from the source and you'll not get this sh** log anymore tt1:
#
file: smwsock.cpp
function: DWORD WINAPI smTransSendThreadProc( void *pInfo )
*** is that?
Well, you know what to do. :closedeyes:
#
I hope that will help us somewhat.
To make it works properly, you have to update the item table checksum or you'll get DC(4) :glare:
file : sinItem.cpp
class: cItem
method: int CheckItemTable();
PHP:
for(int i = 0; i < MAX_ITEM; i++)
{
if(sItem[i].CODE)
{
CheckSumItemDataADD += sItem[i].CODE * i;
CheckSumItemDataADD += sItem[i].h * i;
CheckSumItemDataADD += sItem[i].w * i;
CheckSumItemDataADD += sItem[i].Class * i;
CheckSumItemDataADD += sItem[i].ItemPosition * i;
}
}
const DWORD CheckSumItemData = 2285641345; // CHECKSUM HEREEEEEE!
if(CheckSumItemData != CheckSumItemDataADD)
SendSetHackUser(101); // ( Hacking alert (101)
return TRUE;
==================================================================================
Another problem I found is:
Attack Packet Endcoding.
file : Damage.cpp
function: int RecvDamagePacketModule(TRANS_FUNC_MEMORY *lpTransFuncModule);
original function:
PHP:
int RecvDamagePacketModule( TRANS_FUNC_MEMORY *lpTransFuncModule )
{
char *lpBuff;
lpBuff = new char[lpTransFuncModule->size];
memcpy( lpBuff , lpTransFuncModule->szData , lpTransFuncModule->Param[0] );
fnEncodeDamagePacket = (LPFN_EncodeDamagePacket)lpBuff;
// if ( (wLimitDamage[3]^wLimitDamage[5])==0 )
// SendMaxDamageToServer( 0,0,0 );
ZeroMemory( wLimitDamage , sizeof(WORD)*8 );
return TRUE;
}
Although the new function works perfectly and memcpy as well, when you try to call fnEncodeDamagePacket (void*) the game crash.
I don't know why, but the game just can't call function allocated with new operator :huh:
#edit:
You must be registered to see links
Now I know :$:
The 'solution' I have done is:
PHP:
int RecvDamagePacketModule(TRANS_FUNC_MEMORY *lpTransFuncModule)
{
void *lpBuff = VirtualAlloc(NULL, lpTransFuncModule->size, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
MoveMemory(lpBuff, lpTransFuncModule->szData, lpTransFuncModule->Param[0]);
fnEncodeDamagePacket = (LPFN_EncodeDamagePacket)lpBuff;
// if ( (wLimitDamage[3]^wLimitDamage[5])==0 )
// SendMaxDamageToServer( 0,0,0 );
ZeroMemory(wLimitDamage, sizeof(WORD) * 8);
return TRUE;
}
There are more functions that has this problem. It will work for all of them.
The problem is I didn't call VirtualFree anywhere.
=====================================================
oh I almost forgot :blush:
The Focus changed "protection"
In few words, this protection will disconnect you if you change windows Focus ( genius! :thumbdown
PHP:
#define msg1101 "%d:%d:%d - Name:( %s ) / IP ( %s ) Focus Changed ( %s )\r\n"
file: OnServer.cpp
function: int RecvMessage( smTHREADSOCK *SockInfo );
PHP:
case smTRANSCODE_FINDCRACK2:
lpBuff = &SockInfo->Buff[8];
smTransCommand.WParam = 1101; // the Focus Changed id
smTransCommand.LParam = (DWORD)lpBuff;
smTransCommand.SParam = 0;
RecordHackLogFile( lpPlayInfo , &smTransCommand );
//DisconnectUser( lpsmSock );
lpPlayInfo->dwTime_Disconnect = dwTime;
smTransCommand.code = smTRANSCODE_CLOSECLIENT;
smTransCommand.size = sizeof( smTRANS_COMMAND );
lpsmSock->Send2( (char *)&smTransCommand , smTransCommand.size , TRUE );
break;
this smTRANSCODE_FINDCRACK2 opCode is sent to server in this function:
file: netplay.cpp
function: int SendCrackWindow( HWND hWnd );
PHP:
int SendCrackWindow( HWND hWnd ) // I think this function's name is self explanatory
{
char *szName;
char TransBuff[1024];
int len;
//크랙 발견
if ( smWsockServer ) {
szName = TransBuff+8;
GetWindowText( hWnd , szName , 32 );
len = lstrlen( szName ) + 9;
((int *)TransBuff)[0] = len;
((int *)TransBuff)[1] = smTRANSCODE_FINDCRACK2;
smWsockServer->Send2( TransBuff , len , TRUE );
}
return TRUE;
}
file: netplay.cpp
function: int NetWorkPlay();
PHP:
HWND hWnd;
if ( (PlayCounter&0x1FF)==0 && !smConfig.DebugMode ) {
hWnd = WinFocusCrack();
//윈도우 포커스를 감시
if ( hWnd ) {
//크랙 윈도우 신고
SendCrackWindow( hWnd );
}
}
Just delete above code from the source and you'll not get this sh** log anymore tt1:
#
file: smwsock.cpp
function: DWORD WINAPI smTransSendThreadProc( void *pInfo )
PHP:
if ( stats!=BuffLen )
{
stats = stats;
}
*** is that?
Well, you know what to do. :closedeyes:
#
I hope that will help us somewhat.
Last edited: