Hallo und recht herzlich wilkommen zu einem neuen Tutorial von mir. Heute möchte ich euch zeigen wie ihr eure AutoIt Trainer vernünftig mit einem Passwort sichern könnt sodass man nur durch Brutforce ran kommen kann. Ich kenne dieses Prinzip schon länger, doch dadurch, dass ich jetzt anfange mein Wissen mit euch zu teilen, kläre ich erst jetzt alles auf.
Ihr kennt es vielleicht, ihr wollt einen Trainer machen und bestimmte Funktionen wollt ihr mit einem Passwort schützen aus verschiedenen Gründen.
Der übliche Weg wäre so:
Doch hier gibt es folgende Nachteile:
- Das Passwort ist im Programm gespeichert
- Die Abfrage lässt sich reversen
Jetzt werden sich einige fragen wie man dieses Problem gescheit lösen kann. Ich hatte mir lange einen Kopf darüber gemacht, letztendlich viel es mir beim reversen ein.
Wieso ist es notwendig dass das Passwort im Programm enthalten ist? Das ist doch eigentlich nur zum vergleichen notwendig. Doch ein Vergleich lässt sich ja umgehen. Wie ist es also möglich dass das Passwort dynamisch enthalten ist?
Dann kahm mir eine richtig gute Idee. Ihr wisst, das im Trainer Adressen sind für die Speichermanipulierung. Diese möchten wir schützen. Was ist, wenn wir diese Adressen richtig sichern und sie nur mit dem richtigen Passwort entschlüsseln lassen können? Doch, welche verschlüsselung sollten wir nehmen? Eine Idee wäre zum Beispiel ein MD5 Hash, doch da MD5 eine einseitige Verschlüsselung ist landen wir letztendlich wieder bei einem Vergleich. Dann kahm ich auf die Crypt.au3 und dadurch schließlich auf eine 256 Bit AES Verschlüsselung. Ich erkläre es euch mal kurz und knapp den theoretischen Teil:
- Passwort wird eingegeben
- Die Checkbox für die Funktion wird angeklickt
- Der Trainer wartet auf den Prozess
- Beim Manipuliervorgang wird die Adresse anhand des eingegebenen Passwort's entschlüsselt und dann weiterverarbeitet.
Dies würde als Script so aussehen:
Doch nun werdet ihr euch fragen wie ich den auf den Wert der Variable $Hash gekommen bin. Ein Script zum generieren solcher Hashes habe ich hier für euch gemacht:
Das war es auch schon. Ich hoffe es hat euch weitergebracht. Dieses Schema hier lässt sich natürlich auch auf anderes beziehen doch ich hab es mit einem Trainer in verbindung gebracht um es euch möglichst einfach zu erklären.
Falls Fragen offen stehen könnt ihr sie natürlich stellen. Doch bis dahin, tschüss! Bis zum nächstes Mal,
euer K1ramoX :)
Ihr kennt es vielleicht, ihr wollt einen Trainer machen und bestimmte Funktionen wollt ihr mit einem Passwort schützen aus verschiedenen Gründen.
Der übliche Weg wäre so:
Doch hier gibt es folgende Nachteile:
- Das Passwort ist im Programm gespeichert
- Die Abfrage lässt sich reversen
Jetzt werden sich einige fragen wie man dieses Problem gescheit lösen kann. Ich hatte mir lange einen Kopf darüber gemacht, letztendlich viel es mir beim reversen ein.
Wieso ist es notwendig dass das Passwort im Programm enthalten ist? Das ist doch eigentlich nur zum vergleichen notwendig. Doch ein Vergleich lässt sich ja umgehen. Wie ist es also möglich dass das Passwort dynamisch enthalten ist?
Dann kahm mir eine richtig gute Idee. Ihr wisst, das im Trainer Adressen sind für die Speichermanipulierung. Diese möchten wir schützen. Was ist, wenn wir diese Adressen richtig sichern und sie nur mit dem richtigen Passwort entschlüsseln lassen können? Doch, welche verschlüsselung sollten wir nehmen? Eine Idee wäre zum Beispiel ein MD5 Hash, doch da MD5 eine einseitige Verschlüsselung ist landen wir letztendlich wieder bei einem Vergleich. Dann kahm ich auf die Crypt.au3 und dadurch schließlich auf eine 256 Bit AES Verschlüsselung. Ich erkläre es euch mal kurz und knapp den theoretischen Teil:
- Passwort wird eingegeben
- Die Checkbox für die Funktion wird angeklickt
- Der Trainer wartet auf den Prozess
- Beim Manipuliervorgang wird die Adresse anhand des eingegebenen Passwort's entschlüsselt und dann weiterverarbeitet.
Dies würde als Script so aussehen:
Doch nun werdet ihr euch fragen wie ich den auf den Wert der Variable $Hash gekommen bin. Ein Script zum generieren solcher Hashes habe ich hier für euch gemacht:
Das war es auch schon. Ich hoffe es hat euch weitergebracht. Dieses Schema hier lässt sich natürlich auch auf anderes beziehen doch ich hab es mit einem Trainer in verbindung gebracht um es euch möglichst einfach zu erklären.
Falls Fragen offen stehen könnt ihr sie natürlich stellen. Doch bis dahin, tschüss! Bis zum nächstes Mal,
euer K1ramoX :)