|
Thema |
Forum |
Letzter Beitrag |
Beiträge |
Zugriffe |
 |
[ASM] CS: Source Bunnyhop
Erstellt am: Mi 8. Jun 2011, 16:05
supex0
Vorschau
Go To Post
CPP Code: /* Bunnyhop - in ASM Credits: SDK supex0 esi+24 = cmd->buttons p_Ent+2E4 = flags "test" wird verwendet um aus den addierten Bits einzelne herauszufiltern Zuerst wird überprüft, ob +jump ausgeführt wird, wenn ja dann ob man sich auf dem Boden befindet. Wenn dies zutrifft, wird, solange man sich auf dem Boden aufhält, +jump/-jump "gespamt", in der Regel nur höchstens 2 ticks lang, in der Luft dann "stille". */ //test aobscan(p_Ent, ?? ?? ?? ?? 0f 94 C0 C3 CC CC CC CC A1) /* label(p_Ent) client.dll+5AA488: p_Ent:*/ alloc(newmem,2048) //2kb should be enough label(returnhere) label(originalcode) label(exit) aobscan(hookscene, 8B C8 89 4E 24 8B 15) /*client.dll+E4876:*/ hookscene: jmp newmem returnhere: newmem: mov ecx,eax //ursprünglicher code, mov [esi+24],ecx //einfach ignorieren. pushall mov ecx,[p_Ent] // wir benötigen den Entitypointer um Checks durchzuführen mov ecx,[ecx] // aobscan, man muss den Pointer im Pointer nehmen! test byte ptr [esi+24],02 // Überprüfung ob +jump ausgeführt wird je originalcode test byte ptr [ecx+2E4],01 // Überprüfung, ob man sich auf dem Boden befindet jne originalcode //Immernoch hier, also ist es BHOP-Time! and [esi+24],0FFFD //~&in_jump; 0x0002, inversiert ergibt das 0xFFFD originalcode: popall exit: jmp returnhere
Einfach gehaltener, autoupdatefähiger* Bunnyhop-code für CS: Source. Falls jemand den Code für seine eigenen Zwecke verwenden möchte, die Credits nicht vergessen! Mehr dazu auf meiner Webseite: https://sites.google.com/site/left4uncut/
|
VB, C/C++, Delphi, etc |
Mi 8. Jun 2011, 17:59
von xst
|
1 |
902 |
 |
[ASM] CS: Source TraceRay Triggerbot
Erstellt am: Mi 8. Jun 2011, 16:02
supex0
Vorschau
Go To Post
CPP Code: /*ASM Triggerbot proof of concept credits: SDK P47R!CK monster64 Casual_Hacker wav supex0*/ alloc(newmem,2048) label(returnhere) label(exit) label(vStart) label(vEnd) label(p_Trace) label(mask) label(dist_max) label(vCurAngles) label(vUp) label(vRight) label(vForward) aobscan(AngleVectors, 83 EC 20 8D 4C 24 04 89 4C 24 14 8B) aobscan(TraceRay, C3 CC CC CC 55 8B EC 83 E4 F0 8B 45 0C 8B 4D 08 83 EC 6C) aobscan(p_Ent, ?? ?? ?? ?? 0f 94 C0 C3 CC CC CC CC A1) aobscan(hookscene, 8B C8 89 4E 24 8B 15) aobscan(DrawLine, 83 EC 18 8B 44 24 20 D9 00 8B 0D ) hookscene+0E: db 90 90 jmp newmem returnhere: newmem: pushall //alles absaven um abstürze zu vermeiden sub esp,1000 mov eax,[p_Ent] mov eax,[eax] cmp eax,00000000 //check ob pointer zum eigenen Entity verfügbar ist je exit cmp byte ptr [eax+8F],00 //check ob man am leben ist; "lifestate", 00 = alive, 01 = dying, 02 = dead jne exit //Check ob Mittlere Maustaste gedrückt wird push eax push 05 //Mittlere Maustaste call GetAsyncKeyState shr ax,0F cmp ax,1 pop eax jne exit lea ecx,[eax+2CC] //schreibe EyePosition in vStart fld [ecx] fstp [vStart] fld [ecx+04] fstp [vStart+04] fld [ecx+08] fadd [eax+EC] //Z-fix fstp [vStart+08] fld [eax+F20] //schreibe CurAngles in vCurAngles fadd [eax+d90] fstp [vCurAngles] fld [eax+D94] fadd [eax+F24] fstp [vCurAngles+04] fld [esi+D98] fadd [eax+F28] fstp [vCurAngles+08] push vUp push vRight push vForward push vCurAngles call AngleVectors add esp,10 fld [vForward] //vEnd = vForward * 8192.0f + vStart fmul [dist_max] fadd [vStart] fstp [vEnd] fld [vForward+4] fmul [dist_max] fadd [vStart+4] fstp [vEnd+4] fld [vForward+8] fmul [dist_max] fadd [vStart+8] fstp [vEnd+8] push [p_Ent] push p_Trace push 08 push 00000000 push [mask] push vEnd push vStart call TraceRay+4 add esp,1C //Traceray //Debug-Line! push (float)1 push 01 push 00 push 00 push 000000ff lea ecx,[p_Trace+0C] push ecx push p_Trace call DrawLine add esp,1C mov ecx,[p_Trace+4C] //Entitypointer in ECX speichern mov eax,[p_Ent] mov eax,[eax] //aobscan pointer in pointer! mov edx,[eax+98] cmp edx,[ecx+98] //Teamcheck je exit cmp [ecx+90],00 //HP-Check je exit cmp [p_Trace+50],00 //hitbox-check je exit //immernoch hier, also soll geschossen werden or [esi+24],01 exit: add esp,1000 popall fldz fcom dword ptr [esi+18] jmp returnhere vCurAngles: db 11 22 33 44 00 00 00 00 00 00 00 00 vStart: db 00 00 00 00 00 00 00 00 00 00 00 00 vEnd: db 00 00 00 00 00 00 00 00 00 00 00 00 vUp: db 00 00 00 00 00 00 00 00 00 00 00 00 vRight: db 00 00 00 00 00 00 00 00 00 00 00 00 vForward: db 00 00 00 00 00 00 00 00 00 00 00 00 dist_max: db 00 00 00 46 //float 8192 mask: db 01 00 01 46 p_Trace: db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00
Simpler TraceRay-Triggerbot geschrieben in ASM. Falls jemand den Code für seine eigenen Zwecke verwenden möchte, die Credits nicht vergessen! Mehr infos auf meiner Webseite: https://sites.google.com/site/left4uncut/
|
VB, C/C++, Delphi, etc |
Mi 8. Jun 2011, 16:02
von supex0
|
0 |
467 |
 |
[CS:S] VisibleCheck ohne SDK
Erstellt am: Mi 1. Jun 2011, 17:49
0x6077
Vorschau
Go To Post
Reversen. TEXT Code: PUSH 0x4600400B (oder auch) PUSH 0x4602400B
such danach in der client.dll (verwendet wird ein pointer zu Traceray, da TraceRay in der engine.dll ist). Halte ausschau nach ähnlicher Strukturierung wie in deinem obigen Beispiel ("mov ecx,ptr\nmov eax,dword[ecx]") - Kleiner Tipp um ganz sicher zu gehen: ist "+ 0x10" hinter dem "pointerhandling", ist es mit sehr sehr hoher wahrscheinlichkeit die gewünschte stelle die du brauchst. Waffencheck mach ich so: TEXT Code: MOV EAX, pBaseCombatWeapon CALL DWORD PTR DS:[EAX+0x584] MOV iWeaponID, EAX
0x584 ist die aktuelle Adresse. 2 Möglichkeiten bleiben dir: Entweder du suchst per Hand durch den vftable-wirrwarr von pBaseCombatWeapon, beginnend von Hinten nach vorne (wichtig! die Adresse ist weiter hinten, "fast" die letzte quasi - die Funktion ist einfach nur ein "mov eax,000000XX\nret", bei jeder Waffe), oder du legst dir schnell 'nen Patternscan an.
|
VB, C/C++, Delphi, etc |
Mi 8. Jun 2011, 16:00
von supex0
|
3 |
1007 |