2010-12-11 14 views
6

Codepad.org'u kontrol ediyordum ve bir süre (1) çatal aşağıdaki çıktıyı verdi.Bir sanal alan ortamında bir program çalıştırılırken sistem çağrılarına nasıl izin verilmez?

İzin verilmeyen sistem çağrısı: SYS_fork

Kontrol kesin ayrıntılar için bu linki. Daha fazla bilgi edinmek için, sistem çağrısını soketleri kullanarak da devre dışı bıraktıklarını bilmeliyim.

İzin verilmeyen sistem çağrısı: koruma alanlı bir ortamda programı çalıştırmadan önce çağıran SYS_socketcall

herkes bir belirli sistem devre dışı bırakabilir nasıl açıklayacaksınız?

+0

Bu, C++ veya herhangi bir başka yerel ikili için değil, çekirdek düzeyinde bir sorun olacağını düşünüyorum. Kodu, yerel olmayan bir ortamda çalıştırabilecek bir yerde C++ yorumlayıcı yoksa? – JOTN

cevap

1

Çalışma zamanı kitaplıklarını gerçek işlevler yerine boş taslak veya istisna atama sahip olan sahte aygıtlarla değiştirerek?

+0

Ancak, bu işlevlerin gerçek işlevselliğini devre dışı bırakmaz. Örneğin, fork() çalışma zamanı zaman kitaplıklarını değiştirirsem ve kodumda çatallamak istiyorsam ancak başkaları tarafından gönderilen kodda çatalı devre dışı bırakırsam, bu yöntem hala çalışır mı? Eğer evet ise, lütfen bana nasıl bildirin lütfen .. Teşekkürler. – sp2hari

+0

Sadece uygun bir uygulama için, sanırım uygun bir uygulama için, bir çeşit sanal alan ortamı yaratmanız gerekecek, bu yüzden bir gerçek ve bir gölge olarak, çoğaltılmış çalışma zamanlarınız olacaktır. –

+2

Çalışmıyor. İçeri giren bir kişi, syscall ağ geçidine doğrudan erişmek için satır içi derlemeyi kullanabilir. – Joshua

1

Performans cezasını ödemeye hazırsanız, bunun için ptrace() kullanılabilir. Şu anda göremediğim başka bir yol var.

0

Sistem çağrıları, işlevi işletim sistemi tarafından işlemin içine enjekte ederek çalışır. Bununla birlikte, en sevdiğiniz yürütülebilir format için özel bir yükleyici yazmış olsaydınız, bunu kendi başınıza bağlamak için gerekli güce sahip olursunuz. Biçimlendirmeye izin veriyorsa, bu işlevleri, sizin tarafınızdan sağlanan ayrı bir dinamik kitaplıktan çekmek için ikili dosyayı da değiştirebilirsiniz.

0

Bunun eski bir soru olduğunu biliyorum, ama aynı şeyi araştırıyordum, işte benim önerim - SELinux kullanın. Gentoo projesinin, SELinux hakkında yaklaşık nice stuff vardır. Özellikle SELinux Policy Types (4.b) ve hedefli politikasına bir göz atın. codepad.org hakkında emin değilim, ancak benzer ideone.com Gentoo kullanıyor, bu yüzden belki de SELinux gitmenin en kolay yolu olmalı.

İlgili konular