Questions et réponses
Des réponses courtes, y compris sur ce que cet outil ne fera pas.
Est-ce que cela modifie l'horloge de mon ordinateur ?
Non, et cela n'arrivera jamais - c'est tout l'intérêt de l'outil. L'heure décalée n'est visible que par un seul processus et les enfants qu'il lance. Votre connexion au domaine, vos certificats, Windows Update et toutes les autres applications voient la vraie date en permanence.
Ai-je besoin des droits d'administrateur ?
Pas pour l'exécuter. Les archives zip n'ont pas besoin d'installateur, n'écrivent rien dans
le registre et fonctionnent depuis un dossier qu'on peut mettre sur une clé USB. Le
.msi facultatif demande des droits d'administrateur une fois, pour installer,
car il s'installe pour chaque compte de la machine.
Est-ce que cela fonctionnera avec mon application ?
La réponse honnête est qu'aucun outil de ce genre ne peut le promettre d'avance - alors celui-ci le mesure. Chaque session se termine par un verdict (fonctionne, fonctionne partiellement, ne fonctionne pas), la liste des canaux de temps que l'application a réellement lus avec le nombre d'appels pour chacun, et la liste des canaux qui n'ont pas été couverts.
Une application peut lire l'horloge par une voie que rien n'a interceptée - depuis un serveur, une base de données, une couche d'exécution. Quand cela arrive, vous en êtes informé, au lieu de supposer que le test est passé.
Cela fonctionne-t-il avec les applications .NET, Java et Python ?
En partie, et les différences comptent. Les trois sont marquées expérimentales : elles fonctionnent sur les cibles de test, n'ont pas été testées largement, et l'audit intégré est votre source de vérité, pas ce paragraphe.
- .NET - l'horloge murale et le fuseau horaire de la session sont couverts.
Stopwatchreste sur le vrai compteur haute résolution, sauf si vous activez sa mise à l'échelle. - Java - l'horloge murale, le temps écoulé et le fuseau horaire de la session
sont couverts. Le fuseau arrive sous forme de décalage fixe, nommé par exemple
GMT+05:30. - Python -
time.timeetdatetimesont couverts.perf_counter, etmonotonicà partir de Python 3.13, reposent sur le compteur haute résolution, sauf si vous activez la mise à l'échelle.
Cela fonctionne-t-il avec les applications Electron et Chromium ?
Oui, par un autre mécanisme. Leur horloge vit dans un moteur de rendu isolé que l'injection n'atteint pas : l'application est donc lancée avec un port de débogage et un profil propre et jetable, et ses propres API de temps JavaScript sont placées sur l'horloge de la session - y compris dans les Web Workers, où le minuteur se trouve souvent en réalité.
Une limite à connaître : le processus principal d'une application Electron s'exécute dans Node, que la session n'atteint pas, donc il garde l'horloge réelle, et le rapport le dit. Les pages et leurs workers lisent le fuseau horaire de la session.
Comment fonctionne le mode Chromium et Electron - ce qu'il atteint, ce qu'il n'atteint pas, et pourquoi le port de débogage est le point auquel il faut faire attention.
Puis-je faire s'écouler le temps plus vite que le temps réel ?
Oui. Choisissez un multiplicateur entier et l'horloge de l'application avance à cette vitesse -
x1440 fait d'un jour une minute, si bien qu'un essai de 30 jours expire en une demi-heure
environ. Vous pouvez aussi figer l'horloge, ou sauter en avant et en arrière en pleine session.
Les comptes à rebours et les minuteurs sont sur un axe distinct, et les accélérer est un interrupteur distinct, parce que leur mise à l'échelle change un comportement dont beaucoup d'applications dépendent.
Puis-je ne changer que le fuseau horaire, sans changer la date ?
Oui. La session porte son propre décalage fixe, visible de ce processus pendant que le fuseau du système reste exactement où il était. C'est ce que la plupart des outils omettent, et c'est ainsi que l'on reproduit le bug qui n'apparaît que chez le client situé à cinq fuseaux horaires de là.
Et l'heure d'été ?
Le fuseau de la session est un décalage fixe sans heure d'été. Une session réglée sur la Pologne reste au décalage choisi, que son horloge indique mars ou juillet : une exécution qui franchit un vrai changement d'heure dérive donc d'une heure par rapport à ce que ce fuseau afficherait réellement.
Faire traverser un changement d'heure d'été à une application n'est donc pas encore possible avec cet outil, et le calculateur de dates le dit au lieu de deviner.
Pourquoi mon antivirus le signale-t-il ?
Parce qu'injecter une bibliothèque dans un autre processus est une technique Windows légitime et
documentée que les logiciels malveillants utilisent aussi. C'est un faux positif déclenché par la
technique, pas par quoi que ce soit que l'outil fait à votre machine. La bibliothèque injectée est
chrono_hook.dll, construite à partir du code source public sous GPL-3.0, et vous
pouvez la reconstruire vous-même. Le mode Chromium et Electron n'injecte rien du tout.
La page de téléchargement dit quoi faire.
Est-ce un moyen de prolonger un essai ou de contourner une licence ?
Non, et il n'est pas conçu pour cela. Chrono Mock sert à tester des logiciels dont vous êtes responsable - votre propre expiration de licence, votre propre logique de renouvellement, votre propre rapport de fin de mois. Aucun exemple, aucun scénario et aucune page ici ne montrera jamais comment prolonger la période d'essai d'un logiciel qui n'est pas le vôtre.
Les logiciels protégés par licence sont en fait le cas le plus susceptible de mettre cet outil en échec : le code antifalsification lit souvent l'heure par des voies choisies exprès pour être difficiles à intercepter, et un retour en arrière de l'horloge est une condition que ces logiciels sont écrits pour détecter. Une fonctionnalité allant dans l'autre sens est prévue - un mode qui exécute une série de manipulations du temps contre votre propre application et indique lesquelles votre protection a détectées.
Puis-je l'utiliser en intégration continue ?
Oui. La version en ligne de commande est un téléchargement séparé d'environ 2,4 Mo, sans
environnement d'exécution à installer. Chaque commande comprend --json et se termine
par un code sur lequel un pipeline peut bifurquer, et une session peut écrire sa preuve dans un
fichier.
En quoi est-ce différent de RunAsDate ?
RunAsDate intercepte cinq fonctions d'horloge murale et le fait bien. Cet outil observe 44 canaux de temps et en place 30 sur l'horloge de la session, peut accélérer l'horloge, donne au processus son propre fuseau, suit les processus enfants et vous dit ensuite quels canaux ont été réellement couverts. Il est aussi open source, là où RunAsDate est un freeware fermé. RunAsDate, de son côté, sait s'attacher à une application déjà lancée, ce que cet outil ne fait pas.
La comparaison complète dit aussi dans quels cas RunAsDate est le meilleur choix.
Est-ce libfaketime pour Windows ?
Dans l'esprit, oui - la même idée de déplacer le temps pour un programme plutôt que pour la
machine. En pratique, c'est une implémentation différente, car
libfaketime dépend de
LD_PRELOAD, qui n'existe pas sous Windows. Il y a
une page consacrée à ce sujet.
Est-il gratuit, et envoie-t-il quelque chose quelque part ?
Gratuit et open source sous GPL-3.0. Sans compte, sans télémétrie, et il ne se connecte jamais à Internet - l'outil entier fonctionne câble réseau débranché.
La fenêtre comporte deux contrôles qui mènent vers l'extérieur, autant les nommer plutôt que vous laisser les découvrir : les boutons Donate et GitHub dans la barre de titre. Un clic sur l'un d'eux transmet une adresse à votre navigateur, et c'est votre navigateur qui se connecte. Chrono Mock n'ouvre aucune connexion dans les deux cas, et rien de ce qu'il a mesuré à propos de votre application ne part nulle part.