2011-10-22 14 views
6

Doğru noktaya geleceğim, böylece çok fazla okumak zorunda kalmayacaksınız.Java Şifreli Bellek Sınıfı Yükleyici

Temel olarak, bir AES-128bit Şifreli Kavanoz dosyanız var. Bu şifrelenmiş Jar'ı belleğe yükleyip (çalıştırarak) çalıştırabilmek için bir başlatıcı yapmak istiyorum.

Basit bir Sınıf Yükleyici çalışmasına rağmen, bir dizine şifresini çözüp çalıştırmama rağmen, ihtiyaç duyduğum şeyi yapmayacağım (& bellek yükünün şifresini çözme).

TL; DR: AES-128bit Şifreli Kavanozun bellekte çalışması gerekir.

Herhangi bir yardım için teşekkür ederiz, soru sormaktan çekinmeyin!

byte[] bir kavanoz/sınıfı yüklemek için nasıl örnek kod için
+2

Eğer kodunuzun bu kadar güvenli olmasını istiyorsanız, muhtemelen onu en kolay derlenmiş dillerden birinde yazmamalısınız. Bir kavanoz yükleyici yazmak mümkün, ancak insanları hafızadan boşaltmaktan kurtulmanın bir yolu yok. – 0x5f3759df

+0

Java'da derlenmesi gerekiyor. Diğer dillerde kodlayamadığım için değil, daha çok diğer dilleri yaptığım şeyi desteklemiyor. –

+0

@ 0x5f3759d Aynı şey C, C# için de geçerlidir .. kesinlikle herhangi bir dil. Bu 5minutes daha uzun sürebilir, ama sonunda birileri kavanoz dosyası istiyorsa o kolayca anahtarı yeterince alırsınız (CreateFile için bir kesme noktası ayarlayın ve hata ayıklayıcıda saklar, belki de bulunan Fd ile bir ReadFile için bir tane ekleyin ve kolayca yeterli). Buradaki problemi gerçekten görmeme rağmen - sınıftaki yükleyiciniz varsa, dosyayı okumayı ve şifresini çözmenizi engelleyen nedir? Yani asıl sorunun nedir – Voo

cevap

8

(eğer hafızada şifresini çözdükten sonra almak sonucu olmalıdır/gerek yerde dosya sistemindeki kaydetmek için) Temelde http://www.javaworld.com/javaworld/jw-10-1996/indepth/indepth.src.html

İhtiyacınız bkz İstediğinizi elde etmek için defineClass kullanın.

AMA bu her (şifre çözme sonra) biter beri bellekte Java Byte kodu olarak hiçbir gerçek güvenlik sunar ve böylece ulaşılabilir olduğunu dikkat/manipüle/vb kaydedilen

güvenlik Biraz ile mümkün olacağını özel bir JVM'nin uygulanması ve/veya kodun önceden çevrilmesi için kodu ... bazı bilgiler için örneğin bkz. How to create encrypted Jar file?

+0

Teşekkürler! Nasıl yapacağım, nasıl çalıştığını bilmene izin vereceğim. Ayrıca, şifrelenmiş jar/bayt içeren bir geçici dosya oluşturmak için daha kolay bir seçenek olacağını düşünüyorum. Temp kavanozunu belleğe yükledikten sonra geçici klasörden silerim. –

+0

size bekliyoruz ... Lütfen yardım etmeyi unutmayın/yardımın herhangi bir cevabı kabul edildi olarak işaretleyin! – Yahia

+0

Oy vermeden önce 15 itibarı almalıyım. Ama 15 tanesine ulaştığımda emin olacağım! –

1

This article, kodunuzun hava geçirmez korumasının neden kolay olmadığını gösteren iyi bir okumadır. mümkün. Mümkün olduğu kadar düşük seviyelerde kalarak daha da zorlaştırabilirsiniz, ör. Kodunuzu, normal dil yapıları kullanılarak (temiz) gösterilmeyen yerel yönergelere göre derleyin.

Ancak her halükarda, şifrelenmiş verilerinizin bazı anahtarlar kullanılarak şifrelenmesi gerekeceğini ve bu tuşun sadece kısa bir süre bile olsa, ancak önemli olan nokta, bellekte yer alacağıdır. . Genel işletim sistemlerinde ve donanımında bunun bir yolu yoktur. Yani bir hacker olarak, anahtarı bellekten almak için geriye her zaman geri dönebilir ve oradan geriye doğru yolunuzu çalıştırabilirsiniz. Ortalama kullanıcıların yapabileceği bir şey değil, ama kesinlikle mümkündür.