This isn't anything special, but since there always seems to be alot of drama going on when there has been an update, I figured I'll post some code here and simple instructions on how to find it. If you will be using Olly, you need the SigMaker plugin, by p47r!ck: Sig Maker 0.4
This tracefilter(CTraceFilterSkipTwoEntities) which is used in peoples tracing code, can be found alot of places, but my preferred location is inside the CSPlayer::FireBullet function, which contains a neat little string which we can follow: "gunshotsplash".
The call to CTraceFilterSkipTwoEntities's constructor is almost at the top of the function and should look something like this(raw copy paste from Olly):
54227F7C 6A 00 PUSH 0 54227F7E 57 PUSH EDI 54227F7F 56 PUSH ESI 54227F80 8D8D 9CFDFFFF LEA ECX,DWORD PTR SS:[EBP-264] 54227F86 E8 E54BFCFF CALL client.541ECB70Just follow that call and make a signature/get the relative offset for it. Please note that this is achievable in IDA aswell, but Olly is my preferred tool.
void Aimbot::GetTraceFilterSkipTwoEntities( CSPlayer *first, CSPlayer *second, DWORD* thisptr ) { typedef void ( __thiscall *TraceFilterSkipTwoEntities_t )( void *thisptr, const CSPlayer *first, const CSPlayer *second, int group ); static TraceFilterSkipTwoEntities_t traceFilterskiptwoentities = (TraceFilterSkipTwoEntities_t)memory::FindPattern( GetModuleHandle( "client.dll" ), "\x55\x8B\xEC\x8B\x55\x10\x8B\xC1\x8B\x4D\x08\x89\x48\x04\x8B\x4D\x0C\x89\x50\x08\xC7\x40" ); if ( !traceFilterskiptwoentities ) { LOG_ERROR( "TraceFilterSkipTwoEntities not found" ); } traceFilterskiptwoentities( thisptr, first, second, 0 ); }ex. usage:
DWORD traceFilter[5]; // 20 or 0x14 bytes GetTraceFilterSkipTwoEntities( m_localPlayer, skipPlayer, traceFilter ); TraceRay( ray, 0x4600400B, (ITraceFilter*)&traceFilter, &traceData );
Ingen kommentarer:
Send en kommentar