Anmeldungsdatum: Aug 2007
Beiträge: 8643
Benutzer-Bewertung:
|
Tagchen,
heute habe ich angefangen wieder eine ESP Version meines CSS Hacks zu machen. Da ich nicht das SDK benutzen, muss ich alle Funktionen von Hand nachbauen. Vorteil dadran ist, dass man für kleinere Hacks auf das SDK verzichten kann und dadurch die DLL sehr klein gehalten wird.
Hier schonmal mein Anfang:
CPP Code: typedef void* (*CreateInterfaceFn)(const char *pName, int *pReturnCode); CreateInterfaceFn CaptureFactory(char *FactoryModuleName) { CreateInterfaceFn ret = NULL; while(!ret) { HMODULE FactoryModule = GetModuleHandleA(FactoryModuleName); if(FactoryModule) ret = reinterpret_cast<CreateInterfaceFn>(GetProcAddress(FactoryModule,"CreateInterface")); Sleep(10); } return ret; } void *CaptureInterface(CreateInterfaceFn Fn, char *InterfaceName) { unsigned long *ret = NULL; while(!ret) { ret = reinterpret_cast<unsigned long*>(Fn(InterfaceName,NULL)); Sleep(10); } return ret; } DWORD cEntList = *(DWORD*)CaptureInterface(CaptureFactory("client.dll"),"VClientEntityList003"); DWORD cEngine = *(DWORD*)CaptureInterface(CaptureFactory("engine.dll"),"VEngineClient013"); int GetLocalPlayer() { int ret = 0; _asm { MOV ECX, DWORD PTR DS:[cEngine] MOV EAX, DWORD PTR DS:[ECX] CALL DWORD PTR DS:[EAX+0x30] MOV ret, EAX } return ret; } CBaseEntity *GetEntityByIndex(int index) { CBaseEntity *ret = null; _asm { MOV ECX, DWORD PTR DS:[cEntList] MOV EAX, DWORD PTR DS:[ECX] PUSH index CALL DWORD PTR DS:[EAX+0xC] MOV ret, EAX } if(ret == null) return null; _asm { MOV EDX, DWORD PTR DS:[ret] MOV ECX, EAX CALL DWORD PTR DS:[EDX+0x1C] MOV ret, EAX } return ret; } CBaseEntity *GetLocalEntity() { return GetEntityByIndex(GetLocalPlayer()); } int GetMaxEntities() { int ret = 0; _asm { MOV ECX, DWORD PTR DS:[cEntList] MOV EAX, DWORD PTR DS:[ECX+0x24] MOV ret, EAX } return ret; }
Wer will, darf gern was beisteuern. Visiblechecks und so fehlen zB noch.
greetz KN4CK3R
|