ASM TriggerBot von supex0

Bimbo

New Member
2 Jul 2013
15
0
#1
Hallo high-minded,

Hab mir gerade nochmals den TriggerBot von supex0 zu Gemüte geführt und versuche diesen wieder zum Laufen zu bekommen bzw. anhand dieser Vorlage meinen "eigenen" zu programmieren.

PHP:
/*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
TraceRay, Entity und geeignete Stelle für die CodeInjection habe ich bereits gefunden. Wie ich die AngleVectors Funktion allerdings lokalisieren könnte, ist mir fraglich. Hat eventuell jemand von euch Ideen?

Vielen Dank schon mal

liebe Grüße
 
Last edited:

Bimbo

New Member
2 Jul 2013
15
0
#2
#Push

Weiß jemand auf welches Modul ich die Suche begrenzen kann? Immer alle nach einer bestimmten Byte-Abfolge zu durchsuchen ist langwierig und irreführend.
 

Arctosa

Advanced Member
16 Aug 2011
1,698
1,038
#3
Das Ding ist von supex0 welcher auch hier im Forum aktiv ist. Er hat den src pub gemacht und wird sich sicher freuen wenn Leute damit arbteiten. Also schick ihm doch einfach eine PN?
 
Likes: KopfSpucker

Bimbo

New Member
2 Jul 2013
15
0
#4
Habe supex0 hier auf high-minded schon kontaktiert, allerdings mit weniger Erfolg sprich keiner Rückmeldung von ihm - leider.
 

l0wD

Active Member
12 Dec 2013
105
154
#5
Ich bin mir nicht sicher das supex0 damit einverstanden war das du hier seinen Source postest. Daher bitte ich darum den Code vorerst zu entfernen. Werde ihn morgen darauf aufmerksam machen.

LG
 

xeltic

I BIN DA BRÄSIDENT
24 Jun 2012
7,965
6,056
#7
14 May 2013
2,064
3,363
#8
im gegenteil,das haben ja public sources so an sich das sie genutzt werden sollen wa
 

Bimbo

New Member
2 Jul 2013
15
0
#10
Kurze Rückmeldung meinerseits: AngleVectors Funktion kann bei ClientModeShared::OverrideView( CViewSetup* ) gefunden werden. AngleVectors: client.dll+268840

Warum ich nicht schon früher im SDK nachgeschaut hab, weiß ich auch nicht^^

Werde morgen oder nachher eventuell noch versuchen das ganze richtig umzusetzen und melde mich dann nochmal zurück.

Liebe Grüße
 
Last edited:

Bimbo

New Member
2 Jul 2013
15
0
#11
So, TriggerBot läuft eigentlich. Leider kommt es immer wieder zu dem gleichen Problem. folgendes:

Ich befinde mich auf dem localserver in der ersten Runde, zusammen mit 3 Bots. Der TriggerBot funktioniert ohne Probleme. In der nächsten Runde liefert [p_Trace+50] allerdings keinen validen entity, ergo schießt der TriggerBot auch nicht.
Wenn ich den Server neustarte, funktioniert der TriggerBot wieder - allerdings auch nur in der ersten Runde.

Es findet einfach keine collision mehr mit einem Spieler statt, mit den Wänden dahintern schon -.-

Ich bin am verzweifeln ^^

jemand ideen?
 
Last edited: