| Autor |
Beitrag |
thebe
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: Mo 17.03.03 20:01
Halli Hallo
Ich bin gerade dabei für ein Internetspiel ein Anti-Cheat/Hack-Tool zu schreiben, was den Client des Internetspiels mittels Eingriffe in den Process es überhaupt erst ermöglicht auf den Server zu verbinden.
Während dann das Tool im Hintergrund läuft, soll es auf Programme wie Cheat-Tools und Speicher-Editier Programme ( RAM-Editor in WinHex z.b. / TSearch ) reagieren. Nur leider kann man immo das Programm noch einfach per Taskbar - Prozess Beenden killen.
Wie kann man eigene/fremde Prozesse vor dem Killen schützen und wie kann man es villeicht sogar noch vermeiden, daß fremde Programme wie WinHex auf dem Speicher des Internet Clients zugreifen können ?
Schon mal vielen Dank für etwaige Hilfe
-Thebe
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 17.03.03 20:09
Unter NT-basierenden Systemen würde ich einen Service schreiben. Unter Win9x kannst du ja Strg+Alt+Entf deaktivieren.
|
|
thebe 
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: Mo 17.03.03 20:47
Gibt es sonst keine anderen Möglichkeiten ?
Oder gibt es vielleicht die Möglichkeit auf nen OpenProcess zu reagieren, sodaß man noch vorzeitig den Client selbst abwürgen kann ?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 17.03.03 20:51
Mir fällt nichts besseres ein im Moment - ohne irgendwelche krampfhaften Klimmzüge und Verrenkungen zu machen.
Allerdings, wenn der Typ als Admin spilet, kann er den Service auch abschalten, das ist aber klar oder?
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 17.03.03 20:56
Hängen sich solche Tools normalerweise nicht in das Spiel rein, sodass sie mitgeladen werden und innerhalb des Prozesses laufen? Solltest mal schauen, ob Du bei dem entsprechenden Spiel sowas findest.
Gruß
|
|
thebe 
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: Mo 17.03.03 20:59
sprich
Windows 9X: STRG+ALT+ENTF verhindern
Windows NT: Windows Taskmanager verhindern (bzw. auf das öffnen reagieren)
Naja gut, das erstere is ja nit sooo das Problem, das zweitere kann man auch hinkriegen wenn alle 0.25 Sekunden nach dem Taskmanager gesucht wird. Für den Otto-Normal Hacker wird das reichen, aber anscheinend werden Leute die mit extra Prozess-Viewern rumhantieren dann leichte Spiel haben. Was solls, besser als nichts..
[Edit]
@ Grohne: Das is ne sehr gute Idee. Wie das Tool sich innen Client reinhaut und dort weiterausgeführt wird weiß ich nit, aber gibts nit die Möglichkeit dem Client per CreateProcess die gleiche ProcessID zu übergeben die das Tool hat und somit auch zerschossen wird, wenn das Tool per Taskbar gekillt wird ?
[/Edit]
Danke für die Hilfe 
Zuletzt bearbeitet von thebe am Mo 17.03.03 21:06, insgesamt 1-mal bearbeitet
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 17.03.03 21:03
Nur nebenbei gemerkt. Bewi mir hätte so ein Programm, welches mir vorschjreibt was ich darf und was nicht auf meinem Rechner null Überlebenschance. Desweiteren, wie soll das überhaupt beendet werden können? Und wie willst du sichergehen, dass es auch benutzt wird?
|
|
thebe 
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: Mo 17.03.03 21:17
Der Spiel-Client verschlüsselt die Verbindung zum Server anhand von 3 Integerwerten. Ich habe die Server Software verändert und diese 3 Integerwerte mit anderen Werten überschrieben. Somit muss man das Tool starten (das dann wiederum den Client startet per Createprocess) damit das einem die neuen Integerwerte in den Speicher schreibt. Hexeditieren der Exe wäre nachvollziehbar ohne das das Tool im Hintergrund läuft.
Aber da das Tool im Hintergrund läuft, kann es im 0.25 Sekunden Takt auf Cheat-Tools und Speicherauslesenden Programmen a la WinHex reagieren indem es brutal den Spielclient zerschießt. Somit kann niemand an die 3 Integerwerte im Speicher ran. Damit ich sichergehen kann, daß mein Tool dann auch reagiert (und nit vorher selbst brutal zerschossen wurde) muss ich nen TerminateProcess seitens eines anderen Programms oder Windows verhindern. Windows kann ich ja mit den oben genannten Möglichkeiten umgehen, aber wie sieht das mit anderen Programmen aus ? Nen erfahrener "Hacker" könnte sich nen Prog basteln / ProcessLister bneutzen und dann den Tool-Prozess zerschießen und dann die Integer-Werte rauskriegen.
Bleibt jetzt nur noch die Frage, wie ich auf nen OpenProcess/TerminateProcess reagieren könnte oder aber wie ich den Process des Client mit dem Process des Tools verknüpf, damit niemand das Tool zerhauen kann ohne den Client auch zu zerhauen.
[Edit] Nebenbei gesagt hab ich weder für die Spiel-Software noch für die Server-Software den Source Code und kann somit keine Anti-Cheat Sachen dort einbauen  [/Edit]
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 17.03.03 21:28
Ok du schließt die TM, in dem du alle 0.25 Sekunden kuckst, ob er da ist. Und was machst du mit Programmen, wie meinem (SysInfo auf meiner Seite)?
|
|
thebe 
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: Mo 17.03.03 21:34
Genau das weiß ich nit
Man müßte dafür den Prozess des Tool blocken bzw. auf das Öffnen des Prozesses reagieren können. Ob das möglich is und wie, DAS ist hier die Frage 
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mo 17.01.05 11:14
thebe hatte die Idee das Programm vorm Taskmanager zu nehmen, ist doch eigentlich kein Problem mit
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| function RegisterServiceProcess(dwProcessID, dwType: DWord): DWord;stdcall;
function RegisterServiceProcess; external 'KERNEL32.DLL' name 'RegisterServiceProcess'; RegisterServiceProcess(0,1); RegisterServiceProcess(0,0); |
(Dieser Quelltext ist unter dem Thema "Prozess komplett in Windows verbergen")
Habe ihn aber noch nicht ausprobiert.
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 17.01.05 11:41
Ich würd's über nen API-Hook auf die PSAPI machen und dort die TerminateProcess hooken. Weiterhin würd ich die VirtualProtect und OpenProcess hooken und auf bestimmte ThreadIDs und ProcessIDs reagieren, indem ein SetLastError(5) ausgeführt wird (Zugriff verweigert). Außerdem empfielt sich ein Hook auf LoadLibrary, um das Laden von fremden DLLs in den Prozessspeicher zu verhindern.
Task-Manager blocken ist zwar für Normal-Daus möglich, aber selbstgeproggte Tool können dann immernoch den Prozess abschießen.
Außerdem gibt es unter NT einige Services (Ereignisprotokoll, TrueVector Monitor der ZoneAlarm), die man selbst als Admin nicht beendet kriegt (ohne Sie komplett zu deaktivieren). Wie dies im Speziellen funzt, weis ich net.
Aber so gesehen, kommst du zumindest um mindestens eine DLL und einen Service nicht drum rum, da Windows ja leider keine globalen Hooks ohne DLL unterstützt.
@Assarbad und andere API-Kenner: Wie war das denn mit CreateRemoteThread? HTOKEN intern erzeugt, oder musste man den über OpenProcess holen?
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 17.01.05 13:17
| Heiko hat folgendes geschrieben: | thebe hatte die Idee das Programm vorm Taskmanager zu nehmen, ist doch eigentlich kein Problem mit
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| function RegisterServiceProcess(dwProcessID, dwType: DWord): DWord;stdcall;
function RegisterServiceProcess; external 'KERNEL32.DLL' name 'RegisterServiceProcess'; RegisterServiceProcess(0,1); RegisterServiceProcess(0,0); |
(Dieser Quelltext ist unter dem Thema "Prozess komplett in Windows verbergen")
Habe ihn aber noch nicht ausprobiert. |
Solltest du aber mal, vor allem unter deinem Windows XP Home.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 17.01.05 13:51
Du meinst, er sollte sich mal die Schönheit der Programm-Loader-Exception angucken???
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mo 17.01.05 14:20
| Luckie hat folgendes geschrieben: | | Solltest du aber mal, vor allem unter deinem Windows XP Home. |
Warum gerade unter Win XP Home?
Unter Home kann ich es gerade nicht ausprobieren, da ich in der Schule an einem Win XP Prof - Rechner sitzte.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 17.01.05 14:24
Egal. Es muss nur ein NT basierendes System sein.
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Mo 17.01.05 21:03
Ums mal zusammenzufassen: Wenn es eine Möglichkeit gäbe, was denkst du warum Viren à la Blaster, Sassa usw. dann im Taskmgr auftauchen und damit auch zu beenden sind.
Es ist wohl unter NT nicht mehr möglich das Programm zu verstecken, bzw. unabschießbar zu machen.
Hinzukommt, dass es ein Kinderspiel ist, dein Programm so zu manipulieren, dass es von alleine einen AE produziert (man nehme TSearch und pfusche munter und ziellos im Speicher rum und schon wars dat...)
Wenn du sowas realisieren willst, dann musst du es angehen wie Cheating Death. Sprich, der Server muss überprüfen ob das Programm läuft, und nur dann das okay geben.
Alle anderen Arten können nur als Placebo für Leute dienen, die sich wenig mit PC's auskennen.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 18.01.05 00:15
@Karlson: Dem widersprech ich, da ich mit meinem Post gezeigt hab, dass man gerade wegen den NT-Systemen (und den globalen Hooks die damit möglich sind) sein Programm ohne Weiteres schützen kann (Wenn man einmal funzenden Src für API-Hooks hat, dann ist das keine Hürde, den für weitere Funktionen zu erweitern).
Ansonsten wöllte ich gern mal sehen, wie du mit TSearch im Prozessspeicher meines Prozesses experimentieren willst, wenn Du kein Handle für diesen bekommst, geschweige denn WriteProcessMemory ausführen kannst, weil ein VirtualProtect (wegen dem API-Hook) immer nen GetLastError 5 zurückliefert.
Genauso wie man mit ein wenig Ahnung Windows ein neues Pfad-Verhalten für die Laufwerke AA: bis WC: beibringen kann, kann man dies auch als Erweiterung für die Speicherzugriffsfunktionen, um seinen eigenen Prozess zu schützen.
Und wie gesagt: Den TrueVector Monitor der ZoneAlarm Firewall kriegt man selbst als Admin nur nach nem Neustart deaktiviert, nicht jedoch beendet. D.h. wenn man seinen Service wirklich gut schreibt, setzt man kurz vor dem Beenden einfach den Starttyp auf Automatisch, schon ist selbst mit Deaktivieren nix mehr...
Implementationszeit: Mit Lust und genügend Freiraum sicherlich <1 Tag ... (Nur hab ich weder z.Zt. Lust, noch den Freiraum um diese Implementation umzusetzen, obwohl das sicherlich interessant wäre in Action zu sehen).
BTW: Ähnliche Mechanismen sollte man selbst mit Win9x implementiert bekommen, jedoch wird man dort einige Probleme bei der Aufrechterhaltung des Schutzes haben.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Di 18.01.05 09:38
Das Programm nur Anwendung zu verstecken kann man auch so realisieren:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var owner: THandle;
owner:=GetWindow(handle, GW_OWNER); ShowWindow(owner, SW_HIDE); self.Hide |
PS: Dieser Quelltext stammt aus dem "Delphi 6 Kochbuch" (unter Win 95 funktioniert dieser auch, und so weit ich mich erinnern kann auch unter XP)
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Di 18.01.05 11:54
| Karlson hat folgendes geschrieben: | | Wenn du sowas realisieren willst, dann musst du es angehen wie Cheating Death. Sprich, der Server muss überprüfen ob das Programm läuft, und nur dann das okay geben. |
naja CD an sich ist ja nicht so schlecht aber selbst dafür kann amn cheats/ hacks schreiben siehe CDD
CD hatte auch nen professionellen execryptor mit anti debug funktion dirn und ich habe es innerhalb von einer stunde removed
-> www.strongbit.com/execryptor.asp
|
|