Çalışan Programları Listelemek & Kapatmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Matrix1536
Üye
Mesajlar: 19
Kayıt: 04 Tem 2007 11:32

Çalışan Programları Listelemek & Kapatmak

Mesaj gönderen Matrix1536 »

Arkadaşlar ben uzun süredir forumu takip ediyor ancak üyelik alamıyordum..
neyseki 1 temmuz geçti ve üyelik alabildim :D



ben knight online sunucum için hile önleyici bir program yazdım.
oyunda 2 dosyayı değiştirerek hile yapılabiliniyordu.

benim programımı çalıştırdıklarında o 2 dosyayı kendi içinden çıkartıyor.
Daha sonra oyunu çalıştırıyor.Normal olarak oyuna giremiyorlar bunu da engelledim.

ancak geçen gün elime processguard diye bir program geçti.
oyuncular bu program ile exelere erişimi engelleyebiliyormuş.
yani;
onlar oyunun exe dosyasını kilitliyor.
benim programım 2 dosyayı kendi içinden çıkarttıktan sonra oyunu çalıştıramıyor.
Böylece onlar hileli dosyaları kullanarak oyuna girebiliyorlardı..

ben şöyle birşey yapmak istiyorum;

processguard programının exe adı => "procguard.exe"
eğer bu exe çalışıyorsa programı kapatsın.

bu sorunu

Kod: Tümünü seç

uses TlHelp32;


function processExists(exeFileName: string): Boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := False;
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
    begin
      Result := True;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end; 
fonksiyonu ile çözdüm.
ama millet exe ismini değiştirdiğinde yine sorun çıkarıcak program..

ne yapmamı önerirsiniz?

ve program görev yöneticisinden terminate edilirse eğer bazı sorunlar ortaya çıkıyor...
bunu nasıl engelleyebilirim/görev yöneticisinden terminate edilmeden önce bi işlem yaptırabilir miyim
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Öncelikle forumumuza hoş geldiniz.

Bu işler için Hook fonksiyonlarını kullanmanız gerekecek. Bunu en iyi en ucuz MadCodeHook ile yapabilirsiniz. Windows'un istediğniz API'sine kanca atabilirsiniz.

http://www.madshi.net/index.htm
Ticari olmayan programlar için ücretsizdir. Ticari ürünler için ücret istiyor. Kurulum yapılırken yemin ettiriyor :)

Kendi kullandığım bir örnek:

Kod: Tümünü seç


library GUARD;

uses
  .
  .
  .
  madCodeHook,
  madRemote;

var
   NtTerminateProcessNext:   function (processHandle, exitCode: dword) : dword; stdcall;
.
.
.
function NtTerminateProcessCallback(processHandle, exitCode: dword) : dword; stdcall;
const STATUS_ACCESS_DENIED = $C0000022;
begin
   //Check file yerine processhandle ile korunacak EXE handle aynı isede engelleyebilirsiniz.

  if CheckFileName(processHandle) then
     result := NtTerminateProcessNext(processHandle, exitCode)
  else
     result := STATUS_ACCESS_DENIED;
end;


begin
.
.
HookAPI(   'ntdll.dll', 'NtTerminateProcess', @NtTerminateProcessCallback, @NtTerminateProcessNext);
.
.
end;
Kolay gelsin. Umarım işinizi görür.
Matrix1536
Üye
Mesajlar: 19
Kayıt: 04 Tem 2007 11:32

Mesaj gönderen Matrix1536 »

madCodeHook ve madRemote 'un dcu dosyalarını bulamıyor.
ben eksik mi yükledim acaba?

ve ben bu componentin nasıl kullanılacağını bilmiyorum.
verdiğiniz örnek bir dll sanırım.
ama kesinlikle birşey bilmiyorum dll kullanımıyla ilgili :) :S


http://www.i-boy.net/boynet/content/view/27/113/ gibi birşey buldum.
burada hook.dll den bahsediyor ancak bunu antivirüsler trojan olarak görüyorlarmış.
Yani bunu kullanamam
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

http://www.madshi.net/index.htm adresindeki componenti indirin. İçinde örneklerde var. DLL olarak nasıl kullanılacağını enjekte edileceğini vs. gösteriyor.

Şunu indirip yüklemelisiniz.

Kod: Tümünü seç

http://madshi.net/madCollection.exe
Örnekler için bunu indirin:

Kod: Tümünü seç

http://madshi.net/MCHDemos.zip
Artık gerisi size kalsın, araştırırsanız daha iyi öğrenirsiniz.

Saygılar.
Matrix1536
Üye
Mesajlar: 19
Kayıt: 04 Tem 2007 11:32

Mesaj gönderen Matrix1536 »

indirdim ben bu programı ancak bu borland developer studio projesiymiş..
ben delphi 7 kullanıyorum. :(
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

DPR olanı yüklemeyi dener misiniz?
teknologix
Üye
Mesajlar: 2
Kayıt: 05 Mar 2008 11:39

Re: Çalışan Programları Listelemek & Kapatmak

Mesaj gönderen teknologix »

viewtopic.php?f=2&t=20490

daha önce yukarıda cevap verdiğiniz mad colleciton ile ilgili soru sormak istedim. Bunu internetten indirip kurdum. Ama içerisindeki demo uygulamaların hiç birini çalıştıramadım. Undeclared Identifier : HookApi gibi mesaj aldım. (MadCollection.v2.5.8.0\madCodeHook\Demos\process wide demosu içerisindeki). MadCodeHook içindeki DLL i system32 nin içine de attım. Ama bir türlü çalıştıramadım. Tüm demolarda bir şekilde hata alıyorum. Yardım lütfen !!!
Cevapla