#define Gunz08 typedef struct MCOLOR { char r; char g; char b; char a; }MCOLOR; CDetour GetUserGradeIDColorDet; bool __cdecl GetUserGradeIDColor(int UGradeID, struct MCOLOR &Color,char *szName) { //printf("%d\n",UGradeID); switch(UGradeID) { case 255: case 254: case 7: case 8: break; default: return true; } GetUserGradeIDColorDet.Ret(false); if(UGradeID == 7) { Color.a = 255; Color.r = 255; Color.g = 128; Color.b = 64; }else if(UGradeID == 255 || UGradeID == 254 || UGradeID == 8){ Color.a = 255; Color.r = 9; Color.g = 177; Color.b = 163; } //GetUserGradeIDColorDet.Org(UGradeID, Color, szName); return true; } __declspec(naked) void Scoreboard() { #ifdef Gunz08 __asm { MOV EAX,[EBX+0x4EA] } #else __asm { MOV EAX,[EBP+0x45A] } #endif __asm { CMP EAX,0xFF //UGradeID 255 jne GradoM MOV [EBP-0x17C],0x00 //The R MOV [EBP-0x17B],0xB7 //The G MOV [EBP-0x17A],0xFF //The B MOV [EBP-0x179],0xFF //The A MOV ECX,[EBP-0x17C] JMP UgradeIDRegreso GradoM: CMP EAX,0xFE //UGradeID 254 jne Grado1 MOV [EBP-0x17C],0xFF //The R MOV [EBP-0x17B],0x80 //The G MOV [EBP-0x17A],0x40 //The B MOV [EBP-0x179],0xFF //The A MOV ECX,[EBP-0x17C] JMP UgradeIDRegreso Grado1: CMP EAX,0x1 //UGradeID 1 jne Grado2 MOV [EBP-0x17C],0xFF //The R MOV [EBP-0x17B],0x80 //The G MOV [EBP-0x17A],0x40 //The B MOV [EBP-0x179],0xFF //The A MOV ECX,[EBP-0x17C] JMP UgradeIDRegreso Grado2: CMP EAX,0x7 //UGradeID 1 jne Final MOV [EBP-0x17C],0xFF //The R MOV [EBP-0x17B],0x80 //The G MOV [EBP-0x17A],0x40 //The B MOV [EBP-0x179],0xFF //The A MOV ECX,[EBP-0x17C] JMP UgradeIDRegreso Final: JMP UgradeIDRegreso } } __declspec(naked) void UGradeID() { #ifdef Gunz08 __asm { MOV EAX,[ECX+0x4EA] } #else __asm { MOV EAX,[ECX+0x45A] } #endif __asm { CMP EAX,0xFF JNE Final CMP EAX,0xFE JNE Final CMP EAX,0x1 JNE Final CMP EAX,0x7 JNE Final XOR AL,AL RETN Final: MOV AL,1 RETN } }main.cppCode:
void CopyBuffer(BYTE *Buffer, int Size, DWORD *Address) { DWORD pPrevious = 0; VirtualProtect(Address, Size, PAGE_EXECUTE_READWRITE, &pPrevious); memcpy(Address, Buffer, Size); VirtualProtect(Address, Size, pPrevious, &pPrevious); } void SetupHook(DWORD Function, DWORD Hook, int Size) { Hook = Hook - Function - 5; BYTE bHook[4]; memcpy(bHook,(void*)&Hook,4); BYTE Buffer[10]; memset(Buffer,0x90,10); Buffer[0] = 0xE9; Buffer[1] = bHook[0]; Buffer[2] = bHook[1]; Buffer[3] = bHook[2]; Buffer[4] = bHook[3]; CopyBuffer(Buffer, Size, (DWORD*)Function); } void LMAO() { /* AllocConsole(); freopen("CONOUT$", "wb", stdout); freopen("CONIN$", "rb", stdin); */ GetUserGradeIDColorDet.Detour((PBYTE)GetUserGradeIDColorAddress,(PBYTE)GetUserGradeIDColor,true); GetUserGradeIDColorDet.Apply(); SetupHook((DWORD)UGradeIDAddress,(DWORD)UGradeID,5); SetupHook((DWORD)ScoreboardAddress,(DWORD)Scoreboard,5); CreateThread(NULL,NULL,InfoPC, NULL,NULL,NULL); } BOOL WINAPI DllMain (HMODULE hModule, DWORD dwReason, LPVOID) { if (dwReason == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls (hModule); LMAO(); } return true; }Code:
// 2008 DWORD GetUserGradeIDColorAddress = 0x4A17A0; unsigned long UGradeIDAddress = 0x477000; unsigned long UgradeIDRegreso = 0x40784E; unsigned long ScoreboardAddress = 0x407832; /* 2007 No tested DWORD GetUserGradeIDColorAddress = 0x0049EF00; unsigned long UGradeIDAddress = 0x473920; unsigned long UgradeIDRegreso = 0x407909; unsigned long ScoreboardAddress = 0x4078F5; */
ATT: KnightOwner

Comentários
Postar um comentário
Sem Chingamentos
Sem Flood
Obrigada ;D