Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Windows Service Uygulamasının durdurulmasını ve Kaldırılmasını Engellemek
#1
Merhabalar, 

Güvenlik amacıyla yazdığımız bir uygulamamız var, (Service Application) bunu client makinelerimize kuruyoruz ve kullanıcıların performanslarını takip ediyoruz. (Evden çalışan personellerimiz için) Kullanıcılarımızın bu uygulamayı kapatmasını engellemek istiyoruz.


 * Guest oturumu vermek bir çözüm ancak herkese lokal admin vermek zorundayız bazı sebeplerimizden ötürü.

 * Domain Controller kullanmıyoruz.


   Antivirüs ve buna benzer bir çok uygulamanın servisi bunu yapabiliyor, Bunu Delphi dili ile yapmak mümkün müdür?

  Harici bir uygulama ile tetikleme yapabiliriz ama o uygulamanın da sonlandırılmasını engellememiz gerekecek. 

    Değerli fikirlerinizi paylaşabilirseniz çok sevinirim.

    İyi çalışmalar.
Cevapla
#2
Servis uygulamasını Delphi'de mi yazdınız? Bunda değişiklik yapabiliyor musunuz?
Yoksa Delphi'de yazılan bir uygulama ile başka bir servisin durdurulmasını engellemek mi istiyorsunuz?
There's no place like 127.0.0.1
WWW
Cevapla
#3
Hangi servis olursa olsun, bu şekilde engelleyemezsiniz. Ancak birden fazla servis varsa ve biri ötekinin varlığına bağlıysa bu durumda kendine bağlı olan servisi kapatamazsınız. Diğerini durdurduktan sonra bunu da kapatabilirsiniz. Yani windows servislerinde bağlılık olayı var. Antivirüs servislerini bile durdurabilirsiniz.
Ancak bu servis haricinde başka bir servis daha yazıp, bu servisin ne durumda olduğunu kontrol ettirebilirsiniz. Eğer bir şekilde durmuşsa servisi tekrar start edersiniz.

Bu arada servisi kapatmak için sistemi bayağı biliyor olması gerekir kullanıcının. Bunu yapacak kadar biliiyor mu kullanıcılarınız. Zaten öyleyse, ne yaparsanız yapın yine de durdurur. Bunun yolu o programın çalışmasının yükümlülüğünü o kişiye vermektir. Aksi halde çok başınız ağrır.
Cevapla
#4
(02-11-2018, Saat: 23:26)aruno Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhabalar, 

Güvenlik amacıyla yazdığımız bir uygulamamız var, (Service Application) bunu client makinelerimize kuruyoruz ve kullanıcıların performanslarını takip ediyoruz. (Evden çalışan personellerimiz için) Kullanıcılarımızın bu uygulamayı kapatmasını engellemek istiyoruz.


 * Guest oturumu vermek bir çözüm ancak herkese lokal admin vermek zorundayız bazı sebeplerimizden ötürü.

 * Domain Controller kullanmıyoruz.


   Antivirüs ve buna benzer bir çok uygulamanın servisi bunu yapabiliyor, Bunu Delphi dili ile yapmak mümkün müdür?

  Harici bir uygulama ile tetikleme yapabiliriz ama o uygulamanın da sonlandırılmasını engellememiz gerekecek. 

    Değerli fikirlerinizi paylaşabilirseniz çok sevinirim.

    İyi çalışmalar.


Virüs benzeri program yazanlar genelde birbirini kontroleden 2 tane servis yazarlar. Birini kaldırırsanız diğeri onu onarıyor veya yeniden başlatıyor.
WWW
Cevapla
#5
(03-11-2018, Saat: 00:48)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Servis uygulamasını Delphi'de mi yazdınız? Bunda değişiklik yapabiliyor musunuz?
Yoksa Delphi'de yazılan bir uygulama ile başka bir servisin durdurulmasını engellemek mi istiyorsunuz?

Evet Delphi ile yazdık, kaynak bizde hocam.

(03-11-2018, Saat: 01:19)mustafaozpinar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Hangi servis olursa olsun, bu şekilde engelleyemezsiniz. Ancak birden fazla servis varsa ve biri ötekinin varlığına bağlıysa bu durumda kendine bağlı olan servisi kapatamazsınız. Diğerini durdurduktan sonra bunu da kapatabilirsiniz. Yani windows servislerinde bağlılık olayı var. Antivirüs servislerini bile durdurabilirsiniz.
Ancak bu servis haricinde başka bir servis daha yazıp, bu servisin ne durumda olduğunu kontrol ettirebilirsiniz. Eğer bir şekilde durmuşsa servisi tekrar start edersiniz.

Bu arada servisi kapatmak için sistemi bayağı biliyor olması gerekir kullanıcının. Bunu yapacak kadar biliiyor mu kullanıcılarınız. Zaten öyleyse, ne yaparsanız yapın yine de durdurur. Bunun yolu o programın çalışmasının yükümlülüğünü o kişiye vermektir. Aksi halde çok başınız ağrır.

Cevap için teşekkür ederim, yalnız şöyle bir durum var sizin dediğiniz gibi ise eğer biz servisi durdurduğumuz da diğer servis otomatik olarak tekrar çalıştıracaktır ama güvenlik yazılımlarının servislerini kapatmaya çalışırsanız eğer göreceksiniz ki “erişim engellendi” gibi bir hata ile karşılaşacaksınız. Burada sanırım farklı bir olay var. Servisin register edilme şeklinde mi bilmiyorum ama  belki bir sistem sürücü ile ya da hook ile yapılabileceğini düşünüyorum. Ama sanırım delphi ile bunu yapacak tecrübemiz yok Wink
Cevapla
#6
Erişimi engelleme servisin yazılımında oynayarak olamaz. Ancak erişim ayarlarıyla ya da group policy'yi değiştirerek yapabilirsiniz. Bence yetkilerle oynayarak yapmışlardır. Eğer elinizde admin hakkına sahip kullanıcı varsa (domain'e bağlı olmamak kaydıyla) her türlü düzeltmeyi yapabilirsiniz. Düşünün bazı klasörlere erişimi hesapta engelliyor, ama As Administrator diye yaptığınızda o işi yapabiliyorsunuz ya da o klasörü görüntüleyebiliyorsunuz.

Control Panel'den Services kısmına girerseniz burada istediğiniz servisin Property'sine girip burada yapılabilecek değişiklileri görürsünüz. Bunun dışında benim bildiğim bir yöntem yok! Ama yine de (buradan, yanılsamalarla yapılıyor olsa bile) nasıl yapıldığını bilmek iyidir tabii ki! Ancak bu programlamanın dışında, sistemcilikle ilgili bir olay haline gelmiş oluyor gibi sanki.
Cevapla
#7
Device driver programlamayı bilmiyor iseniz, maalesef normal yollarla bir uygulamamın kapanmasını kolay kolay engelleyemezsiniz. Ancak yapabileceğiniz şeyler elbette var.

1- Device driver yazabilirsiniz ve o driverda uygulamanızın kapatılma taleplerine NTSTATUS 5 ile yani access denied ile yanıt verirsiniz. Ancak çok meşakkatli ve uzun bir yoldur bu yol.
2- Uygulamanız başladığında sistem process’lerinin bir tanesine code/dll injection yaparsınız ve uzak process içinde çalışan threadiniz sizin uygulamanın varlığını kontrol eder, bulamazsa yeniden çalıştırır. Ama bu yol da nispeten uzun ve uğraştırıcı bir yoldur.
3- Uygulamanızı “kritik sistem uygulaması” olarak işaretleyebiliriniz. Bu durumda uygulamamız kapatıldığında işletim sistemi mavi ekrana düşer  Big Grin
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#8
(03-11-2018, Saat: 21:54)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Device driver programlamayı bilmiyor iseniz, maalesef normal yollarla bir uygulamamın kapanmasını kolay kolay engelleyemezsiniz. Ancak yapabileceğiniz şeyler elbette var.

1- Device driver yazabilirsiniz ve o driverda uygulamanızın kapatılma taleplerine NTSTATUS 5 ile yani access denied ile yanıt verirsiniz. Ancak çok meşakkatli ve uzun bir yoldur bu yol.
2- Uygulamanız başladığında sistem process’lerinin bir tanesine code/dll injection yaparsınız ve uzak process içinde çalışan threadiniz sizin uygulamanın varlığını kontrol eder, bulamazsa yeniden çalıştırır. Ama bu yol da nispeten uzun ve uğraştırıcı bir yoldur.
3- Uygulamanızı “kritik sistem uygulaması” olarak işaretleyebiliriniz. Bu durumda uygulamamız kapatıldığında işletim sistemi mavi ekrana düşer  Big Grin

Tuğrul hocam cevap için teşekkür ederim, Device Deiver açıkçası bizi aşar. Delphi ile yapılabilir mi onu dahi bilmiyordum sizden öğrendim. Hiç tecrübe etmedik malesef. CriticalProcess iyi bir seçenek, mavi ekran değilde sanırım restart istiyordu o şekilde yapınca ve yine yanlış hatırlamıyorsam 32/64 bit olarak ayırmak gerekiyordu. Maleaef uygulamamız 32 bit. Gerçi sistem sürücüsü ve dll injection bile yapsak bunu 32/64 olarak ayırmamız gerekecek. 32 bir uygulama ancak 32 bit başka bir uygulama ya da dll ye enjekte olabiliyordu. Neyse belli ki bunu servis ile çözemeyeceğiz.

Peki hocam sizden bu konuda destek alabilmemiz mümkün müdür? Freelance olarak bize destek verebilir misiniz? Eğer vaktiniz var ise tabii Wink

Teşekkürler.
Cevapla
#9
(03-11-2018, Saat: 10:14)aruno Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Evet Delphi ile yazdık, kaynak bizde hocam.

Arkadaşların dediği gibi kapanmayı tam olarak engellemenin kolay bir yolu yok.
Zor yollar:
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

 
En azından kapanma işini zorlaştırmak isterseniz servisin AllowStop ve AllowPause özelliklerini False yaparsanız Görev Yönetisicisinden vs. normal yollarla kapanması engellemiş olursunuz. 

Görev Yöneticisinden kapatmak isteyen şöyle bir uyarı görür:

2018-11-05_zvetwd.png
There's no place like 127.0.0.1
WWW
Cevapla
#10
(05-11-2018, Saat: 10:56)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(03-11-2018, Saat: 10:14)aruno Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Evet Delphi ile yazdık, kaynak bizde hocam.

Arkadaşların dediği gibi kapanmayı tam olarak engellemenin kolay bir yolu yok.
Zor yollar:
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

 
En azından kapanma işini zorlaştırmak isterseniz servisin AllowStop ve AllowPause özelliklerini False yaparsanız Görev Yönetisicisinden vs. normal yollarla kapanması engellemiş olursunuz. 

Görev Yöneticisinden kapatmak isteyen şöyle bir uyarı görür:

2018-11-05_zvetwd.png

Merhaba,
Güvenli modda da geçerli mi bu durum?
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]Server İşletim Sisteminde Çalışan Windows Servis te is not a valid date Hata theSinan 9 230 28-08-2019, Saat: 10:05
Son Yorum: adelphiforumz
  [ÇÖZÜLDÜ] Windows Service içerisinden başka uygulama çalışmasını kontrol etme theSinan 2 364 08-06-2019, Saat: 12:17
Son Yorum: elixir84
  Windows Oturumu Açılmadan Program Nasıl Çalışır theSinan 15 1.606 15-04-2019, Saat: 00:15
Son Yorum: theSinan
  Windows API kullanmayı öğrenmek ister misiniz? uparlayan 24 3.047 07-02-2019, Saat: 14:14
Son Yorum: Bay_Y
  QuickReport, Delphi 7, Windows 10 HATA ! [Çözüldü] SenayAkgun 13 1.414 26-01-2019, Saat: 02:45
Son Yorum: SenayAkgun



Konuyu Okuyanlar: 1 Ziyaretçi