Chrono Mock
SpracheDeutsch

Fragen und Antworten

Kurze Antworten, auch auf die Fragen danach, was dieses Werkzeug nicht kann.

Ändert es die Uhr meines Computers?

Nein, und das wird es nie - das ist der ganze Sinn des Werkzeugs. Die verschobene Zeit sehen ein Prozess und die Kindprozesse, die er startet. Ihre Domänenanmeldung, Ihre Zertifikate, Windows Update und jede andere Anwendung sehen die ganze Zeit das echte Datum.

Brauche ich Administratorrechte?

Nicht zum Ausführen. Die ZIP-Dateien brauchen keinen Installer, schreiben nichts in die Registry und laufen aus einem Ordner, den man auf einen USB-Stick legen kann. Die optionale .msi braucht einmal Administratorrechte, zum Installieren, weil sie für jedes Konto auf dem Rechner installiert.

Funktioniert es mit meiner Anwendung?

Ehrlich gesagt kann kein Werkzeug dieser Art das vorab versprechen - deshalb misst dieses es stattdessen. Jede Sitzung endet mit einem Urteil (funktioniert, funktioniert teilweise, funktioniert nicht), der Liste der Zeitkanäle, die die Anwendung tatsächlich gelesen hat, mit der Zahl der Aufrufe je Kanal, und der Liste der Kanäle, die nicht abgedeckt waren.

Eine Anwendung kann die Uhr über einen Weg lesen, den nichts abgefangen hat - von einem Server, aus einer Datenbank, über eine Laufzeitschicht. Wenn das passiert, erfahren Sie es, statt anzunehmen, der Test sei bestanden.

Funktioniert es mit .NET-, Java- und Python-Anwendungen?

Teilweise, und die Unterschiede zählen. Alle drei sind als experimentell gekennzeichnet: Sie funktionieren an den Testzielen, wurden aber nicht breit getestet, und die eingebaute Prüfung ist Ihre Quelle der Wahrheit, nicht dieser Absatz.

  • .NET - die Wanduhr und die Sitzungszeitzone sind abgedeckt. Stopwatch bleibt am echten hochauflösenden Zähler, solange Sie dessen Skalierung nicht aktivieren.
  • Java - Wanduhr, verstrichene Zeit und die Sitzungszeitzone sind abgedeckt. Die Zone kommt als fester Offset an, benannt wie GMT+05:30.
  • Python - time.time und datetime sind abgedeckt. perf_counter und, ab Python 3.13, monotonic hängen am hochauflösenden Zähler, solange Sie die Skalierung nicht aktivieren.

Funktioniert es mit Electron- und Chromium-Anwendungen?

Ja, über einen anderen Mechanismus. Ihre Uhr liegt in einem abgeschotteten Renderer, den Injektion nicht erreicht. Deshalb wird die Anwendung mit einem Debug-Port und einem sauberen Wegwerfprofil gestartet, und ihre eigenen JavaScript-Zeit-APIs werden auf die Sitzungsuhr gelegt - auch in den Web Workern, wo der Timer oft tatsächlich sitzt.

Eine Grenze ist gut zu wissen: Der Hauptprozess einer Electron-Anwendung läuft in Node, das die Sitzung nicht erreicht, also behält er die echte Uhr, und der Bericht sagt das. Die Seiten und ihre Worker lesen die Sitzungszeitzone.

So funktioniert der Chromium- und Electron-Modus - was er erreicht, was nicht, und warum der Debug-Port der Teil ist, den man im Blick haben sollte.

Kann ich die Zeit schneller als in Echtzeit laufen lassen?

Ja. Wählen Sie einen ganzzahligen Faktor, und die Uhr der Anwendung läuft in dieser Geschwindigkeit - x1440 macht aus einem Tag eine Minute, sodass eine 30-Tage-Testversion in etwa einer halben Stunde abläuft. Sie können die Uhr auch einfrieren oder mitten in der Sitzung vor- und zurückspringen.

Countdowns und Timer liegen auf einer eigenen Achse, und deren Beschleunigung ist ein eigener Schalter, weil ihre Skalierung ein Verhalten ändert, auf das sich viele Anwendungen verlassen.

Kann ich nur die Zeitzone ändern, ohne das Datum zu ändern?

Ja. Die Sitzung trägt ihren eigenen festen Offset, sichtbar für diesen Prozess, während die Systemzone genau dort bleibt, wo sie war. Das lassen die meisten Werkzeuge aus, und so reproduzieren Sie den Fehler, der nur beim Kunden fünf Zeitzonen entfernt auftritt.

Und die Sommerzeit?

Die Sitzungszone ist ein fester Offset ohne Sommerzeit. Eine auf Polen gestellte Sitzung bleibt bei dem gewählten Offset, ob ihre Uhr nun März oder Juli anzeigt. Ein Lauf, der einen echten Wechsel überschreitet, weicht daher um eine Stunde von dem ab, was diese Zone wirklich zeigen würde.

Eine Anwendung durch einen Sommerzeitwechsel zu schicken, kann dieses Werkzeug daher noch nicht, und der Datumsrechner sagt das, statt zu raten.

Warum schlägt mein Virenschutz an?

Weil das Einschleusen einer Bibliothek in einen anderen Prozess eine legitime, dokumentierte Windows-Technik ist, die auch Schadsoftware nutzt. Es ist ein Fehlalarm, ausgelöst durch die Technik, nicht durch irgendetwas, das das Werkzeug mit Ihrem Rechner tut. Die eingeschleuste Bibliothek ist chrono_hook.dll, gebaut aus dem öffentlichen Quellcode unter GPL-3.0, und Sie können sie selbst neu bauen. Der Chromium- und Electron-Modus injiziert gar nicht.

Die Download-Seite sagt, was Sie dagegen tun können.

Kann ich damit eine Testversion verlängern oder eine Lizenz umgehen?

Nein, und dafür ist es nicht gebaut. Chrono Mock dient dem Testen von Software, für die Sie selbst verantwortlich sind - Ihr eigener Lizenzablauf, Ihre eigene Verlängerungslogik, Ihr eigener Monatsabschluss. Kein Beispiel, kein Szenario und keine Seite hier wird je zeigen, wie man die Testphase einer fremden Software verlängert.

Software mit Lizenzschutz ist tatsächlich der Fall, an dem dieses Werkzeug am ehesten scheitert: Manipulationsschutz liest die Zeit oft über Wege, die gezielt schwer abzufangen sind, und eine zurückgedrehte Uhr ist ein Zustand, den solche Software erkennen soll. Eine Funktion in die andere Richtung ist geplant - ein Modus, der eine Reihe von Zeitmanipulationen gegen Ihre eigene Anwendung fährt und meldet, welche Ihr Schutz erkannt hat.

Kann ich es in der Continuous Integration einsetzen?

Ja. Der Kommandozeilen-Build ist ein eigener Download von etwa 2,4 MB ohne Laufzeitumgebung zum Installieren. Jeder Befehl versteht --json und endet mit einem Code, nach dem eine Pipeline verzweigen kann, und eine Sitzung kann ihren Nachweis in eine Datei schreiben.

Wie unterscheidet es sich von RunAsDate?

RunAsDate fängt fünf Wanduhr-Funktionen ab und macht das gut. Dieses Werkzeug beobachtet 44 Zeitkanäle und setzt 30 davon auf die Sitzungsuhr, kann die Uhr beschleunigen, gibt dem Prozess eine eigene Zeitzone, folgt Kindprozessen und sagt Ihnen danach, welche Kanäle tatsächlich abgedeckt waren. Außerdem ist es Open Source, wo RunAsDate geschlossene Freeware ist. RunAsDate wiederum kann sich an eine bereits laufende Anwendung anhängen, dieses Werkzeug nicht.

Der vollständige Vergleich sagt auch, wo RunAsDate die bessere Wahl ist.

Ist das libfaketime für Windows?

Dem Geist nach ja - dieselbe Idee, die Zeit für ein Programm statt für den ganzen Rechner zu verschieben. In der Praxis ist es eine andere Implementierung, denn libfaketime hängt von LD_PRELOAD ab, das es unter Windows nicht gibt. Dazu gibt es eine eigene Seite.

Ist es kostenlos, und sendet es irgendetwas irgendwohin?

Kostenlos und Open Source unter GPL-3.0. Kein Konto, keine Telemetrie, und es verbindet sich überhaupt nie mit dem Internet - das ganze Werkzeug funktioniert auch bei gezogenem Netzwerkkabel.

Das Fenster hat zwei Bedienelemente, die nach außen führen, und die nennen wir lieber, statt sie Sie selbst finden zu lassen: die Schaltflächen Donate und GitHub in der Titelleiste. Ein Klick auf eine davon übergibt eine Adresse an Ihren Browser, und Ihr Browser baut die Verbindung auf. Chrono Mock öffnet in beiden Fällen keine Verbindung, und nichts, was es über Ihre Anwendung gemessen hat, geht irgendwohin.