Bir jar dosyasını doğrudan belleğe atmadan belleğe yüklemeye çalışıyorum. ClassLoader kullanmayı denedim, ancak bir hata alıyorum. Yük baytını bir dosyaya belleğe yükleme
Bu
benim kodudur:public class CLS_ClassLoader extends ClassLoader {
private byte[] bArrData;
public CLS_ClassLoader(ClassLoader parent, byte[] bArrData) {
super(parent);
this.bArrData = bArrData;
}
public Class<?> loadClass(String name) throws ClassNotFoundException {
return defineClass(name, bArrData, 0,
bArrData.length);
}
}
Ana
Özel ClassLoader
ClassLoader tParentClsLoader = CLS_ClassLoader.class.getClassLoader();
CLS_ClassLoader tClsLoader = new CLS_ClassLoader(tParentClsLoader, fileToByteArray("D:/App.jar"));
Class<?> tClass = null;
try {
tClass = tClsLoader.loadClass("pkg_main.CLS_Main");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Çıktı
Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1347093252 in class file pkg_main/CLS_Main
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at pkg_main.CLS_ClassLoader.loadClass(CLS_ClassLoader.java:20)
at pkg_main.CSL_Main.main(CSL_Main.java:27)
Benim fikrim şifrelenmiş bir jar dosyası almak, çalışma zamanında şifresini çözmek ve doğrudan belleğe yüklemek.
Yazım hataları için üzgünüm, ingilizce iyi konuşmadım. Şimdiden teşekkürler!
* "Ben HDD'ye bırakarak doğrudan belleğe bir kavanoz dosyası yüklemek çalışıyorum "* Bu baytlar ** dan nereden geliyor? Bir URL? Bellekte derlenmiş mi? Pixies? * "Fikrim şifrelenmiş bir jar dosyası almak, çalışma zamanında şifresini çözmek ve doğrudan belleğe yüklemek." * Bu kötü bir fikir. İnsanların kodları çalmasını/tersine mühendislik yapmasını engellemek isteniyorsa, bu sadece en amatör hackerları durduracaktır. Endişelenmeniz gereken orta derecede yeteneği olan bilgisayar korsanlarıdır. –
Yapıştırdığım kaynak kodu okudun mu? "fileToByteArray (" D: /App.jar ")" mesajını göreceksiniz. Dedim ki, bayt dizisini doğrudan belleğe yüklemek istiyorum. Ve kodumun şifrelemeden korunmasının iyi bir fikir olacağını düşünüyorum. Java derlemesini bilmek hacker almaz. Teşekkürler. –
@SamuelPedrosa Belki de bu cevap yardımcı olacaktır: http://stackoverflow.com/a/6797331/1531054. '.class' dosyasını .jar'dan çıkarmayı deneyin ve daha sonra bayt dizisini sınıf yükleyicisine besleyin. –