Countdown über BIOS runterzählen



  • Ich habe mir gerade folgendes überlegt: Wäre es möglich, dass man einen Countdown programmiert, der immer über die BIOS-Zeit runtergezäht wird? Also wenn der PC z.B. aus ist, soll das Programm über das BIOS im Hintergrund weiterlaufen und den Countdown weiter herunterzählen.
    Könnte man mit C++ so etwas realisieren?



  • Oh je... Ich glaub, wenn du sowas fragen musst, bist du noch Lichtjahre davon entfernt, das umsetzen zu können.

    Mit einem BIOS würde das nicht gehen. Mit UEFI wahrscheinlich schon, habs mir noch nicht genauer angeschaut. Ich hab früher was an einem Open Source BIOS gemacht. Das ist extrem hardwarenah, funktioniert wahrscheinlich völlig anders, als du dir das vorstellst. Und eins der Probleme mit dem BIOS war, dass es alles sehr herstellerspezifisch war. D.h., keine Chance, sowas generisch umzusetzen. Eigentlich auch keine Chance, das auch nur für das BIOS von deinem eigenen Rechner umzusetzen. Würde zwar gehen, wenn du das ausliest, disassemblierst, verstehst und wieder zusammenbaust, aber das wäre extrem aufwändig und willst du wirklich deinen Rechner schrotten?
    Mit UEFI hat man sich einen Standard ausgedacht, wie man herstellerunabhängige Erweiterungen schreiben kann. Aber wie das konkret funktioniert und ob da nur der Hersteller irgendwas hinzufügen kann oder auch Benutzer hab ich mir wie gesagt noch nicht angeschaut.



  • Kannste nicht einfach das Programm in den Autostart packen und dann die Systemzeit abfragen um zu sehen, ob der Countdown abgelaufen wäre?


  • Mod

    Nathan schrieb:

    Kannste nicht einfach das Programm in den Autostart packen und dann die Systemzeit abfragen um zu sehen, ob der Countdown abgelaufen wäre?

    Die Frage riecht schwer nach "30 Tage Testversion" und der Fragesteller moechte sich nun clever gegen Manipulation der Systemzeit schuetzen.



  • Ist der PC aus, ist auch das BIOS aus.



  • Nun ja, das scheint leider so zu sein, dass man das Programm nicht laufen lassen kann, wenn der PC aus ist.
    Und ja, ich möchte ansatzweise versuchen, eine Testversion zu erstellen.

    Dazu hätte ich eine Frage: So etwas ist doch niemals sicher, oder? Wer es will, der kann doch immer einen weg finden, den "Schutz" zu umgehen. Ich habe mich jetzt dazu entschieden, die Zeit über das Internet zu lesen. Aber auch diese Methode kann umgangen werden, oder?



  • Was machst du wenn keine Internetverbindung besteht. Wie liest du ein?


  • Mod

    Ich nehme an, dies bestaetigt meine Vermutung, dass das ein Kopierschutz werden soll? Es gibt gute Gruende, warum es so lange gedauert hat, funktionierende Kopierschuetze zu entwickeln. Und der Stand der Technik ist extrem aufwaendig fuer den Betreiber und wird dir sicher nicht gefallen. Jedenfalls kannst du davon ausgehen, dass du nicht ploetzlich ueber den heiligen Gral stolpern wirst, den alle andeen in Jahrzehnten einfach die ganze Zeit uebersehen haben.

    Navy schrieb:

    Dazu hätte ich eine Frage: So etwas ist doch niemals sicher, oder? Wer es will, der kann doch immer einen weg finden, den "Schutz" zu umgehen. Ich habe mich jetzt dazu entschieden, die Zeit über das Internet zu lesen. Aber auch diese Methode kann umgangen werden, oder?

    Klar, sehr einfach sogar. Was ist denn dieses "Internet"? Im Prinzip eine Socketverbindung zu einem rechner, den du entweder anhand einer IP-Adresse oder eines DNS-Eintrags identifiziert. Aber der Administrator des Rechners kann bestimmen, wie solche Verbindungsversuche aufgeloest werden. Letztlich ist es nicht schwer, die Verbindungsversuche deines Programms an einen Rechner im lokalen Netz oder gar an den lokalen Rechner selbst weiter zu leiten.

    Um dies zu verhindern, wird es kompliziert, aber es ist prinzipiell moeglich fuer dein Programm, deinen Server zu identifizieren, indem du Kryptographie benutzt. Natuerlich muss dann auch die gesamte weitere Kommunikation verschluesselt sein, sonst spielt der boeswillige Nutzer einfach den Man-in-the-middle und schiebt dir die falsche Uhrzeit rein.

    Aber was haelt den boeswilligen Nutzer davon ab, einfach dein Programm zu aendern, ihm zum Beispiel den eigenen public-key als den deines Servers unterzuschieben. Oder gar die ganze Abfrage zu entfernen? Dein Programm muss also essentielle Daten aus dem Netz nachladen, ohne die es nicht funktioniert. Aber der boeswillige Nutzer wird einfach ein Speicherabbild deines Programms machen und somit an diese Daten kommen, um dein Programm fortan ohne Netzverbindungstarten zu koennen.

    Folglich duerfen diese Daten den Server nie verlassen. Dein ausgeliefertes Programm ist nur ein Client, die eigentliche Anwendung laueft auf dem Server, dieser sendet nur die Ergebnisse. Dies ist der Stand der Technik und die einzige als sicher geltende Methode (ausser der Angreifer verschafft sich Zugriff auf den Server und klaut dort dein Hauptanwendung, aber das ist viel mehr kriminelle Energie als das Manipulieren des eigenen Rechners). Du brauchst also "nur" einen eigenen Server (oder ein ganzes Netz davon) mit genuegend Rechenkapazitaet und Zuverlaessigkeit fuer alle deine Kunden. Und wohl noch wichtiger: Du brauchst Kunden, die diese Gaengelung mitmachen.

    Vielleicht eine bessere Idee: Rechtsmittel 😉 . Gib jedem Kunden eine individuelle, identifizierbare Executable (irgendwelche subtilen Unterschiede). Wenn diese irgendwo anders auftaucht, dann kannst du nachweisen, wer diese weiter gegeben hat.


Log in to reply