Chrono Mock
LimbaRomână

Fă ceasul unei aplicații să meargă mai repede

O probă de 30 de zile durează 30 de zile până expiră, dacă nu poți muta timpul. Sfatul obișnuit este să împingi ceasul sistemului înainte, ceea ce cere drepturi de administrator și târăște după el toate celelalte programe de pe mașină. Aici muți în schimb un singur proces.

Cât de repede

Alege un multiplicator întreg. Ceasul aplicației avansează de atâtea ori mai repede decât cel real, de la orice moment la care pornește sesiunea.

MultiplicatorUn minut real devineUtil pentru
x60o orăjoburi orare, timeout-uri de sesiune, durata de viață a token-urilor
x1440o zitreceri zilnice, o probă de 30 de zile într-o jumătate de oră
x43200o probă de 30 de zileurmărirea întregii probe până se încheie cât citești asta
x525600un anreînnoiri anuale, expirarea certificatelor
x1000000aproape 1,9 anilimita maximă
# Pornește de la ora reală de acum și rulează o zi pe minut
chrono run "C:\apps\test.exe" --mode x1440

# Pornește de la o dată aleasă și accelerează de acolo
chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440

# Ține ceasul complet pe loc, în schimb
chrono run "C:\apps\test.exe" --mode frozen
O înregistrare a unei sesiuni care conduce o altă aplicație Windows. Fereastra din stânga este Chrono Mock, cu ceasul aplicației pe 2038-01-19 urcând de șaizeci de ori mai repede decât viteza reală, în timp ce ceasul real de lângă el se mișcă doar cu câteva secunde. Fereastra din dreapta este aplicația testată, a cărei înregistrare proprie a sesiunii arată că a pornit pe 2038-01-19 și rulează de minute, față de abia o jumătate de minut în cameră.
O sesiune reală, care conduce o aplicație reală. Observă fereastra din dreapta: programul testat și-a înregistrat startul ca 19 ianuarie 2038, iar sesiunea lui a durat minute, în timp ce ceasul din cameră s-a mișcat cu secunde. Viteza este schimbată în timp ce rulează, fără să repornești nimic.

Partea care îi prinde pe oameni nepregătiți: există două ceasuri

Accelerarea ceasului de perete - ceea ce returnează DateTime.Now și echivalentele lui - nu accelerează, de una singură, o numărătoare inversă. Acestea sunt două întrebări diferite pe care o aplicație le poate pune sistemului de operare, iar multe programe măsoară „treizeci de zile” cu a doua, nu cu prima.

De aceea axa duratelor - contoarele de tick-uri, sleep-urile, așteptările și temporizatoarele - este un comutator separat:

  • --scale-duration trece și contoarele de tick-uri, pauzele și timerele pe ceasul sesiunii, iar așteptările pe obiecte sunt numărate și își păstrează durata reală. Fără el, x1440 gonește calendarul înainte, în timp ce un timer de cinci secunde durează tot cinci secunde reale - doar un timer setat pentru o dată și o oră urmează ceasul sesiunii în fiecare sesiune.
  • --scale-qpc scalează suplimentar contorul de înaltă rezoluție. Acolo citesc timpul scurs monotonic din Python 3.13+, Stopwatch din .NET și nanoTime din Java, iar este dezactivat implicit pentru că scalarea lui a destabilizat randarea în teste.

Dacă multiplicatorul pare să nu facă nimic unei numărători inverse, aproape întotdeauna asta este motivul.

# O aplicație cu cronometru: accelerează calendarul ȘI numărătorile inverse
chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration

# O aplicație Python sau .NET care măsoară timpul scurs pe contorul de înaltă rezoluție
chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc

Schimbarea vitezei fără repornire

Multiplicatorul se poate schimba în timpul sesiunii, iar ceasul este reancorat, nu sărit, așa că nu merge niciodată înapoi când viteza scade. Poți și să sari ceasul pur și simplu - înainte sau înapoi, așa cum face un laptop după ce se resincronizează cu un server de timp, cazul care strică orice măsoară timpul scurs fără o protecție.

# Rulează la x60, apoi treci la x1440 după două secunde
chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440

# Rulează, apoi sari ceasul la un moment ales după cinci secunde
chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00

Ce nu va face

  • Nu atinge ceasul sistemului. Acesta este rostul, nu o limitare - dar înseamnă că orice citește ora de la un server, dintr-o bază de date sau de pe altă mașină rămâne neafectat, iar auditul îți va spune când se întâmplă asta.
  • Un salt schimbă ce vede aplicația, nu când se trezește. Pauzele și timerele deja predate nucleului își păstrează durata primită când au fost setate. Cele mai multe aplicații interoghează ceasul, așa că salturile funcționează în practică - dar nu la toate.
  • Nu încetinește timpul. Multiplicatorii sunt numere întregi de la unu în sus, plus un ceas oprit la zero.

Dacă ceva din toate acestea a ajuns la aplicația ta nu este un lucru de presupus. Sesiunea o spune →

Încearcă-l