Bir kitaplığı bir bellek akışından yükleyebilir miyim? Örneğin kütüphanem bir dosya kodlu. Bazı koşulları kontrol edip dosyayı bir bellek akışına şifresini çözüyorum. Şimdi şifrelenmiş kütüphaneyi bu akıştan uygulamam içine yüklemem ve işlevlerini kullanmam gerekiyor.Bir kitaplığı bir bellek akışından yükleyebilir miyim?
cevap
Pencerelerde, bir DLL sadece bir dosyadan yüklenebilir - önerilen bağlantılar gibi, bir ramdisk oluşturabilir ve bunu yükleyebilirsiniz. bir sürücü olarak, ancak bir dosya sisteminde bulunan bir dosyadan yüklenmesi gereken DLL'nin hiçbir yolu yoktur. Bunun sebebi, DLL'nin "talep yüklenmiş" olmasıdır, yani sistem tüm dosyayı bir kerede belleğe yüklemez, aslında kullanılan parçaları yükler, 4KB (tipik olarak). Ayrıca takas alanına takas edilmez, sadece sistem hafızada çalışıyorsa, sadece atılır ve DLL'den yeniden yüklenir.
Linux çok benzer bir şekilde çalışıyor (varsayılan olarak aynı türden bir istek yüklemesini kullandığını biliyorum, ancak bir yol olup olmadığından emin değilim), bu yüzden başka bir yol olduğuna inanmıyorum ya da ben buna derinlemesine bakmadım.
Tabii ki, tek yapmanız gereken, uygulamanızda kullanabileceğiniz bir kod parçasıysa ve bunu, çok değerli dosyanızda şifrelenmiş/sıkıştırılmış olarak saklamak istiyorsanız, yapabileceğiniz şey bazı çalıştırılabilir bellek ayırmaktır. (Windows'da, çalıştırılabilir belleği ayırmak için VirtualAlloc
'u kullanabilirsiniz). Ancak, bunu yaparsanız, kodunuzdaki mutlak bellek adreslerini yeniden konumlandırdığınızdan emin olmanız gerekir; bu nedenle, yer değiştirme bilgilerini yürütülebilir dosyanıza kaydetmeniz gerekir.
Açıkçası, kolay çözüm, içeriğinizi dosya sistemindeki bir dosyaya açmak ve oradan yüklemek.
Ramdisk'ten daha iyi bir çözüm için https://github.com/fancycode/MemoryModule adresine bakın (eğer "iyi" veya "daha iyi" bir çözüm varsa), başlangıçtan denemenin iyi bir fikir olduğunu düşünmüyorum.). – Damon
@Damon: Üçüncü paragrafta anlattığım şeyi, anlatabildiğim şeyden yapıyorum (kodun TÜMÜNÜ ayrıntılandırılmamıştı). –
@MatsPeterson: Evet, tam olarak ne yaptığı. Bu çalışma bir uygulama (birkaç yıl önce denedim) ve OP'nin istediği için “ramdisk” yaklaşımından biraz daha iyi (zaten ramdisk'ten şifrelenmemiş dosyayı okuyabildiğin için). Tabii ki, yine de, VM yönetimine ciddi bir şekilde müdahale ettiğinden ve paylaşımlı bir kütüphane kavramına biraz ters düştüğü için, bu şeylerle başa çıkmak için iyi bir fikir olarak düşünmüyorum. DLL'lerin dosya tabanlı olması, aynı sayfaları birkaç işlemle eşleştirebilmeniz, bunları atabildiğiniz ve isteğe bağlı olarak yeniden yükleyebilmenizdir. – Damon
- 1. Ucode'ı ubuntu'ya yükleyebilir miyim?
- 2. Java'da değişkenleri aşırı yükleyebilir miyim?
- 3. C: bellek havuzu kitaplığı?
- 4. Kapaması Python'da döngüleri olan bir işlevi geri yükleyebilir miyim?
- 5. Bir fiziksel telefonu yedekleyebilir ve öykünücüye geri yükleyebilir miyim?
- 6. OpenCV üzerinden çok çerçeveli bir TIFF yükleyebilir miyim?
- 7. StreamReader akışından bir dosya yazma
- 8. Videoyu bir bayt akışından Android'te oynatma
- 9. scala - Curried yöntemlerini aşırı yükleyebilir miyim?
- 10. Kavanozu groovy'ye dinamik olarak yükleyebilir miyim?
- 11. Eklentiyi Amazon Elasticsearch Service'e yükleyebilir miyim?
- 12. "scraperwiki" kitaplığını yerel olarak yükleyebilir miyim?
- 13. .htaccess dosyasından bir apache modülü yükleyebilir misiniz?
- 14. .NET'te bir bayt akışından bir SQLite veritabanı yükleniyor
- 15. NET'te bir akışından MemoryStream nasıl alınır?
- 16. html dosyamı sadece bir kez UI yönlendirici uygulaması olan bir Angular 1.4 ile yükleyebilir miyim?
- 17. Dize akışından içeriği okuma
- 18. Performansı iyileştirmek için iPhone'daki özel yazı tiplerini önceden yükleyebilir miyim?
- 19. Visual Studio 2015 Enterprise ve Pro'yu yan yana yükleyebilir miyim?
- 20. Google fontlarını Matplotlib ve Jupyter ile yükleyebilir miyim?
- 21. Dart sunucusunda Düğüm kitaplığı kullanabilir miyim?
- 22. SSIS, veri akışından
- 23. Youtube videosunu ve küçük resmini aynı anda yükleyebilir miyim?
- 24. Telefonun fotoğraf makinesinden HTML5 ile fotoğraf yükleyebilir miyim
- 25. .NET kullanarak .NET'in yeni sürümünü program aracılığıyla yükleyebilir miyim?
- 26. Çok bölüm için UrlEncodedFormEntity kullanarak Görüntüleri ve metni yükleyebilir miyim?
- 27. Bir CSV dosyasını doğrudan CKAN UI aracılığıyla veri mağazasına yükleyebilir miyim?
- 28. Bulut Platformu: Herhangi bir IaaS'de Ghostscript gibi açık kaynak kodlu/yükleyebilir miyim?
- 29. Bir asp 5/MVC 6 Görünüm Bileşenini ajax üzerinden yeniden yükleyebilir miyim?
- 30. Uygulamamda bir JDK dağıtabilir miyim?
Bunu OSX için buldu: http://stackoverflow.com/questions/11821955/load-dynamic-library-from-memory ve bu pencereler için: http://stackoverflow.com/questions/638277/loading-dll- bellekten – koopajah
Windows ve Linux için çözüme ihtiyacım var. –