[TUT] CSS Extern Radar + bunnyhop | #1 | |
Join Date: Mar 2011 Posts: 978 User-Rating: 89 positive
6 negative
|
*Achtung: wall of text incoming* Hallo erstmal, Ziele dieses tuts: - Externer Radarhack - Externer Bunnyhop 100% hit. Anforderungen: -C++ oder sonstige programmiersprache mit der man speicher von anderen prozessen auslesen kann und ein radar grafisch darstellen kann. (die code snippets von mir sind in c/c++) -Umgang mit cheatengine o.ä. (finden von pointern) -CS:S sollte man besitzen... -kein copy paste, ich werde hier nur das prinzip erklären, ihr werdet fast alles selber machen müssen! -das hier ist ein tut, fragt nicht nach download oder sonstwas. 1.: Radarhack: 1.1: Was soll das radar können? *spieler auf externem fenster darstellen. *hp und namen anzeigen. *anzeigen ob der gegner über oder unter einem ist. *sichtrichtung aller spieler anzeigen. *möglichkeit zur vollen rotation geben, also, dass sich die map zur sichtrichtung ausrichtet 2.Was brauchen wir? *fenster zum ausgeben des radars. *koordinaten aller spieler. *hp und namen aller spieler. *sichtrichtung aller spieler. 3.Wie finden wir das alles? freundlicherweise hat css ein playerstructarray, in dem alle erforderlichen informationen abgespeichert sind. wie finden wir das array? Jetzt beginnt auch schon der Punkt, an dem ihr anfangen dürft zu arbeiten^^ aber ein paar tipps: -Das Array besteht aus 32 solcher playerstructs. -jede struct ist 0x140 groß. -die erste playerstruct beginnt bei client.dll+0x?????? -> 0x?????? == BaseAdress + 0x144, also 2 pointer führen zur baseadress. -die offsets sind wie folgt: TEXT Code:
Wie findet man diese offsets? mit dem wissen, dass es so ein playerstructarray geben muss irgendwo, lässt sich das ganze ziemlich einfach filtern. sucht zuerst nach dem eigenen namen, öffnet die adressen dann im memviewer, wenn ihr die namen der anderen spieler in direkter nähe seht, ist das ein gutes zeichen. dann nach eurem leben scannen, dmg kriegen -> weitersuchen usw..., dann bei den gefundenen adressen ausschau nach adressen halten, die auch in der nähe von eurem namen sind. dann die funktionen anschauen, die auf die vars zugreifen, den/die pointer darauf reversen = base. Adresse - Base = offset. Done. dann noch allgemein gucken, was denn so in eurem struct passiert, wenn ihr nichts macht, oder euch was richtung norden bewegt, und raten, was was ist^^ z.b. speichert der anscheinend noch ne kleine history von den letzten paar x&y koordinaten, anscheinend für diese footsteps für den normalen radar. die könnte man theoretisch auch noch einbauen... ich hab am anfang versehentlich so einen history offset für die koordinaten genommen (mit meinem glück natürlich den letzten ) und mich gewundert, wieso mein radar nen ~3 sekunden delay hatte, aber mein yaw aktuell war^^ nochn kleiner tip beim suchen von adressen. ihr solltet immer wenn ihr nach adressen sucht euch einen dedicated server ohne vac aufsetzen und dann dadrauf joinen. Wenn ihr ein spiel über "spiel erstellen" startet, ist die hl2.exe nämlich zugleich server, als auch client, und dann könnt ihr beim suchen über adressen stolpern, die normalerweise nur dem server zur verfügung stehen. wie lesen wir das ganze nun aus? dazu erstellen wir erstmal ein kongruentes eigenes playerstructarray: CPP Code:
dann das ganze auslesen: CPP Code:
Das ganze ist extrem unperfomant und lässt sich deutlich optimieren indem man das ganze array auf einmal ausliest dann haben wir schonmal alle relevanten daten in unserer struct. 4. Wie bringen wir das jetzt auf unser fenster? z.b. so in c++: http://www.virtual-maxim.de/tilemap-1/ mit den beiden klassen von dort lässt sich schnell was in nen fenster zeichnen. Frisch hat uns hier noch eine funktion zum zeichnen von text in d3d9 bereitgestellt (danke!): CPP Code:
vorher noch einmalig den font erstellen: CPP Code:
was die parameter bedeuten verrät uns die msdn: http://msdn.microsoft.com/en-us/library/windows/desktop/bb172773%28v=vs.85%29.aspx ich kann ebenfalls GDI+ empfehlen, ist vllt sogar etwas einfacher. http://www.codeproject.com/KB/GDI-plus/startinggdiplus.aspx koordinaten berechnen: wie rechnen wir nun die css koordinaten in koordinaten für unser radar um? z.b. so für ein 400x400 fenster: CPP Code:
ok, nice, aber woher krieg ich den urspungsspieler, also bestenfalls mich, also den focusindex zu dem ich die relativen koordinaten berechne? spielername des focusses ist in client.dll+0x?????? abgespeichert. allerdings kann man da auch pfuschen und einfach den namen vergleichen... also: CPP Code: allerdings gilt dabei aufzupassen, dass ihr nicht euch selber noch in den kaputten structs findet... also nur den zuerst gefundenen namen nehmen - danach breaken, oder wenn ihr alles in einer schleife macht ne kontrollvariable setzen. damit können wir uns nun namen, hp, team und das auch noch an der richtigen stelle ausgeben lassen! vergesst nicht zu prüfen, ob das ganze sich überhaupt noch in eurem fenster befindet... CPP Code:
mapplayers.x/y?????????? ich hab mir die umgerechneten koordinaten nochmal in ner extra struct abgespeichert, darauf kann man auch verzichten, und direkt die umgerechneten koordinaten eintragen. CPP Code:
über/unter einem ausgeben: CPP Code:
Entfernung ausgeben: (Thanks to Frisch) CPP Code:
5. Yaws anzeigen lassen. wie geben wir die sichtrichtung aus? die yaw bewegt sich zwischen -180 - +180. was wohin zeigt, dürft ihr selbst herausfinden^^ wofür sind pitch und roll? theoretisch sind darin die pitch: sicht nach oben/unten (-89 - +89), und die roll - neigung, wobei ich mir nicht die mühe gemacht habe roll zu überprüfen... wofür man das brauchen könnte, ka^^ 6. wie lassen wir die map zur sichtrichtung rotieren? dafür sind einige kleiner codeänderungen nötig, hier das prinzip: -spielermapcoords berechnen (schon getan) -relation zum ursprung herstellen. -die koordinaten entsprechend dem yaw des focusplayers ausrichten. formel zur koordinatenberechnung: TEXT Code:
in cpp könnte das dann so aussehen: CPP Code:
jetzt müssen wir noch die yaws der spieler anpassen, das geht einfach: CPP Code:
das sollte es im großen und ganzen gewesen sein, ein paar kleinere sachen könnten noch anfallen, aber nichts, was nicht zu lösen wäre^^ 7. Wie sieht das ganze dann aus? z.b. so: oder so: Remarks: -yaw ist auch ein bisschen tricky, aber geht. -css muss im fenstermodus gespielt werden um das overlay zu haben. wenn ihr wie ich 2 monitore habt und das radar auf dem 2. habt könnt ihr auch vollbild spielen solange ihr zum anzeigen des radars gdi+ benutzt. -css kann im fenstermodus ohne rand mit den startparametern '-windowed -noborder' gespielt werden. die kann man z.b. in der steam bibliothek einstellen -EDIT: achja nochwas. css räumt den speicher NICHT auf wenn ihr vom server runtergeht/raufjoint, die kaputten spielerstructs müsst ihr also selber rausfiltern, wenn auf dem nächsten server weniger spieler sind. (tipp: x,y und hp auf != 0 testen) todo?: was man jetzt noch machen könnte, wären folgende sachen: -nicht externes fenster -> overlay -das ganze 3dimensional umsetzen -> esp -filter -> nur gegnerisches team, etc... -maphintergrundradarbild laden. Bunnyhop: das geht ganz einfach, gibt ne statische adresse, client.dll + 0x??????. die auslesen und dann noch einen konstanten offset rauf und man hat seine auslese adresse. BYTE inair != 255 wenn auf boden. achtung die adresse ändert sich seit dem 13.10.11 update, wenn man vom server runter/wieder raufgeht also muss man permanent die adress auslesung machen. zum senden der leertaste: http://msdn.microsoft.com/de-de/library/ms932719.aspx http://msdn.microsoft.com/de-de/library/aa453247.aspx z.b. sieht das dann so aus für die alt taste: CPP Code:
Credits: KN4CK3R (für die tolle Seite hier: https://www.oldschoolhack.me/) sMp (externer triggerbot tut: https://www.oldschoolhack.me/forum/tutorials/6198,css-externer-triggerbot.html) GameDeception (an die muss man einfach credits geben: http://www.gamedeception.net/) SilverDeath (guess what) bei fragen, einfach hier schreiben... bitte keine requests^^ Mfg SilverDeath PS:tut darf gerne kopiert werden, aber bitte link auf den original artikel hier auf osh, und mir volle credits geben. wäre auch nett, wenn derjenige den link dann einmal hier postet, damit ich auch in dem anderen forum auf fragen eingehen kann. (Letzte Aktualisierung: 16.10.2012 21:40) Paar Noobcopypastefallen entfernt weil mir die leute dann im irc auf den geist gingen... __________________ Vids: Only registered and activated users can see links. Only registered and activated users can see links. Only registered and activated users can see links. Only registered and activated users can see links. Only registered and activated users can see links. Only registered and activated users can see links. Only registered and activated users can see links. Quote from xst Vater KN4CK3R, der du hängst im irc, geheiligt werde dein Botnet, dein P7 v1.337 komme, die Bannwelle geschehe, wie in CS:S als auch in CS:GO, führe uns nicht in Versuchung, sondern erlöse uns von all dem c+p-Shit. Quote from f4gsh0t_h4x VAC ist an,immer,überall Quote from gibson.w Ich mag braune Würstchen Quote from irc <SilverDeath> KN4CK3R bistn nub <~KN4CK3R> kk Quote from irc <OrkSchamane> das prob is das viele dieser eig. recht guten bücher englisch sind ... <OrkSchamane> da habe ich's ja doppelt schwer <~KN4CK3R> falsch <~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können Quote from irc <SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann! <Dr_Pepper> danke. <SilverDeath> bitte Quote from irc <~KN4CK3R> dann liegts wenigstens an mir <~KN4CK3R> nur noch rausfinden warum -.- <SilverDeath> ja sicher <SilverDeath> an wem sonst? * You were kicked by KN4CK3R (kick) Quote from Dr_Pepper ihr seit beide dumm Releases: Gifs: |
|
SilverFire is offline |
Only registered and activated users can see links.
Only registered and activated users can see links.
Only registered and activated users can see links.
Only registered and activated users can see links.
Only registered and activated users can see links.
Only registered and activated users can see links.
<~KN4CK3R> kk
<OrkSchamane> da habe ich's ja doppelt schwer
<~KN4CK3R> falsch
<~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können
<Dr_Pepper> danke.
<SilverDeath> bitte
<~KN4CK3R> nur noch rausfinden warum -.-
<SilverDeath> ja sicher
<SilverDeath> an wem sonst?
* You were kicked by KN4CK3R (kick)