Domande e risposte
Risposte brevi, comprese quelle su ciò che questo strumento non farà.
Cambia l'orologio del mio computer?
No, e non lo farà mai - è tutto il senso dello strumento. L'ora spostata è visibile a un solo processo e ai figli che avvia. L'accesso al dominio, i certificati, Windows Update e tutte le altre applicazioni vedono la data reale per tutto il tempo.
Servono i diritti di amministratore?
Non per eseguirlo. Gli zip non richiedono un installer, non scrivono nulla nel registro e
funzionano da una cartella che puoi portare su una chiavetta USB. L'.msi
facoltativo richiede diritti di amministratore una volta, per installare, perché si installa
per ogni account del computer.
Funzionerà con la mia applicazione?
La risposta onesta è che nessuno strumento di questo tipo può prometterlo in anticipo - perciò questo lo misura. Ogni sessione si conclude con un verdetto (funziona, funziona in parte, non funziona), l'elenco dei canali temporali che l'applicazione ha davvero letto con il numero di chiamate di ciascuno, e l'elenco dei canali che non sono stati coperti.
Un'applicazione può leggere l'orologio da una via che nulla ha intercettato - da un server, da un database, attraverso uno strato del runtime. Quando succede, lo vieni a sapere, invece di restare nell'ipotesi che il test sia passato.
Funziona con le applicazioni .NET, Java e Python?
In parte, e le differenze contano. Tutte e tre sono contrassegnate come sperimentali: funzionano sui target di prova, non sono state testate in modo ampio, e l'audit integrato è la tua fonte di verità, non questo paragrafo.
- .NET - sono coperti l'orologio a muro e il fuso orario della sessione.
Stopwatchresta sul vero contatore ad alta risoluzione, a meno che tu non attivi la sua scalatura. - Java - sono coperti l'orologio a muro, il tempo trascorso e il fuso orario
della sessione. Il fuso arriva come scostamento fisso, con un nome come
GMT+05:30. - Python - sono coperti
time.timeedatetime.perf_counter, emonotonicda Python 3.13 in poi, stanno sul contatore ad alta risoluzione a meno che tu non attivi la scalatura.
Funziona con le applicazioni Electron e Chromium?
Sì, con un meccanismo diverso. Il loro orologio vive in un renderer isolato che l'iniezione non raggiunge, quindi l'applicazione viene avviata con una porta di debug e un profilo pulito e usa e getta, e le sue API di tempo JavaScript vengono portate sull'orologio della sessione - anche dentro i Web Worker, dove spesso si trova davvero il timer.
Un limite da conoscere: il processo principale di un'applicazione Electron gira in Node, che la sessione non raggiunge, quindi mantiene l'orologio reale, e il rapporto lo dice. Le pagine e i loro worker leggono il fuso orario della sessione.
Come funziona la modalità Chromium ed Electron - cosa raggiunge, cosa no, e perché la porta di debug è la parte a cui prestare attenzione.
Posso far scorrere il tempo più veloce di quello reale?
Sì. Scegli un moltiplicatore intero e l'orologio dell'applicazione corre a quella velocità -
x1440 trasforma un giorno in un minuto, quindi una prova di 30 giorni scade in circa
mezz'ora. Puoi anche congelare l'orologio, o saltare in avanti e indietro a sessione in corso.
I conti alla rovescia e i timer stanno su un asse a parte, e accelerarli è un interruttore a parte, perché scalarli cambia un comportamento da cui molte applicazioni dipendono.
Posso cambiare solo il fuso orario, senza cambiare la data?
Sì. La sessione porta con sé il proprio scostamento fisso, visibile a quel processo mentre il fuso del sistema resta esattamente dov'era. È la parte che la maggior parte degli strumenti salta, ed è così che si riproduce il bug che compare solo per il cliente a cinque fusi orari di distanza.
E l'ora legale?
Il fuso della sessione è uno scostamento fisso senza ora legale. Una sessione impostata sulla Polonia resta allo scostamento scelto sia che il suo orologio indichi marzo sia che indichi luglio, quindi un'esecuzione che attraversa un vero cambio d'ora si discosta di un'ora da ciò che quel fuso mostrerebbe davvero.
Far attraversare a un'applicazione un passaggio all'ora legale non è dunque qualcosa che questo strumento fa ancora, e il calcolatore di date lo dice invece di tirare a indovinare.
Perché il mio antivirus lo segnala?
Perché iniettare una libreria in un altro processo è una tecnica Windows legittima e documentata che
usa anche il malware. È un falso positivo innescato dalla tecnica, non da qualcosa che lo strumento
fa alla tua macchina. La libreria iniettata è chrono_hook.dll, compilata dal codice
sorgente pubblico sotto GPL-3.0, e puoi ricompilarla tu stesso. La modalità Chromium ed Electron non
inietta affatto.
La pagina di download dice cosa fare.
Serve per prolungare una prova o aggirare una licenza?
No, e non è fatto per questo. Chrono Mock serve a testare software di cui sei responsabile - la scadenza della tua licenza, la tua logica di rinnovo, il tuo report di fine mese. Nessun esempio, scenario o pagina qui mostrerà mai come prolungare il periodo di prova del software di qualcun altro.
Il software con protezione della licenza è in effetti il caso con più probabilità di mettere in scacco questo strumento: il codice anti-manomissione spesso legge l'ora attraverso vie scelte apposta per essere difficili da intercettare, e riportare indietro un orologio è una condizione che quel software è scritto per rilevare. È prevista una funzione nell'altro verso - una modalità che esegue una serie di manipolazioni del tempo contro la tua applicazione e riferisce quali sono state rilevate dalla tua protezione.
Posso usarlo nell'integrazione continua?
Sì. La build da riga di comando è un download separato di circa 2,4 MB senza alcun runtime da
installare. Ogni comando comprende --json e termina con un codice su cui una pipeline
può diramare, e una sessione può scrivere la propria prova in un file.
In cosa è diverso da RunAsDate?
RunAsDate intercetta cinque funzioni dell'orologio a muro e lo fa bene. Questo strumento osserva 44 canali temporali e ne porta 30 sull'orologio della sessione, può accelerare l'orologio, dà al processo il suo fuso orario, segue i processi figlio e ti dice poi quali canali sono stati davvero coperti. È anche open source, mentre RunAsDate è freeware chiuso. RunAsDate, dal canto suo, sa agganciarsi a un'applicazione già in esecuzione, e questo strumento no.
Il confronto completo dice anche dove RunAsDate è la scelta migliore.
È libfaketime per Windows?
Nello spirito, sì - la stessa idea di spostare il tempo per un programma e non per la macchina. In
pratica è un'implementazione diversa, perché
libfaketime dipende da
LD_PRELOAD, che su Windows non esiste. C'è
una pagina proprio su questo.
È gratuito, e manda qualcosa da qualche parte?
Gratuito e open source sotto GPL-3.0. Nessun account, nessuna telemetria, e non si connette mai a internet - l'intero strumento funziona con il cavo di rete staccato.
La finestra ha due controlli che portano fuori da essa, ed è meglio nominarli che lasciarteli scoprire: i pulsanti Donate e GitHub nella barra del titolo. Premendone uno si consegna un indirizzo al tuo browser, ed è il tuo browser a connettersi. Chrono Mock non apre alcuna connessione in nessuno dei due casi, e nulla di ciò che ha misurato sulla tua applicazione va da nessuna parte.