AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Process_Terminate funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Process_Terminate funktioniert nicht

Ein Thema von speedy · begonnen am 14. Nov 2010 · letzter Beitrag vom 30. Nov 2010
Antwort Antwort
Seite 1 von 11  1 23     Letzte »    
speedy

Registriert seit: 19. Sep 2003
55 Beiträge
 
Delphi XE5 Professional
 
#1

Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 21:51
Hi,

ich benutze den Code aus diesem Beitrag > Klick < um einen bestimmten Prozess (ein Spiel) abzuschießen.

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
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 22:14
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.
Und kannst du mal mit dem Process Explorer gucken welche Zugriffsrechte gesetzt sind und wie (bei dem abzuschiessenden Prozeß).

Diverse Programme setzen auch Hooks, was hier u.U. auch ein Problem sein könnte. Die Namen der Prozesse könnten also helfen
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 22:38
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:
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;
MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
speedy

Registriert seit: 19. Sep 2003
55 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 22:48
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.

Geändert von speedy (14. Nov 2010 um 22:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 22:58
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.
Dann ist die Wahrscheinlichkeit groß, daß genau das das Problem ist.

Versuch mal den Code von Aphton. Aber sei gewarnt, ab Vista (mit ASLR) wird das nicht mehr funzen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
speedy

Registriert seit: 19. Sep 2003
55 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 23:04
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!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Process_Terminate funktioniert nicht

  Alt 14. Nov 2010, 23:32
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Process_Terminate funktioniert nicht

  Alt 15. Nov 2010, 04:09
Warum hat er Administratorrechte?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Process_Terminate funktioniert nicht

  Alt 15. Nov 2010, 08:05
begin
 if ProcessExists(cMetin2Exe) and GamingLimitReached then
  Run('SuperFastShutdown.exe');
end;
  Mit Zitat antworten Zitat
speedy

Registriert seit: 19. Sep 2003
55 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Process_Terminate funktioniert nicht

  Alt 15. Nov 2010, 08:40
@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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 11  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz