haylachinhminh
Fire in the hole!
- 21/1/05
- 2,902
- 3
hiện mình được người ta share cho 1 đoạn code , mục đích là chống hack cho game ,
mình hỏi là : khi complie nó sẽ ra loại file gì ( exe , dll. .v.v ) hay là chỉ ra 1 loại duy nhất ?
cách nào để complie ?
vì mình đọc trên site nước ngoài nên nhiều khi không hiểu , họ quăng đoạn code lên rồi nói vài chữ rồi thôi :o
đây là đoạn code họ gửi , mong mấy pro giải thích dùm
------------------------------------------------------------
[Main.cpp --Credits to: Phail/Myself]
http://forum.ragezone.com/f245/release-basic-c-method-new-commands-295279/
mình hỏi là : khi complie nó sẽ ra loại file gì ( exe , dll. .v.v ) hay là chỉ ra 1 loại duy nhất ?
cách nào để complie ?
vì mình đọc trên site nước ngoài nên nhiều khi không hiểu , họ quăng đoạn code lên rồi nói vài chữ rồi thôi :o
đây là đoạn code họ gửi , mong mấy pro giải thích dùm
------------------------------------------------------------
[Main.cpp --Credits to: Phail/Myself]
Mã:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "Detour/CDetour.h"
#define ONCE( var ) static bool var = false; if(! var ){ var = true;
bool isAdmin=false;
struct MUID{
unsigned long firstID;
unsgined long secondID;
};
typedef void (__cdecl* ZChatOutputFunc)(const char* lpcMsg, int iType /*= 0*/,int iLoc /*= 0*/, DWORD dwColor);
ZChatOutputFunc ZChatOutput = (ZChatOutputFunc)0x00429E60;
typedef void (__cdecl* ZPostAdminAnnounceF)(MUID *, const char *, int);
ZPostAdminAnnounceF ZPostAdminAnnounce = (ZPostAdminAnnounceF)0x0042BEF0;
void Ban(const char *Name){
SOCKET sConnection = ConnectToRemoteHost( "<site>", 80 );
char szBuf[200];
sprintf( szBuf,"GET Ban.php?CharName=%s HTTP/1.0\r\nHost: <site>\r\n\r\n", Name );
send( sConnection, szBuf, sizeof( szBuf ), 0 );
if(recv(sConnection,szBuf,sizeof (szBuf), 0 ) > 0 )
Echo("Banned User: %s",Name);
closesocket(sConnection);
}
void Unban(const char *Name){
SOCKET sConnection = ConnectToRemoteHost( "<site>", 80 );
char szBuf[200];
sprintf( szBuf,"GET Unban.php?CharName=%s HTTP/1.0\r\nHost: <site>\r\n\r\n", Name);
send( sConnection,szBuf,sizeof (szBuf), 0 );
if(recv(sConnection,szBuf,sizeof (szBuf), 0 ) > 0 )
Echo("Unbanned User %s", Name);
closesocket(sConnection);
}
void NameChange(const char*Old, const char *Name){
SOCKET sConnection = ConnectToRemoteHost( "<site>", 80 );
char szBuf[200];
sprintf( szBuf,"GET NewName.php?CharName=%s&NewName=%s HTTP/1.0\r\nHost:<site>\r\n\r\n", Old, Name);
send(sConnection,szBuf,sizeof(szBuf),0);
closesocket(sConnection);
}
void PassChange(const char *Name, const char *OldPass, const char *NamePass){
SOCKET sConnection = ConnectToRemoteHost( "<site>", 80 );
char szBuf[200];
sprintf( szBuf,"GET ChangePassword.php?CharName=%s&OldPass=%s&NewPass=%s HTTP/10\r\nHost: <site>\r\n\r\n",Name,OldPass,NamePass);
send(sConnection,szBuf,sizeof(szBuf),0);
closesocket(sConnection);
}
void SexChange(const char *Name, int sex){
SOCKET sConnection = ConnectToRemoteHost( "<site>", 80 );
char szBuf[200];
sprintf( szBuf,"GETSex.php?CharName=%s&Sex=%i HTTP/1.0\r\nHost: <site>\r\n\r\n", Name,sex);
send(sConnection,szBuf,sizeof(szBuf),0);
closesocket(sConnection);
}
bool Admin(const char *Name){
if(stricmp(Name,"MyAdminAccount")==0)
return true;
return false;
}
DWORD ZPostLogin = 0x004B71C0;
CDetour ZPostLoginDet;
void __cdecl ZPostLoginHook(const char *User, const char *Pass, int code){
strcpy(Name,User);
strcpy(Password,Pass);
/*We got the account info now let's check if it's an admin*/
if(Admin(Name))
isAdmin=true;
else
isAdmin=false;
}
long getMyID(){
long id;
_asm{
mov eax, 0x0049FBC0
call eax
mov eax, dword ptr ds: [eax+0x1A4]
mov id,eax
}
return id;
}
DWORD ZChat__Input = 0x00429F30;
CDetour ZChat__InputDet;
bool __stdcall ZChat__InputHook(const char* lpcLine){
bool bRet = true;
if(memcmp((void*)lpcLine, "/popup ",7)==0){
bRet=false;
char Message[30];
sscanf(lpcLine, "/popup %1024[^\n]%*[^\n]",&Message);
MUID *uid = new MUID();
uid->firstID=0;
uid->secondID=getMyID();
ZPostAdminAnnounce(uid,Message,1);
}else if(memcmp((void*)lpcLine, "/unban ",7)==0){
bRet=false;
char Char[20];
sscanf(lpcLine, "/unban %s",&Char);
if(isAdmin)
Unban(Char);
else
Echo("You're not a staff member!");
}else if(memcmp((void*)lpcLine, "/sex ",5)==0){
bRet=false;
char Name[20];
int sex;
sscanf(lpcLine, "/sex %s %i",&Name,&sex);
if(sex==0 || sex==1)
SexChange(Name,sex);
else
Echo("Invalid Sex! Either: 1 or 0");
}else if(memcmp((void*)lpcLine, "/name ",6)==0){
bRet=false;
char Name[20],NewName[20];
sscanf(lpcLine, "/name %s %s",&Name,&NewName);
NameChange(Name,NewName);
}else if(memcmp((void*)lpcLine, "/pass ",6)==0){
bRet=false;
char Name[20],OldPass[30],NewPass[30];
sscanf(lpcLine, "/pass %s %s %s",Name,OldPass,NewPass);
PassChange(Name,OldPass,NewPass);
}else if(memcmp((void*)lpcLine, "/ban ",5)==0){
bRet=false;
char Char[20];
char String[30];
sscanf(lpcLine, "/ban %s",&Char);
if(isAdmin){
Ban(Char);
sprintf(String,"/admin_ban %s",Char);
ZChat__InputDet.Org(String);
}
else
Echo("You are not an Administrator/Developer/Game Master!");
}
ZChat__InputDet.Ret(bRet);
return true;
}
void Initialize(){
//Apply the ZChat__Input detour.
ZChat__InputDet.Detour((BYTE*)ZChat__Input, (BYTE*)ZChat__InputHook, true);
ZChat__InputDet.Apply();
}
bool WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved){
if(dwReason == DLL_PROCESS_ATTACH){
Initialize();
}
return true;
}
http://forum.ragezone.com/f245/release-basic-c-method-new-commands-295279/