![]() |
Process_Terminate funktioniert nicht
Hi,
ich benutze den Code aus diesem Beitrag ![]() Auf dem Rechner (WinXP Pro), auf dem das Programm dann eingesetzt werden soll funktioniert das nur nicht. Die ProcessID für den Prozess kann ohne Probleme ausgelesen werden, nur beim anschließenden Process_Terminate tut sich überhaupt nichts. Das Programm, sowie der abzuschießende Prozess laufen beide als Admin (also kein Systemprozess). Beenden über den Taskmanager funktioniert. Hab das Programm mit dem gleichen Spiel auf meinem Rechner (Win7 Pro x64 - Admin-Rechte) ausprobiert, dort funktioniert das einwandfrei. Auch auf einem anderen XP Rechner funktioniert es. Hat irgendjemand eine Idee warum der Code (und vor allem warum auf genau diesem bestimmten Rechner) nicht läuft? Danke! Schöne Grüße speedy |
AW: Process_Terminate funktioniert nicht
Zitat:
Diverse Programme setzen auch Hooks, was hier u.U. auch ein Problem sein könnte. Die Namen der Prozesse könnten also helfen ;) |
AW: Process_Terminate funktioniert nicht
Probier mal folgenden Code aus und sag mir, obs damit auch nicht klappt. Ist nur auf die Schnelle dahingetippt - darfste gerne Kleinigkeiten (Denkfehler) ausbessern...
Delphi-Quellcode:
MfG
procedure KillProcess2(const dwProcID, dwTimeOut: DWORD);
var hProcess, Size, WrittenBytes, TID, hThread, ExitCode: DWord; Memory: Pointer; procedure _injectedCode_ExitProcess(P: Pointer); stdcall; type TExitProcess = procedure(uExitCode: UINT); stdcall; begin TExitProcess(P)(0); end; procedure _injectedCode_End(); asm ret end; begin hProcess := OpenProcess( GENERIC_WRITE, False, dwProcID ); if hProcess <> ERROR then try Size := DWord( @_injectedCode_End ) - DWord( @_injectedCode_ExitProcess ); Memory := VirtualAllocEx( hProcess, NIL, Size, MEM_COMMIT, PAGE_EXECUTE_READWRITE ); if Assigned( Memory ) then try WriteProcessMemory( hProcess, Memory, @_injectedCode_ExitProcess, Size, WrittenBytes ); if WrittenBytes = Size then begin hThread := CreateRemoteThread( hProcess, NIL, 0, Memory, GetProcAddress( GetModuleHandle( 'kernel32.dll' ), 'ExitProcess' ), 0, TID ); if hThread <> ERROR then WaitForSingleObject( hThread, dwTimeOut ); end; finally VirtualFreeEx( hProcess, Memory, Size, MEM_DECOMMIT ); end; finally CloseHandle( hProcess ); end; end; |
AW: Process_Terminate funktioniert nicht
Kenn mich jetzt mit dem Process Explorer nicht so wirklich aus.
Das Spiel das abgeschossen werden soll ist Metin2 (kostenloses MMORPG, so ähnlich wie World of Warcraft) mit den Prozessen "metin2.bin" und "metin2client.bin". Das Spiel benutzt einen Schutz der sich "Hackshield" nennt. Beim Untersuchen mittels Process Explorer (auf dem Win7 Rechner) hat sich das Spiel nach kurzer Zeit mit der Meldung "DETECT_GAME_HACK Undefined hacks (0x20000006)" geschlossen. An den entsprechenden XP Rechner komm ich gerade nicht ran. Zum Hintergrund: Das Ziel ist ein Programm, dass den Betrieb dieses Spiels verhindert bzw. das Spiel in regelmäßigen Abständen per Timer beendet. Das Programm ist für eine Freundin deren Sohn (12) massiv süchtig nach dem Spiel ist und sie keine Kontrolle mehr hat. Das geht soweit, dass der teilweise locker 12 Std. am Tag zockt, nichts mehr für die Schule tut und sich sogar mitten in der Nacht nen Wecker stellt um noch ein paar Stunden spielen zu können (wenn die Eltern im Bett sind). PC wegnehmen geht auch nicht, weil er den auch für die Schule braucht. Spiel löschen hilft auch nichts, dann wirds halt neu installiert... Ne andere Möglichkeit als das Spiel regelmäßig abzuschießen sehen wir da leider nicht mehr. Nach was genau soll ich denn schauen im Process Explorer? Glaube aber nicht, dass das Spiel irgendwelche Hooks setzt, da es auf jedem Rechner wo ich das Tool ausprobiert hab funktioniert. Nur auf dem einen XP Rechner eben nicht. |
AW: Process_Terminate funktioniert nicht
Zitat:
Versuch mal den Code von Aphton. Aber sei gewarnt, ab Vista (mit ASLR) wird das nicht mehr funzen. |
AW: Process_Terminate funktioniert nicht
Also unter Win7 tut sich mit dem Code überhaupt nichts. Prozess wird nicht beendet und Fehlermeldung oder sonstige Meldungen kommen auch keine.
Werd das dann mal in XP probieren und berichten. Danke erstmal! |
AW: Process_Terminate funktioniert nicht
Moin Speedy,
zum einen: Vielleicht wäre es da auch mal angebracht über einen Artzbesuch nachzudenken. zum anderen: Wenn ich mich recht entsinne konnte man Windows mal mit einer Art Whitelist bzw. Blacklist vorgeben, welche Programme gestartet werden dürfen, und welche nicht. Das Ganze lief über Registryeintragungen. Wo genau weiss ich im Moment leider nicht mehr, aber vielleicht hilft's bei der Problemlösung. |
AW: Process_Terminate funktioniert nicht
Warum hat er Administratorrechte?
|
AW: Process_Terminate funktioniert nicht
|
AW: Process_Terminate funktioniert nicht
@Luckie: Windows default... Naja als der Rechner installiert wurde hat er noch nicht in dem Ausmaß gezockt und im normalen Benutzer Account läuft nicht alles
Hab mal noch schnell XP auf nen alten Rechner und den Code von Aphton ausprobiert. Es passiert nichts. Auch das normale Process_Terminate funktioniert nicht. Abschießen über ein Programm funktioniert auch nicht, wenn das Programm als System-Account gestartet wird. Komisch (für mich) allerdings, dass der normale Taskmanager das ohne Probleme beendet. Scheinbar wurde Hackshield aktualisiert, da es vor kurzem unter einem anderen XP noch ging. Im Process Explorer hab ich so jetzt nichts auffälliges feststellen können. Falls es noch was hilft - Bei "Threads" gibt es folgende Einträge: !Create Thread+0x38 !Create Thread+0x27 (ziemlich oft) !InternetSetStatusCallbackA+0x1ca ntdll.dll!RtlQueueWorkItem+0x2b5 ntdll.dll!RtlAllocateHeap+0x18c Was ich sonst noch auf die Schnelle zu Hackshield finden konnte (aus dem Forum von cheatengine.org - Beitrag von 2006): "-hackshield loads a driver to hide and protected himself. -Hackshield detects many gamehacking tools e.g.: (SoftICE,OllyDBG,CheatEngine,ArtMoney,WPE (PRO) , ...) -Cant inject dlls when hackshield is loaded(Solution: CreateProcess Suspended -> inject dll(s) -> and resume it) -CheatEngine is the only tool who can see the game process, that hackshield trys to hide, but cant open it -Hook LoadLibraryA/W and abort if hackshield trys to load dlls dont work. " Der Treiber (c:\windows\system32\drivers\eaglent.sys - Unsichtbar, wird aber scheinbar nur unter XP geladen) erinnert dabei an ein Rootkit. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz