main.cpp
Code:
#include <Windows.h>
#include "UGradeID.h"
// 2008
DWORD GetUserGradeIDColorAddress = 0x4A17A0;
unsigned long UGradeIDAddress = 0x477000;
unsigned long UgradeIDRegreso = 0x40784E;
unsigned long ScoreboardAddress = 0x407832;
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;
}
UGradeID.h
Code:
#include "CDetour.h"
#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
}
}
CDetour.h
Code:
#include "CDetour.h"
#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
}
}
CByteArray.h
Code:
/*
Generic Sizable Byte Array
Written by LanceVorgin
*/
#pragma once
class CByteArray {
public:
CByteArray(){
m_pbBuffer = NULL;
m_uiSize = 0;
}
~CByteArray(){
if(m_pbBuffer)
delete[] m_pbBuffer;
}
void Clear(){
if(m_pbBuffer)
delete[] m_pbBuffer;
m_pbBuffer = NULL;
m_uiSize = 0;
}
void CopyTo(BYTE* pbDest){
if(m_pbBuffer)
memcpy(pbDest, m_pbBuffer, m_uiSize);
}
void CopyFrom(BYTE* pbSrc, unsigned int uiSize){
Clear();
Add(pbSrc, uiSize);
}
BYTE* Copy(){
if(!m_pbBuffer)
return NULL;
BYTE* pbBuffer = new BYTE[m_uiSize];
CopyTo(pbBuffer);
return pbBuffer;
}
void Grow(unsigned int uiSize){
BYTE* pbNewBuffer = new BYTE[m_uiSize + uiSize];
if(m_pbBuffer){
CopyTo(pbNewBuffer);
delete[] m_pbBuffer;
}
m_pbBuffer = pbNewBuffer;
m_uiSize += uiSize;
}
int SetEntry(int iIndex, void* pValue, unsigned int uiSize){
if((iIndex < 0) || ((iIndex + uiSize) > m_uiSize))
return -1;
memcpy(&m_pbBuffer[iIndex], pValue, uiSize);
return iIndex;
}
int Add(void* pValue, unsigned int uiSize){
Grow(uiSize);
return SetEntry(m_uiSize - uiSize, pValue, uiSize);
}
BYTE& operator[](int iIndex) const {
return m_pbBuffer[iIndex];
}
BYTE* GetBuffer(){
return m_pbBuffer;
}
unsigned int Size(){
return m_uiSize;
}
int Peek(){
return (int)m_uiSize;
}
int AddBYTE(BYTE bVal){ return Add(&bVal, 1); }
int AddWORD(WORD wVal){ return Add(&wVal, 2); }
int AddDWORD(DWORD dwVal){ return Add(&dwVal, 4); }
void operator+=(BYTE bVal){ AddBYTE(bVal); }
void operator+=(WORD wVal){ AddWORD(wVal); }
void operator+=(DWORD dwVal){ AddDWORD(dwVal); }
int operator+(BYTE bVal){ return AddBYTE(bVal); }
int operator+(WORD wVal){ return AddWORD(wVal); }
int operator+(DWORD dwVal){ return AddDWORD(dwVal); }
BYTE& BYTEAt(int iIndex){ return (BYTE&)m_pbBuffer[iIndex]; }
WORD& WORDAt(int iIndex){ return (WORD&)m_pbBuffer[iIndex]; }
DWORD& DWORDAt(int iIndex){ return (DWORD&)m_pbBuffer[iIndex]; }
private:
BYTE* m_pbBuffer;
unsigned int m_uiSize;
};
Error:
Code:
1>------ Build started: Project: UGradeIDs, Configuration: Debug Win32 ------
1> main.cpp
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(33): warning C4309: '=' : truncation of constant value
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(34): warning C4309: '=' : truncation of constant value
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(35): warning C4309: '=' : truncation of constant value
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(38): warning C4309: '=' : truncation of constant value
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(40): warning C4309: '=' : truncation of constant value
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(41): warning C4309: '=' : truncation of constant value
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\ugradeid.h(103): error C2094: label 'UgradeIDRegreso' was undefined
1>c:\users\storm rockwell\documents\visual studio 2010\projects\ugradeids\ugradeids\main.cpp(43): error C2065: 'InfoPC' : undeclared identifier
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
i don't know what they should be lol