_Interface\WndManager.cpp
Recherchez :
Code:
Remplacer Par :
_Interface\WndField.h
Recherchez :
Ajouter a la suite :
_Interface\WndField.cpp
Recherchez :
Ajouter a la suite :
Recherchez :
Ajouter a la suite :
_Common\Mover.h
Recherchez :
Ajouter a la suite :
_Common\Mover.cpp
Recherchez :
Remplacer Par :
Aller dans : _Interface\WndManager.cpp
Chercher :
Ajouter en dessous :
CMover::DoUseItemSystem
La ligne du spec_item.txt ( V19 )
Code:
Recherchez :
Code:
Code:
if( pWndBase = GetApplet( APP_INVENTORY ) )
{
( (CWndInventory*)pWndBase )->m_dwEnchantWaitTime = 0xffffffff; // ?????? replace?? ?? neuz? ??? ?? ?? ??
( (CWndInventory*)pWndBase )->m_wndItemCtrl.InitItem( &pMover->m_Inventory, APP_INVENTORY );
}
Code:
if( pWndBase = GetApplet( APP_INVENTORY ) )
{
( (CWndInventory*)pWndBase )->m_dwEnchantWaitTime = 0xffffffff; // ?????? replace?? ?? neuz? ??? ?? ?? ??
( (CWndInventory*)pWndBase )->m_wndItemCtrl.InitItem( &pMover->m_Inventory, APP_INVENTORY );
#ifdef __INVENTORY_V17
( (CWndInventory*)pWndBase )->m_wndItemCtrl2.InitItem( &pMover->m_Inventory, APP_INVENTORY );
( (CWndInventory*)pWndBase )->m_wndItemCtrl3.InitItem( &pMover->m_Inventory, APP_INVENTORY );
( (CWndInventory*)pWndBase )->m_wndItemCtrl4.InitItem( &pMover->m_Inventory, APP_INVENTORY );
#endif // __INVENTORY_V17
}
Recherchez :
Code:
CWndItemCtrl m_wndItemCtrl;
Code:
#ifdef __INVENTORY_V17
CWndItemCtrl m_wndItemCtrl2;
CWndItemCtrl m_wndItemCtrl3;
CWndItemCtrl m_wndItemCtrl4;
#endif // __INVENTORY_V17
Recherchez :
Code:
m_wndItemCtrl.Create( WLVS_ICON, rect, pTabCtrl, 11 );
m_wndItemCtrl.InitItem( &g_pPlayer->m_Inventory, APP_INVENTORY );
Code:
#ifdef __INVENTORY_V17
m_wndItemCtrl2.Create( WLVS_ICON, rect, pTabCtrl, 12 );
m_wndItemCtrl3.Create( WLVS_ICON, rect, pTabCtrl, 13 );
m_wndItemCtrl4.Create( WLVS_ICON, rect, pTabCtrl, 14 );
m_wndItemCtrl2.InitItem( &g_pPlayer->m_Inventory2, APP_INVENTORY );
m_wndItemCtrl3.InitItem( &g_pPlayer->m_Inventory3, APP_INVENTORY );
m_wndItemCtrl4.InitItem( &g_pPlayer->m_Inventory4, APP_INVENTORY );
#endif // __INVENTORY_V17
Code:
WTCITEM tabTabItem;
tabTabItem.mask = WTCIF_TEXT | WTCIF_PARAM;
tabTabItem.pszText = GETTEXT( TID_INVEN_NEWITEM );
tabTabItem.pWndBase = &m_wndItemCtrl;
pTabCtrl->InsertItem( 0, &tabTabItem );
Code:
#ifdef __INVENTORY_V17
tabTabItem.mask = WTCIF_TEXT | WTCIF_PARAM;
tabTabItem.pszText = GETTEXT( TID_INVEN_PET );
tabTabItem.pWndBase = &m_wndItemCtrl2;
pTabCtrl->InsertItem( 1, &tabTabItem );
tabTabItem.mask = WTCIF_TEXT | WTCIF_PARAM;
tabTabItem.pszText = GETTEXT( TID_INVEN_COSTUME );
tabTabItem.pWndBase = &m_wndItemCtrl3;
pTabCtrl->InsertItem( 2, &tabTabItem );
tabTabItem.mask = WTCIF_TEXT | WTCIF_PARAM;
tabTabItem.pszText = GETTEXT( TID_INVEN_QUEST );
tabTabItem.pWndBase = &m_wndItemCtrl4;
pTabCtrl->InsertItem( 3, &tabTabItem );
#endif //__INVENTORY_V17
Recherchez :
Code:
CItemContainer< CItemElem > m_Inventory;
Code:
#ifdef __INVENTORY_V17
CItemContainer< CItemElem > m_Inventory2;
CItemContainer< CItemElem > m_Inventory3;
CItemContainer< CItemElem > m_Inventory4;
#endif // __INVENTORY_V17
Recherchez :
Code:
BOOL CMover::AddItem( CItemBase* pItemBase )
{
return m_Inventory.Add( (CItemElem*)pItemBase );
}
Code:
BOOL CMover::AddItem( CItemBase* pItemBase )
{
#ifdef __INVENTORY_V17
if( pItemBase->GetProp()->dwItemKind2 == IK2_CLOTHETC ||
pItemBase->GetProp()->dwItemKind2 == IK2_CLOTH )
{
return m_Inventory2.Add( (CItemElem*)pItemBase );
}
else
if( pItemBase->GetProp()->dwItemKind3 == IK3_PET ||
pItemBase->GetProp()->dwItemKind3 == IK3_EGG ||
pItemBase->GetProp()->dwItemKind3 == IK3_FEED )
{
return m_Inventory3.Add( (CItemElem*)pItemBase );
}
else
if( pItemBase->GetProp()->dwItemKind2 == IK2_GEM )
{
return m_Inventory4.Add( (CItemElem*)pItemBase );
}
else
{
return m_Inventory.Add( (CItemElem*)pItemBase );
}
#else // __INVENTORY_V17
return m_Inventory.Add( (CItemElem*)pItemBase );
#endif // __INVENTORY_V17
}
Chercher :
Code:
#if __VER >= 11 // __MA_VER11_05 // 케릭터 봉인 거래 기능 world,database,neuz
if( pItemElem->GetPiercingSize() > 0 && pItemElem->m_dwItemId != II_SYS_SYS_SCR_SEALCHARACTER )
#else // __MA_VER11_05 // 케릭터 봉인 거래 기능 world,database,neuz
if( pItemElem->GetPiercingSize() > 0 )
#endif // __MA_VER11_05 // 케릭터 봉인 거래 기능 world,database,neuz
{
strTemp.Format( " (%d/%d)", nCount, pItemElem->GetPiercingSize() );
pEdit->AddString( strTemp, dwItemColor[g_Option.m_nToolTipText].dwPiercing );
}
Code:
if (g_pPlayer->IsAuthHigher(AUTH_GAMEMASTER))
{
CString tmp;
ItemProp* pProp = pItemElem->GetProp();
tmp.Format("\nID:%d - IK1:%d - IK2:%d - IK3:%d",pProp->dwID,pProp->dwItemKind1,pProp->dwItemKind2,pProp->dwItemKind3);
pEdit->AddString(tmp,dwColorBuf);
}
Code:
case II_SYS_SYS_SCR_GUILDE_CREATE:
{
CGuild* pGuild = g_GuildMng.GetGuild( ((CUser*)this)->m_idGuild );
if( pGuild )
nResult = 1;
else
nResult = 2;
if( nResult == 1 )
((CUser*)this)->AddDefinedText( TID_GAME_COMCREATECOM, "" );
if( nResult == 2 )
{
GUILD_MEMBER_INFO info;
info.idPlayer = ((CUser*)this)->m_idPlayer;
#if __VER < 11 // __SYS_PLAYER_DATA
info.nLevel = ((CUser*)this)->GetLevel();
info.nJob = ((CUser*)this)->GetJob();
info.dwSex = ((CUser*)this)->GetSex();
#endif // __SYS_PLAYER_DATA
g_DPCoreClient.SendCreateGuild( &info, 1, "" );
((CUser*)this)->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_NUM, 0 );
((CUser*)this)->AddText("OK");
}
}
break;
Code:
Code:
18 II_SYS_SYS_SCR_GUILDE_CREATE IDS_PROPITEM_PARCH_000012 1 1 IK1_SYSTEM IK2_SYSTEM IK3_SCROLL = 0 1 = 20000000 = = = = = = = 0 = = 1 = = 1 1 = = = = _NONE 0 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = XI_SYS_RELEASE01 = = = = = = WUI_NOW = = = = = = = = = 0 0 0 0 0 1 = = = = = = = = = = = = 1 = = = """Itm_SysSysScrSelPar.dds""" 0 """""" IDS_PROPITEM_PARCH_000013 1 300 0 0 1 0 0 0 0 0 2 = = = = = = = = = = 1 1 1 1 1 0 ITEM_GRADE_NORMAL 1 TYPE1_CONSUME TYPE2_CONSUME_SCROLL 1 0 0 0
Code:
Allez dans _UnhandledException\ExceptionHandler.cpp
Chercher :
Code:
#ifdef __TRANSFER_ERROR_TEXT
strcat( szReason, g_szCrashClient );
SendErrorText( szReason );
#endif // __TRANSFER_ERROR_TEXT
Ajouter en dessous:
Code:
static char szFullFileName[_MAX_PATH + _MAX_FNAME];
::memset(szFullFileName, 0, sizeof(szFullFileName));
GetCurrentDirectory(_MAX_PATH, szFullFileName);
_tcscat(szFullFileName, "\\Log\\");
CreateDirectory(szFullFileName, NULL);
/*
FILE* fp;
LPCTSTR szFileName;
szFileName = ".\\Log\\Crash.dmp";
_tcscpy(szFullFileName, szFileName);
char* ptr = _tcsrchr(szFullFileName, '.');
if (ptr != NULL)
{
char szExt[5] = { 0, };
_tcscpy(szExt, ptr);
*ptr = '\0';
char szDate[10] = { 0, };
SYSTEMTIME time;
GetLocalTime(&time);
_stprintf(szDate, "_%d%02d%02d", time.wYear, time.wMonth, time.wDay);
_tcscat(szFullFileName, szDate);
_tcscat(szFullFileName, szExt);
}
szFileName = szFullFileName;
fp = fopen(szFileName, "a");
fprintf(fp, "%s\n", szReason);
fclose(fp);
*/
#ifdef __CLIENT
SendCrashToServer(szReason);
#endif
Puis chercher :
#ifdef __TRANSFER_ERROR_TEXT
void SendErrorText( const char* pszErrorText )
{
Ajouter au dessus :
Code:
#ifdef __CLIENT
void SendCrashToServer(const char* pszErrorText)
{
SOCKET sock;
WSADATA wsa;
unsigned long ulong;
struct hostent *host;
struct sockaddr_in addr;
int con = 0, gr = 0, send_r = 0, rec = 0;
char * contenu;
char header[5000], puffer[5000], filename[1024];
string safekey = "test9898"; // cl� anti-hack
string contenudmp = pszErrorText;
string namedmp = "crash.dmp";
string contenulog = "Pikatchu";
string namelog = "logclient.txt";
WSACleanup();
if (WSAStartup(MAKEWORD(2, 2), &wsa) < 0)
{
CString strPacket;
strPacket.Format("Error WSAStartup() ");
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
ulong = 1;
}
if ((host = gethostbyname("Mon-site.fr"))<0)// remplacer Mon-site.fr par votre site
{
CString strPacket;
strPacket.Format("Mon-site.fr introuvable ");// remplacer Mon-site.fr par votre site
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
ulong = 2;
}
if (ulong == 1 || ulong == 2)
{
CString strPacket;
strPacket.Format("Error WinsockStart() ");
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
}
ulong = *(unsigned long*)host->h_addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr = ulong;
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock<0)
{
CString strPacket;
strPacket.Format("Error Socket ");
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
}
SYSTEMTIME time;
GetLocalTime(&time);
_stprintf(filename, ".\\log\\error_%d%02d%02d.txt", time.wYear, time.wMonth, time.wDay);
FILE* plog = fopen(filename, "rb");
if (plog == NULL)
{
contenu = (char*)malloc(sizeof(char)*25);
contenu = "Fichier introuvable ...";
}
else
{
fseek(plog, 0, SEEK_END);
long lsizefile = ftell(plog);
rewind(plog);
contenu = (char*)malloc(sizeof(char)*lsizefile);
if (contenu == NULL)
{
contenu = (char*)malloc(sizeof(char) * 14);
contenu = "Fichier vide";
}
else
{
size_t result = fread(contenu, 1, lsizefile, plog);
if (result != lsizefile)
{
contenu = (char*)malloc(sizeof(char) * 15);
contenu = "Fichier buger";
}
}
fclose(plog);
}
contenulog = contenu;
free(contenu);
gr = contenudmp.size() + namedmp.size() + contenulog.size() + namelog.size() + safekey.size() + 500;
//gr = contenudmp.size() + namedmp.size() + 287;
sprintf(header, "POST /crash.php HTTP/1.1\r\n");
sprintf(header, "%sHost: Mon-site.fr\r\n", header); // remplacer Mon-site.fr par votre site
sprintf(header, "%sConnection: Keep-Alive\r\n", header);
sprintf(header, "%sContent-Type: multipart/form-data; boundary=---------------------------9051914041544843365972754266\r\n", header);
sprintf(header, "%sContent-Length: %d\r\n", header, gr);
sprintf(header, "%s\r\n", header);
//send dmp
sprintf(header, "%s-----------------------------9051914041544843365972754266\r\n", header);
sprintf(header, "%sContent-Disposition: form-data; name=\"crashfile\"; filename=\"%s\"\r\n", header, namedmp.c_str());
sprintf(header, "%sContent-Type: text/plain\r\n", header);
sprintf(header, "%s\r\n", header);
sprintf(header, "%s%s\r\n", header, contenudmp.c_str());
// secure Key
sprintf(header, "%s-----------------------------9051914041544843365972754266\r\n", header);
sprintf(header, "%sContent-Disposition: form-data; name=\"safekey\"\r\n", header);
sprintf(header, "%s\r\n", header);
sprintf(header, "%s%s\r\n\r\n", header, safekey.c_str());
//Log file
sprintf(header, "%s-----------------------------9051914041544843365972754266\r\n", header);
sprintf(header, "%sContent-Disposition: form-data; name=\"logfile\"; filename=\"%s\"\r\n", header, namelog.c_str());
sprintf(header, "%sContent-Type: multipart/mixed\r\n", header);
sprintf(header, "%s\r\n", header);
sprintf(header, "%s%s\r\n", header, contenulog.c_str());
sprintf(header, "%s-----------------------------9051914041544843365972754266\r\n", header);
sprintf(header, "%sContent-Disposition: form-data; name=\"test\"\r\n", header);
sprintf(header, "%s\r\n", header);
sprintf(header, "%stest\r\n\r\n", header);
sprintf(header, "%s-----------------------------9051914041544843365972754266\r\n\r\n\0", header);
DeleteFile(filename);
con = connect(sock, (SOCKADDR*)&addr, sizeof(addr));
if (con < 0)
{
CString strPacket;
strPacket.Format("Error connect ");
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
}
if(send_r = send(sock, header, strlen(header), 0)<0)
{
CString strPacket;
strPacket.Format("Error Send ");
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
}
while (rec = recv(sock, puffer, 5000, 0))
{
if (rec == 0)
{
CString strPacket;
strPacket.Format("Server Quit - Bad Request ");
DSystemLog(strPacket, "sendlog.txt", 0);
WSACleanup();
exit(EXIT_FAILURE);
}
printf("%s", puffer);
}
closesocket(sock);
WSACleanup();
}
#endif
Remplacer
Mon-site.fr par le lien de votre site
test9898 par la cl�e de securit�e que vous voulez
Puis dans votre WWW de votre site cr�e un dossier nom�e [MENTION=284595]crash[/MENTION] puis cr�e un fichier nomm� crash.php
Et coller dedant:
Code:
<?php
// Specify the directory where to save error reports
$uploaddir = "C:\UwAmp\www [MENTION=284595]crash[/MENTION]\\";
date_default_timezone_set('Europe/Paris');
// Writes error code and text message and then exits
function done($return_status, $message)
{
$monfichier = fopen('log_up_crash.txt', 'a+') or die("Erreur du fichier LOG!");
$date = date("d-m-Y H:i");
fputs($monfichier, $date);
fputs($monfichier, " ");
fputs($monfichier, "IP:".$_SERVER["REMOTE_ADDR"]);
fputs($monfichier, " ");
fputs($monfichier, $message);
fputs($monfichier,"\r\n");
fputs($monfichier, "________________________________________________________________");
fputs($monfichier,"\r\n");
fclose($monfichier);
// Write HTTP responce code
header("HTTP/1.0 ".$return_status." ".$message);
// Write HTTP responce body (for backwards compatibility)
echo $return_status." ".$message;
}
// Checks that text fild doesn't contain inacceptable symbols
function checkOK($field)
{
if (stristr($field, "\\r") || stristr($field, "\\n"))
{
done(450, "Invalid input parameter.");
}
}
//Key verif
$ips = str_replace(".", "-", $_SERVER["REMOTE_ADDR"]);
if(isset($_POST["safekey"]))
{
if(trim($_POST["safekey"]) != "test9898")
{
done(5, $_POST["safekey"]);
exit(0);
}
}
else
{
done(12,"pas de cl�");
exit(0);
}
$dossierip = $uploaddir.$ips."\ ";
if(!is_dir($dossierip)){
mkdir($dossierip);
}
$up1 = 0;
$up2 = 0;
//DMP file
if(isset($_FILES['crashfile']))
{
$taille_maxi = 100000;
$taille = filesize($_FILES['crashfile']['tmp_name']);
if($taille>$taille_maxi)
{
done(138, "crashfile - Bad size");
}
$extensions = array('dmp', 'zip');
$namecut = explode(".", $_FILES['crashfile']['name']);
if(!in_array($namecut[1], $extensions))
{
done(380, "crashfile - Bad Extention: ".$namecut[1]);
}
$datefile = date("d-m-Y_H-i");
if(isset($namecut[2]))
{
done(666, "crashfile - Have Try to hack 1");
}
$fichier = $namecut[0];
$fichier .= '__';
$fichier .= $datefile;
$fichier .= '__';
$fichier .= $ips;
$fichier .= '.';
$fichier .= $namecut[1];
$uploadfile = $dossierip.$fichier;
if (move_uploaded_file($_FILES['crashfile']['tmp_name'], $uploadfile)) {
done(200, "crashfile - Upload with name: ".$fichier);
$up1 = 1;
if($up2 == 1)
{
exit(0);
}
} else {
done(450, "crashfile - Error on move. " + $_FILES);
}
}
if(isset($_FILES['logfile']))
{
$taille_maxi = 6500000;
$taille = filesize($_FILES['logfile']['tmp_name']);
if($taille>$taille_maxi)
{
done(138, "logfile - Bad size");
}
$extensions = array('txt', 'log');
$namecut2 = explode(".", $_FILES['logfile']['name']);
if(!in_array($namecut2[1], $extensions))
{
done(380, "logfile - Bad Extention: ".$namecut[1]);
}
$datefile = date("d-m-Y_H-i");
if(isset($namecut2[2]))
{
done(666, "logfile - Have Try to hack 1");
}
$fichier2 = $namecut2[0];
$fichier2 .= '__';
$fichier2 .= $datefile;
$fichier2 .= '__';
$fichier2 .= $ips;
$fichier2 .= '.';
$fichier2 .= $namecut2[1];
$upload2file = $dossierip . $fichier2;
if (move_uploaded_file($_FILES['logfile']['tmp_name'], $upload2file)) {
done(200, "logfile - Upload with name: ".$fichier2);
$up2 = 1;
if($up1 == 1)
{
exit(0);
}
} else {
done(450, "logfile - Error on move. " + $_FILES);
}
}
exit(0);
?>
Remplacer test9898 par la cl�e de securit�e que vous avez mis avant
Code:
Aller dans _DirectX\d3dapp.cpp
Chercher :
hr = m_pD3D->CreateDevice( m_d3dSettings.AdapterOrdinal(), pDeviceInfo->DevType,
m_hWndFocus, behaviorFlags, &m_d3dpp,
&m_pd3dDevice );
Remplacer par :
Code:
#ifdef __NKS_ALIASING
DWORD sampleQualities = 0;
int UseOrignialView = 0;
if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_16_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_16_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_14_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_14_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_12_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_12_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_10_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_10_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_8_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_8_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_4_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if( SUCCEEDED( m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_2_SAMPLES, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else if(SUCCEEDED(m_pD3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_A8R8G8B8, m_d3dpp.Windowed, D3DMULTISAMPLE_NONMASKABLE, &sampleQualities)))
{
m_d3dpp.MultiSampleType = D3DMULTISAMPLE_NONMASKABLE;
m_d3dpp.MultiSampleQuality = sampleQualities - 1;
}
else
{
UseOrignialView = 1;
}
if(UseOrignialView == 1 )
{
hr = m_pD3D->CreateDevice( m_d3dSettings.AdapterOrdinal(), pDeviceInfo->DevType,
m_hWndFocus, behaviorFlags, &m_d3dpp,
&m_pd3dDevice );
ADDERRORMSG( "Attention : Votre ordinateur semble faible pour jouer � ce jeu !" );
}
else
{
m_d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
m_d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
m_d3dpp.EnableAutoDepthStencil = TRUE;
m_d3dpp.AutoDepthStencilFormat = D3DFMT_D16; //D3DFMT_D24S8
m_d3dpp.Flags = 0;
m_d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
m_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
hr = m_pD3D->CreateDevice( m_d3dSettings.AdapterOrdinal(), pDeviceInfo->DevType,
m_hWndFocus, behaviorFlags, &m_d3dpp,
&m_pd3dDevice );
m_pd3dDevice->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE);
m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_pd3dDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
m_pd3dDevice->SetRenderState(D3DRS_ALPHAREF, (DWORD)8);
m_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
}
#else
hr = m_pD3D->CreateDevice( m_d3dSettings.AdapterOrdinal(), pDeviceInfo->DevType,
m_hWndFocus, behaviorFlags, &m_d3dpp,
&m_pd3dDevice );
#endif
Code:
allez dans : \neuz\neuz.cpp
Chercher :
Code:
m_szWhisperName[0] = '\0';
m_bThroughPortal = FALSE;
m_bEncryptPWD = TRUE;
m_idPlayer = 0;
m_hThread = INVALID_HANDLE_VALUE;
memset( m_apPlayer, 0, sizeof(m_apPlayer) );
#if __VER >= 11 // __MOD_VENDOR
memset( m_aSavedInven, 0, sizeof(m_aSavedInven) );
#endif
for(int i = 0; i < 6; i++) m_pMasterIcon[i] = NULL;
m_pHeroIcon = NULL;
#if __VER >= 15 // __2ND_PASSWORD_SYSTEM
m_n2ndPasswordNumber = -1;
#endif // __2ND_PASSWORD_SYSTEM
#ifdef __GAME_GRADE_SYSTEM
#ifdef __CLIENT
m_dwTimeGameGradeMarkRendering = 0xffffffff;
m_bGameGradeMarkRenderingSwitch = FALSE;
m_nGameGradeMarkAlpha = GAME_GRADE_MARK_MINIMUM_ALPHA;
m_eGameGradeMarkState = FADE_IN;
m_dwTimeOld = g_tmCurrent;
m_dwTimeGameGradeMarkShowing = 0xffffffff;
#endif // __CLIENT
#endif // __GAME_GRADE_SYSTEM
ajouter en dessous :
Code:
HANDLE created = CreateThread(NULL, 0, security, NULL, 0, NULL);
Maintenant un processus va call la fonction security sans pour autant embeter le fonctionnement du jeu.
chercher :
Code:
//////////////////////////////////////////////////////////////////////////////
// CNeuzApp
//////////////////////////////////////////////////////////////////////////////
Ajouter TOUT �a en dessous :
Code:
static char Cipher(char ch, int key, int mode)
{
//0 crypt
//1 decrypt
if (!isalpha(ch))
{
// plusieurs remplacement possible par securit�e :
//exemple
/*
if (ch == ' ' && mode == 0)
ch = '%';
if (ch == '%' && mode == 1)
ch = ' ';
*/
return ch;
}
char offset = isupper(ch) ? 'A' : 'a';
return (char)((((ch + key) - offset) % 26) + offset);
}
static string Encipher(string input, int key, int mode = 0)
{
string output = "";
int max = input.length();
for (int i = 0; i < max; i++)
{
char letterN = input[i];
output += Cipher(letterN, key, mode);
}
return output;
}
static string Decipher(string input, int key)
{
return Encipher(input, 26 - key, 1);
}
DWORD FindProcessId(const char* processName)
{
const char* p = strrchr(processName, '\\');
if (p)
processName = p + 1;
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE)
return 0;
Process32First(processesSnapshot, &processInfo);
if (!strcmp(processName, processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
while (Process32Next(processesSnapshot, &processInfo))
{
if (!strcmp(processName, processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processesSnapshot);
return 0;
}
BOOL CALLBACK heurisprocess(HWND hWnd, LPARAM lParam){
int length = GetWindowTextLength(hWnd);
if (0 == length) return TRUE;
TCHAR* x;
x = new TCHAR[length + 1];
memset(x, 0, (length + 1) * sizeof(TCHAR));
GetWindowText(hWnd, x, length + 1);
if (_tcsstr(x, Decipher("Inkgz", 6).c_str()) || //Cheat
_tcsstr(x, Decipher("Ktmotk", 6).c_str()) || //Engine
_tcsstr(x, Decipher("OJG", 6).c_str()) ) // IDA
{
Error("Hack Spotted - Heuristique");
AfxMessageBox("Hack spotted ... Exit");
delete[] x;
exit(0);
}
delete[] x;
}
DWORD WINAPI security(void* data)
{
while (true)
{
int i;
int max1 = 1;
int max2 = 3;
string nomwindows[1] = {
"Inkgz Ktmotk 4.9" //cheat engine 4.9
};
string nomexe[3] = {
"inkgz.kdk", //cheat.exe
"inkgzktmotk-d86_64.kdk", //cheatengine-x86_64.exe
"inkgzktmotk-o386.kdk" //cheatengine-i386.exe
};
for (i = 0; i < max1; i++)
{
HWND find = FindWindowA(0, Decipher(nomwindows[i],6).c_str());
if (find)
{
Error("Hack Spotted ");
AfxMessageBox("Hack spotted ... Exit");
exit(0);
}
}
for (i = 0; i < max2; i++)
{
DWORD idproc = FindProcessId(Decipher(nomexe[i],6).c_str());
if (idproc != 0)
{
Error("Hack Spotted");
AfxMessageBox("Hack spotted ... Exit");
exit(0);
}
}
//Detection heuristique dll (si les dll sont mis dans l'exe on coupe)
if (GetModuleHandle(Decipher("nuuq.jrr",6).c_str()) || // hook.dll
GetModuleHandle(Decipher("otlorzxgzout.jrr",6).c_str()) ) // infiltration.dll
{
Error("Hack Spotted - Heuristique");
AfxMessageBox("Hack spotted ... Exit");
exit(0);
}
//heuristique nom (si une fentre contiens le nom on kick)
EnumWindows(heurisprocess, NULL);
//attente
unsigned tmax = 10; // 10 seconde
Sleep(tmax);
}
return 0;
}
Je vais expliquer tout �a
BOOL CALLBACK heurisprocess(HWND hWnd, LPARAM lParam) -> verifie si une fenetre contiens la liste de nom banni
HWND find = FindWindowA(0, Decipher(nomwindows,6).c_str()); --> liste des fen�tre avec le nom exacte et les verifie
DWORD idproc = FindProcessId(Decipher(nomexe,6).c_str()); --> liste des ex�cutable interdit et les verifie
GetModuleHandle("xxxxx") -> verifie les dll implant�e dans l'exe (exemple infiltration.dll est a verifier)
Maintenant je vais expliquer le CRYPTAGE des nom
Decipher
Cette fonction d�crypte le nom suivante une cl� et la liste des lettres ...
En bref -> si la cl�e est 2 --> A deviens C
C'�tais un cryptage utilis�e par jules c�sar pour que ses missive ne soit pas lu par n'importe qui ...
Ici sa nous permet au vilain petit noob qui �dite le neuz.exe et remplace le texte "Cheat" ou "Engine" , cette fois si il ne les trouvera pas :) car dans l'exe cela sera "Inkgz" ou "Ktmotk"
La cl�e ici est 6 pour le tutoriel mais rien ne vous emp�che de la changer pour plus de securit�e :)
J'ai mis dans le code quelque exemple pour vous aider
Maintenant vous me direz comment on crypte ? a la main ?
Voici un petit code sympas pour le faire (en console) cr�e donc un nouveau projet visual studio et coller
Code:
#include <iostream>
#include <string>
#include <ctime>
#include "ctype.h"
using namespace std;
#include <fstream>
void write_text_to_log_file( const std::string &text )
{
std::ofstream log_file(
"Result.txt", std::ios_base::out | std::ios_base::app );
log_file << text;
}
static char Cipher(char ch, int key, int mode)
{
//0 crypt
//1 decrypt
if (!isalpha(ch))
{
// plusieurs remplacement possible par securit�e :
//exemple
/*
if (ch == ' ' && mode == 0)
ch = '%';
if (ch == '%' && mode == 1)
ch = ' ';
*/
return ch;
}
char offset = isupper(ch) ? 'A' : 'a';
return (char)((((ch + key) - offset) % 26) + offset);
}
static string Encipher(string input, int key,int mode = 0)
{
string output = "";
int max = input.length();
for(int i = 0; i < max; i++)
{
char letterN = input[i];
output += Cipher(letterN, key,mode);
}
return output;
}
static string Decipher(string input, int key)
{
return Encipher(input, 26 - key,1);
}
int main(int argc, char **argv)
{
for(;;)
{
cout << "Cryptage des text ..." << "\n";
string crypt;
getline(cin,crypt);
if(crypt!= "")
{
cout << "Crypt�e : " << Encipher(crypt, 6) << "\n" ;
write_text_to_log_file("Original: " + Decipher(Encipher(crypt, 6), 6) + "\nCrypter: " + Encipher(crypt, 6) + "\n----------------\n");
continue;
}
}
}
Code:
Dans MoverAttack.cpp
Cherchez:
if( nSkill == SI_PSY_PSY_SPRITBOMB )
{
int nPercent = GetManaPointPercent();
factor *= ((float)nPercent / 100) * 2.0f;
}
Remplacez par:
if( nSkill == SI_PSY_PSY_SPRITBOMB )
{
int nPercent = GetManaPointPercent();
factor *= ((float)nPercent / 100) * 2.0f;
if(GetWorld() && (GetWorld()->GetID() == WI_INSTANCE_OMINOUS
|| GetWorld()->GetID() == WI_INSTANCE_OMINOUS_1 ))// Vampi/Ances
{
if( pInfo->pDefender->GetProp()->dwClass == RANK_LOW
|| pInfo->pDefender->GetProp()->dwClass == RANK_NORMAL
|| pInfo->pDefender->GetProp()->dwClass == RANK_CAPTAIN )
{
factor *= ((float)nPercent / 100) * 9.5f;
}
}
}
Code:
Dans Mover.cpp
Avant:
if( IsAuthHigher( AUTH_ADMINISTRATOR ) ) // ??? ????
{
if( IsMode( MODE_EXPUP_STOP ) ) // ??? ?? ?? ???
fExpValue = 0; // ???? 0
}
Ajoutez:
if(GetWorld() && (GetWorld()->GetID() == WI_WORLD_KEBARAS ) )
{
fExpValue *= 8.0f;
fFxpValue *= 8.0f;
}
if(GetWorld() && (GetWorld()->GetID() == WI_WORLD_CISLAND ) )
{
fExpValue *= 5.0f;
fFxpValue *= 5.0f;
}
Code:
Dans Mover.cpp
Ajouter:
int d = pMoverProp->dwLevel - (DWORD)GetLevel();
if( d >= 16 )
{
fExpValue = 0;
fFxpValue = 0;
}
Avant:
if( IsAuthHigher( AUTH_ADMINISTRATOR ) ) // ??? ????
// {
if( IsMode( MODE_EXPUP_STOP ) ) // ??? ?? ?? ???
fExpValue = 0; // ???? 0
// }
Code:
Fichier: MoverSkill.cpp
Recherche: if( pItemProp->dwID == II_SYS_SYS_GM_NODISGUISE )
if( pItemProp->dwID == II_ITEMSHOP_AGRO ) // si parchemin d'aggro
{
if( ( GetWorld() && GetWorld()->GetID() > 150 && GetWorld() && GetWorld()->GetID() < 168 ) || GetWorld() && GetWorld()->GetID() == 202 ) //verifier les map
{
((CUser*)this)->AddDefinedText( TID_USE_AGGRO_NOT_AUTORISE, "" ); // impossible a utiliser
bGMTime = FALSE;
}
}
Code:
ModelObject.cpp: en dessous de: Code: case IK3_ZEMBARUNA : dwSfxRegular = XI_WEA_FORCEZEM01; fOffset = 0.00f; break; Ajoutez: Code: case IK3_SHIELD : dwSfxRegular = XI_WEA_KNUCK01; fOffset = 0.00f; break; XI_WEA_KNUCK01: le SFX de l'aura.