Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

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 Giriş yap veya Üye OlMerhabalar, 

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 Giriş yap veya Üye OlServis 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 Giriş yap veya Üye OlHangi 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 Giriş yap veya Üye OlDevice 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 Giriş yap veya Üye OlEvet 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 Giriş yap veya Üye Ol

 
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 Giriş yap veya Üye Ol
(03-11-2018, Saat: 10:14)aruno Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlEvet 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 Giriş yap veya Üye Ol

 
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

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Aras web service osiso 7 489 31-07-2018, Saat: 15:25
Son Yorum: r3n4m3
  Windows CE İşletim Sistemine Yazılım Geliştirme pro_imaj 8 403 27-07-2018, Saat: 08:33
Son Yorum: pro_imaj
  Windows Hizmetinde Hafıza Yönetimi yhackup 1 305 11-12-2017, Saat: 09:59
Son Yorum: SimaWB
  Amansızca duran Windows hizmeti yhackup 24 1.416 25-11-2017, Saat: 09:38
Son Yorum: yhackup
  Rest Service TBytes edo 1 653 25-10-2017, Saat: 23:58
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi