Prüfen ob eine Anwendung manipuliert wurde



  • Du kannst den Hash berechnen und diesen in den letzten 4 Byte der Anwendung speichern. Beim Überprüfen machst du nur einen CRC32 auf die ersten n-4 Byte.



  • Naja, meine Idee benötigt ein Zusatzprogramm das den CRC32 der kompilierten exe berechnet und ihn an die Datei anhängt. Das Hauptprogramm muss beim Starten das gleiche machen wie das "Anhängtool" nur halt ohne zu schreiben. Es terminiert wenn der CRC32 falsch ist. Dann kann auch niemand mehr die Ressourcen verändern und es als sein Prog ausgeben (Vorrausgesetzt er kennt die Methode mit der Checksumme nicht! Dann müsste er aber auch die CRC32-Table kennen. Ist also relativ sicher.). Das Programm erkennt auch selber eine Modifikation durch Viren etc. und kann eine Warnung ausgeben.



  • Das Probleme dabei ist aber immer, wie Dimah schon gesagt hat, das es irgendwo dann ein
    "if(exeOk) StarteProgramm(); else BeendeProgramm();" gibt.



  • Stimmt, hatte ich nicht bedacht. Hmmm, wie könnte man das lösen? Bearbeitungazeitpunkt kann jedes Kiddie nach der Änderung selbst zurücksetzen. Fällt also schonmal weg. Datei zusätzlich auf NOPs untersuchen ist schwierig weil man die exe auch parsen müsste, zeitaufwendig und kann durch NOPs auch entfernt werden 😃 erhöht aber die Sicherheit ein wenig. Fällt weg. Man muss sich wohl damit abfinden 😞 😉 .



  • Zudem produzieren manche Compiler selbstständig NOPs und INT3s auch im Release-Mode!
    Du könntest eine wichtige Variable von der Prüfsumme abhängig machen.



  • Hallo Leute!
    Danke für die vielen Antworten!

    Also ist leider doch so wie gedacht.Jede noch so gute Lösung in einer Hochsprache läßt sich auf ein if ok then start prog auf asm ebene übertragen.
    Oder anders ausgedrückt der Wissensstand des Programmierers muß höher sein als der des bösen Kiddis.

    Erstmal habe ich mich für einen MD5 Hash dessen Hashwert in einer Ini Datei verschlüsselt liegt. Naja für den Aufwand doch eine nützliche Version.

    Habt ihr noch weitere Ideen wie man dieses Problem am besten lösen kann bzw. wie man es dem bösen jungs so schwer wie möglich machen kann?

    cu InfoStudent



  • du kannst ja die Prüfmethode direkt in Assembler schreiben, dann baust du den Code eben recht verwirrend auf. Das hält dann schon Leute mit weniger Erfahrung ab. Sorgt aber natürlich dafür, dass dein Code nicht mehr gut portierbar ist und der Kerl, der sich später um den Code kümmern muss dich dafür prügeln wird. Das Problem ist eben, dass jeder, der Ahnung von Assembler hat und einen Debugger bedienen kann deine Lösungen knacken kann. Du könntest ansonsten auch die Applikation verschlüsselt hinterlegen und ein kleiner Lade Code, entschlüsselt einfach den Code. Hier besteht aber wieder das Problem den Schlüssel sicher auf zu bewahren.

    Ein sicherer Weg wär mit Smartcards oder anderen Hardware Lösungen zu arbeiten, aber das kommt ja idr. nicht in Frage. Naja, vielleicht musst du einfach auf TCPA warten ;), obwohl die erste TCPA Implementierung (MS XBox) ja auch schon geknackt wurde *hihihi*



  • Hallo Leute

    Leider habe ich nicht Lust und Laune auf ASM Ebene abzusteigen aber die Idee ist natürlich denkbar. Auch ist die Idee mit externen Datenträgern sehr gut nur leider ein wenig zu teuer. Und den Teufel TCPA mit ins Boot holen wollte ich eigendlich nicht.

    Also es ist jetzt eine Mischung aus einem MD5 Hash der in eine externe Datei zusammen mit verschlüsselten Benutzerpasswörter verschlüsselt abgelegt wird. Ja auch mit einem Fake Benutzernamen der sich dann auch nicht mit dem Hash anmelden kann. Außerdem habe ich eine kleine Überraschung eingebaut. Eine "falsche" Eingabe in einem Zahlenfeld gibt eine Meldung aus vom wem das Prog ürsprunglich gecodet wurde und kann so helfen zu beweisen wer der Urheber ist. Hoffe das das wohl reichen wird :-))
    Reicht um die Kiddis abzuwehren ...

    Cu InfoStudent



  • Ich glaube selbst ein Kiddie kann den Text in deiner Meldung per Hexeditor ändern.



  • hallo mastah

    genau das wollte ich ja verhindern.
    darum ist der text im versteckten anzeigenfeld verschlüsselt und wird nur zur laufzeit entschlüsselt so das kaum einer auf die idee kommt ihn dort zu vermuten bzw überhaupt danach zu suchen.

    für die kiddis ist ja auch der md5 schutz schon eine hürde.

    cu InfoStudent


Anmelden zum Antworten