Vragen en antwoorden
Korte antwoorden, ook op de vragen over wat dit gereedschap niet doet.
Verandert het de klok van mijn computer?
Nee, en dat zal het nooit doen - dat is het hele punt van het gereedschap. De verschoven tijd is zichtbaar voor één proces en de kinderen die het start. Je domeinaanmelding, je certificaten, Windows Update en elke andere applicatie zien de hele tijd de echte datum.
Heb ik beheerdersrechten nodig?
Niet om het te draaien. De zip-bestanden hebben geen installatieprogramma nodig, schrijven
niets naar het register en draaien vanuit een map die je op een USB-stick kunt zetten. De
optionele .msi heeft eenmalig beheerdersrechten nodig, om te installeren, omdat
hij voor elk account op de machine wordt geïnstalleerd.
Werkt het met mijn applicatie?
Het eerlijke antwoord is dat geen enkel gereedschap van dit soort dat vooraf kan beloven - dus meet dit het in plaats daarvan. Elke sessie eindigt met een oordeel (werkt, werkt gedeeltelijk, werkt niet), de lijst met tijdkanalen die de applicatie werkelijk heeft gelezen met het aantal aanroepen per kanaal, en de lijst met kanalen die niet gedekt waren.
Een applicatie kan de klok lezen via een route die niets heeft onderschept - van een server, uit een database, via een runtimelaag. Als dat gebeurt, hoor je het, in plaats van dat je aanneemt dat de test geslaagd is.
Werkt het met .NET-, Java- en Python-applicaties?
Gedeeltelijk, en de verschillen tellen. Alle drie zijn gemarkeerd als experimenteel: ze werken op de testdoelen, zijn niet breed getest, en de ingebouwde audit is jouw bron van waarheid, niet deze alinea.
- .NET - de wandklok en de sessietijdzone zijn gedekt.
Stopwatchblijft op de echte high-resolution teller, tenzij je de schaling ervan inschakelt. - Java - de wandklok, de verstreken tijd en de sessietijdzone zijn gedekt. De
zone komt aan als een vaste offset, genoemd als
GMT+05:30. - Python -
time.timeendatetimezijn gedekt.perf_counter, en vanaf Python 3.13 ookmonotonic, zitten op de high-resolution teller, tenzij je de schaling inschakelt.
Werkt het met Electron- en Chromium-applicaties?
Ja, via een ander mechanisme. Hun klok leeft in een afgeschermde renderer waar injectie niet bij komt, dus de applicatie wordt gestart met een debugpoort en een schoon wegwerpprofiel, en haar eigen JavaScript-tijd-API's worden op de sessieklok gezet - ook binnen de Web Workers, waar de timer vaak echt zit.
Eén grens die je moet kennen: het hoofdproces van een Electron-toepassing draait in Node, waar de sessie niet bij kan, dus het houdt de echte klok en het rapport zegt dat. De pagina's en hun workers lezen de sessietijdzone.
Hoe de Chromium- en Electron-modus werkt - wat het bereikt, wat niet, en waarom de debugpoort het onderdeel is om op te letten.
Kan ik de tijd sneller laten lopen dan de echte tijd?
Ja. Kies een geheel getal als vermenigvuldiger en de klok van de applicatie loopt in die snelheid -
x1440 maakt van een dag een minuut, dus een proefperiode van 30 dagen verloopt in
ongeveer een half uur. Je kunt de klok ook bevriezen, of tijdens de sessie vooruit en achteruit
springen.
Afteltijden en timers zitten op een aparte as, en die versnellen is een aparte schakelaar, omdat het schalen ervan gedrag verandert waar veel applicaties van afhangen.
Kan ik alleen de tijdzone veranderen, zonder de datum te veranderen?
Ja. De sessie draagt haar eigen vaste offset, zichtbaar voor dat proces terwijl de systeemzone precies blijft waar hij was. Dit is het onderdeel dat de meeste gereedschappen overslaan, en zo reproduceer je de bug die alleen optreedt bij de klant vijf tijdzones verderop.
En de zomertijd?
De sessiezone is een vaste offset zonder zomertijd. Een sessie die op Polen is gezet, blijft op de offset die je koos, of haar klok nu maart of juli aangeeft, dus een run die een echte overgang passeert, wijkt een uur af van wat die zone werkelijk zou tonen.
Een applicatie door een zomertijdovergang sturen is dus iets wat dit gereedschap nog niet doet, en de datumcalculator zegt dat in plaats van te gokken.
Waarom waarschuwt mijn antivirus?
Omdat het injecteren van een bibliotheek in een ander proces een legitieme, gedocumenteerde
Windows-techniek is die ook malware gebruikt. Het is een vals alarm, veroorzaakt door de techniek,
niet door iets wat het gereedschap met je machine doet. De geïnjecteerde bibliotheek is
chrono_hook.dll, gebouwd uit de openbare broncode onder GPL-3.0, en je kunt haar zelf
opnieuw bouwen. De Chromium- en Electron-modus injecteert helemaal niet.
De downloadpagina zegt wat je eraan kunt doen.
Is dit een manier om een proefperiode te verlengen of een licentie te omzeilen?
Nee, en het is er niet voor gebouwd. Chrono Mock is bedoeld om software te testen waarvoor je zelf verantwoordelijk bent - je eigen licentieverloop, je eigen verlengingslogica, je eigen maandrapportage. Geen enkel voorbeeld, scenario of pagina hier zal ooit laten zien hoe je de proefperiode van andermans software verlengt.
Software met licentiebeveiliging is in feite het geval dat dit gereedschap het eerst verslaat: anti-tampercode leest de tijd vaak via routes die bewust moeilijk te onderscheppen zijn gekozen, en een klok terugdraaien is een toestand die zulke software geschreven is om te detecteren. Een functie in de andere richting is gepland - een modus die een reeks tijdmanipulaties uitvoert tegen je eigen applicatie en meldt welke je beveiliging heeft opgemerkt.
Kan ik het gebruiken in continuous integration?
Ja. De opdrachtregelbuild is een aparte download van ongeveer 2,4 MB zonder runtime om te
installeren. Elk commando begrijpt --json en eindigt met een code waarop een pipeline
kan vertakken, en een sessie kan haar bewijs naar een bestand schrijven.
Wat is het verschil met RunAsDate?
RunAsDate onderschept vijf wandklokfuncties en doet dat goed. Deze tool volgt 44 tijdkanalen en zet er 30 op de sessieklok, kan de klok versnellen, geeft het proces een eigen tijdzone, volgt kindprocessen en vertelt je achteraf welke kanalen echt gedekt waren. Hij is ook open source, waar RunAsDate gesloten freeware is. RunAsDate kan zich op zijn beurt koppelen aan een toepassing die al draait, en deze tool niet.
De volledige vergelijking zegt ook waar RunAsDate de betere keuze is.
Is dit libfaketime voor Windows?
In geest wel - hetzelfde idee om de tijd voor één programma te verplaatsen in plaats van voor de
machine. In de praktijk is het een andere implementatie, omdat
libfaketime afhangt van
LD_PRELOAD, dat op Windows niet bestaat. Er is
een pagina over precies dat.
Is het gratis, en stuurt het iets ergens naartoe?
Gratis en open source onder GPL-3.0. Geen account, geen telemetrie, en het maakt helemaal nooit verbinding met internet - het hele gereedschap werkt met de netwerkkabel eruit getrokken.
Het venster heeft wel twee knoppen die naar buiten leiden, dus die noemen we liever dan dat je ze zelf moet vinden: een Donate-knop en een GitHub-knop in de titelbalk. Als je op een van beide drukt, wordt een adres aan je browser doorgegeven, en je browser maakt de verbinding. Chrono Mock opent in geen van beide gevallen een verbinding, en niets wat het over je applicatie heeft gemeten gaat ergens naartoe.