Întrebări și răspunsuri
Răspunsuri scurte, inclusiv cele despre ce nu va face acest instrument.
Îmi schimbă ceasul calculatorului?
Nu, și nu o va face niciodată - acesta este tot rostul instrumentului. Ora mutată este vizibilă pentru un singur proces și pentru copiii pe care îi pornește. Autentificarea ta în domeniu, certificatele, Windows Update și toate celelalte aplicații văd în tot acest timp data reală.
Am nevoie de drepturi de administrator?
Nu pentru a-l rula. Arhivele zip nu au nevoie de instalator, nu scriu nimic în registru și
rulează dintr-un folder pe care îl poți ține pe un stick USB. .msi-ul opțional
are nevoie o dată de drepturi de administrator, pentru instalare, pentru că se instalează
pentru fiecare cont de pe calculator.
Va funcționa cu aplicația mea?
Răspunsul onest este că niciun instrument de acest fel nu poate promite asta dinainte - așa că acesta o măsoară. Fiecare sesiune se încheie cu un verdict (funcționează, funcționează parțial, nu funcționează), lista canalelor de timp pe care aplicația le-a citit efectiv, cu un număr de apeluri pentru fiecare, și lista canalelor care nu au fost acoperite.
O aplicație poate citi ceasul pe o cale pe care nimic nu a interceptat-o - de la un server, dintr-o bază de date, printr-un strat al runtime-ului. Când se întâmplă asta, ești informat, în loc să fii lăsat să presupui că testul a trecut.
Funcționează cu aplicații .NET, Java și Python?
Parțial, iar diferențele contează. Toate trei sunt marcate experimentale: funcționează pe țintele de test, nu au fost testate pe scară largă, iar auditul încorporat este sursa ta de adevăr, nu acest paragraf.
- .NET - ceasul de perete și fusul orar al sesiunii sunt acoperite.
Stopwatchrămâne pe contorul real de înaltă rezoluție, dacă nu optezi pentru scalarea lui. - Java - ceasul de perete, timpul scurs și fusul orar al sesiunii sunt acoperite.
Fusul ajunge ca un decalaj fix, numit de exemplu
GMT+05:30. - Python -
time.timeșidatetimesunt acoperite.perf_counter, șimonotonicîncepând cu Python 3.13, stau pe contorul de înaltă rezoluție, dacă nu optezi.
Funcționează cu aplicații Electron și Chromium?
Da, printr-un mecanism diferit. Ceasul lor trăiește într-un renderer izolat în care injecția nu ajunge, așa că aplicația este lansată cu un port de depanare și cu un profil curat, de unică folosință, iar propriile ei API-uri JavaScript de timp sunt puse pe ceasul sesiunii - inclusiv în Web Worker-e, unde de multe ori trăiește de fapt temporizatorul.
O limită de știut: procesul principal al unei aplicații Electron rulează în Node, la care sesiunea nu ajunge, deci păstrează ceasul real, iar raportul spune asta. Paginile și workerii lor citesc fusul orar al sesiunii.
Cum funcționează modul Chromium și Electron - la ce ajunge, la ce nu și de ce portul de depanare este partea de care să fii conștient.
Pot face timpul să meargă mai repede decât timpul real?
Da. Alege un multiplicator întreg, iar ceasul aplicației merge la acea viteză - x1440
face dintr-o zi un minut, așa că o probă de 30 de zile expiră în aproximativ o jumătate de oră. Poți
și să oprești ceasul sau să sari înainte și înapoi în timpul sesiunii.
Numărătorile inverse și temporizatoarele stau pe o axă separată, iar accelerarea lor este un comutator separat, pentru că scalarea lor schimbă un comportament de care depind multe aplicații.
Pot schimba doar fusul orar, fără să schimb data?
Da. Sesiunea poartă propriul decalaj fix, vizibil pentru acel proces, în timp ce fusul sistemului rămâne exact unde era. Aceasta este partea pe care majoritatea instrumentelor o sar și așa reproduci bug-ul care apare doar la clientul aflat la cinci fusuri orare distanță.
Dar ora de vară?
Fusul sesiunii este un decalaj fix, fără ora de vară. O sesiune setată pe Polonia rămâne la decalajul ales, indiferent dacă ceasul ei arată martie sau iulie, așa că o rulare care trece peste o tranziție reală se abate cu o oră de la ce ar arăta cu adevărat acel fus.
Trecerea unei aplicații printr-o tranziție la ora de vară nu este deci ceva ce face încă acest instrument, iar calculatorul de date o spune, în loc să ghicească.
De ce îl semnalează antivirusul meu?
Pentru că injectarea unei biblioteci într-un alt proces este o tehnică Windows legitimă,
documentată, pe care o folosește și malware-ul. Este un fals pozitiv declanșat de tehnică, nu de
ceva ce face instrumentul mașinii tale. Biblioteca injectată este chrono_hook.dll,
construită din sursa publică sub GPL-3.0, și o poți recompila singur. Modul Chromium și Electron
nu injectează deloc.
Pagina de descărcare spune ce să faci în privința asta.
Este o cale de a prelungi o probă sau de a ocoli o licență?
Nu, și nu este construit pentru asta. Chrono Mock este pentru testarea software-ului pentru care răspunzi tu - expirarea propriei licențe, propria logică de reînnoire, propriul raport de final de lună. Niciun exemplu, preset sau pagină de aici nu va demonstra vreodată prelungirea perioadei de probă a altcuiva.
Software-ul cu protecție prin licență este de fapt cazul cel mai probabil să învingă acest instrument: codul anti-tamper citește adesea ora pe căi alese deliberat ca să fie greu de interceptat, iar derularea ceasului înapoi este o condiție pe care un asemenea software este scris să o detecteze. Este planificată o funcție îndreptată în sens invers - un mod care rulează o serie de manipulări ale timpului împotriva propriei tale aplicații și raportează pe care le-a prins protecția ta.
Îl pot folosi în integrare continuă?
Da. Build-ul de linie de comandă este o descărcare separată de circa 2,4 MB, fără runtime de
instalat. Fiecare comandă vorbește --json și iese cu un cod pe care un pipeline îl
poate folosi pentru ramificare, iar o sesiune își poate scrie dovezile într-un fișier.
Cu ce diferă de RunAsDate?
RunAsDate interceptează cinci funcții ale ceasului de perete și o face bine. Acest instrument urmărește 44 canale de timp și trece 30 dintre ele pe ceasul sesiunii, poate accelera ceasul, îi dă procesului propriul fus orar, urmărește procesele copil și îți spune apoi care canale au fost cu adevărat acoperite. Este și open source, în timp ce RunAsDate este freeware închis. RunAsDate, la rândul lui, se poate atașa la o aplicație care rulează deja, iar acest instrument nu.
Comparația completă spune și unde RunAsDate este alegerea mai bună.
Este libfaketime pentru Windows?
În spirit, da - aceeași idee de a muta timpul pentru un program, nu pentru mașină. În practică este
o implementare diferită, pentru că
libfaketime depinde de
LD_PRELOAD, care nu există pe Windows. Există
o pagină despre exact asta.
Este gratuit și trimite ceva undeva?
Gratuit și open source sub GPL-3.0. Fără cont, fără telemetrie, și nu comunică deloc cu internetul - întregul instrument funcționează cu cablul de rețea scos.
Fereastra are totuși două controale care duc în exterior, așa că merită numite, nu lăsate să le descoperi singur: butoanele Donate și GitHub din bara de titlu. Apăsarea unuia dintre ele predă o adresă browserului tău, iar browserul este cel care se conectează. Chrono Mock nu deschide nicio conexiune în niciunul dintre cazuri, iar nimic din ce a măsurat despre aplicația ta nu pleacă nicăieri.