Bir jar dosyasının açık bir şekilde kurcalanmadığını program aracılığıyla doğrulamaya çalışıyorum. Önlemek istediğim 2 kullanım vakam var. kavanozKavanoz İmzasının Doğrulanması
varolan sınıfları 2) yeni sınıflarının eklemeler 1) değişiklikler I jarsigner kullanılarak kavanoz imza. Yukarıdaki durumlardan birini jarsigner ile doğruladığımda beklediğim gibi çalışır.
Ben ancak How to verify a jar signed with jarsigner programmatically veya How to verify signature on self signed jar? yılında programlı örneklerini kullanarak bunu deneyin
, ben bu konuda hiç bir SecurityExceptions ... veya herhangi bir istisna alamadım.Bu parçacıkların diğer insanlar için çalıştığı göründüğü için yanlış yaptığımdan emin değilim. Herhangi bir fikir? Bu JDK 1.6 BTW.
Düzenleme: , aşağıdaki kod örneği istediği gibi ... Aşağıdaki örneği kullanarak kendi modifiye kavanoz :)
JarFile myJar;
try
{
//Insert the full path to the jar here
String libPath = ""
stature = new JarFile(libPath,true);
//Don't really need this right now but was using it to inspect the SHA1 hashes
InputStream is = myJar.getInputStream(myJar.getEntry("META-INF/MANIFEST.MF"));
Manifest man = myJar.getManifest();
is.close();
verifyJar(myJar);
}
catch (IOException ioe)
{
throw new Exception("Cannot load jar file", ioe);
}
private void verifyJar(JarFile jar) throws Exception
{
Enumeration<java.util.jar.JarEntry> entries = jar.entries();
while (entries.hasMoreElements())
{
java.util.jar.JarEntry entry = entries.nextElement();
try
{
jar.getInputStream(entry);
//Also tried actually creating a variable from the stream in case it was discarding it before verification
//InputStream is = jar.getInputStream(entry);
//is.close();
}
catch (SecurityException se)
{
/* Incorrect signature */
throw new Exception("Signature verification failed", se);
}
catch (IOException ioe)
{
throw new Exception("Cannot load jar file entry", ioe);
}
}
}
JAR testi altında nasıl müdahale ettiniz? – trashgod
7zip'te açtım. Bazı sınıf dosyaları ile yeni bir paket dizini ekledim ve mevcut sınıf dosyalarının bir kısmını yeniden derlenmiş sürümlerle değiştirdim. – Amasuriel
Eğer jarsigner değiştirilmiş JAR'ı reddederse, ancak kodunuz bunu kabul ederse, bir [sscce] (http://sscce.org/) problemi tespit edebilir. – trashgod