2010-12-29 7 views
2

Ich muss ein kleines Java-Selbstprüfprogramm (Selbstprüfsumme) machen. hier mein CodebeispielJava-Selbstprüfprogramm (selbstüberprüfend)

public class tamper { 
     public static int checksum_self() throws Exception { 
      File file = new File ("tamper.class"); 
      FileInputStream fr = new FileInputStream (file); 
      int result;     // Compute the checksum 
      return result; 
     } 
     public static boolean check1_for_tampering() throws Exception { 
      return checksum_self() != 0; // TO BE UPDATED! 
     } 
     public static int check2_for_tampering() throws Exception { 
      return checksum_self(); 
     } 
     public static void main (String args[]) throws Exception { 
      if (check1_for_tampering()) { 
      System.exit (-1); 
      } 
      float celsius = Integer.parseInt (args[0]); 
      float fahrenheit = 9 * celsius/5 + 32; 
      System.out.println (celsius + "C = " + fahrenheit + "F"); 
     } 
} 

Ich habe versucht, so

DigestInputStream sha = new DigestInputStream(fr, MessageDigest.getInstance("SHA")); 
byte[] digest = sha.getMessageDigest(); 

for(..) 
{ 
result = result + digest[i] 
} 

etwas zu tun, aber dann, wie ich weiß nicht wirklich, dass überprüfen ??

EDIT:

Vielen Dank für Ihre Antworten

@ Adam Paynter und SpoonBenders

Das ist natürlich nicht für den persönlichen Gebrauch. Und ich, dass gewohnt verwenden keine Software zu schützen .....

Es ist ein „Exercice“ ich für meine Java-Kurs zu tun haben ...

+1

Bitte beachten Sie Java Method Name Standards. es ist nicht C oder php –

+0

Ist das für persönliches Interesse? Ich würde mich nicht auf diese Technik verlassen, um den Code vor Modifikationen zu schützen. –

+1

Wenn Ihr Code nur auf der Client-Seite läuft, ist es sehr schwer zu schützen. Auf der anderen Seite macht einige Software nur Sinn, wenn eine Internetverbindung verfügbar ist. Solche Software ist trivial, um sehr effektiv zu schützen: Machen Sie einen Teil der Berechnung auf der Serverseite (Serverseite, die Sie vollständig kontrollieren). Denken Sie daran: ** Niemand ** spielt auf den echten * World of Warcraft * economy/Blizzard-Servern, ohne eine gültige Lizenz zu besitzen. Niemand. Keine einzige Piratengruppe schaffte es, das zu umgehen. * Das ist, wie mächtig Client/Server-Schutz sein kann. – SyntaxT3rr0r

Antwort

0

Um zu überprüfen, müssen Sie zuerst eine Prüfsumme erstellen. Möglicherweise müssen Sie das Programm unmittelbar nach dem Kompilieren im Prüfsummen-Erstellungsmodus ausführen, um die Prüfsumme in einer Datei oder an einer anderen Stelle zu erstellen und zu speichern, auf die Sie zur Laufzeit zugreifen können.

Dann zur Laufzeit müssen Sie diese Prüfsumme laden, was Ihr erwartetes Ergebnis sein wird. Führen Sie dann wie in Ihrem Code eine Prüfsumme auf "tamper.class" aus und überprüfen Sie, ob sie mit dem erwarteten Ergebnis übereinstimmt.

Ist das, was Sie versuchen zu tun?