Un petit peu d'anglais ne fait jamais de mal :
System Time
System time is the current date and time of day. The system keeps time so that your applications have ready access to accurate time. The system bases system time on [h]coordinated universal time[/h] (UTC). UTC-based time is loosely defined as the current date and time of day in Greenwich, England.
When the system first starts, it sets the system time to a value based [h]on the real-time clock of the computer[/h] and then [h]regularly updates[/h] the time. To retrieve the system time, use the GetSystemTime function. [h]GetSystemTime[/h] copies the time to a SYSTEMTIME structure that contains individual members for month, day, year, weekday, hour, minute, second, and milliseconds. It is easy to display this format to a user.
You can also obtain the system time in file time format using the [h]GetSystemTimeAsFileTime[/h] function. GetSystemTimeAsFileTime copies the time to a FILETIME structure.
To set the system time, use the SetSystemTime function. SetSystemTime assumes you have specified a UTC-based time. If you change the system time, you should send the WM_TIMECHANGE message to all top-level windows by using the SendMessage function.
The GetSystemTimeAdjustment and SetSystemTimeAdjustment functions synchronize the time-of-day clock with another time source using a periodic time adjustment applied at each clock interrupt.
Note that the system can periodically refresh the time by synchronizing with a time source. Because the system time can be adjusted either forward or backward, do not compare system time readings to determine elapsed time. Instead, use one of the methods described in Windows Time.
Bloquer, c'est physiquement possible............(je me prononcerais pas davantage, mais c'est faisable aux dires)
Sinon ca reviendrait à réecrire(le plus simplement possible), avec la même précisionque le system, une même heure au format UTC.(le processeur risque de pas aimé à la longue ^^)
Sinon, tu peux aussi joué avec les APIs pour qu'il renvoi une heure bien précise > ceci est tout à fait envisageable.
> par ex dans l'API GetSystemTime(XP PRO SP2 mis à jour, version 5.1.2600.2180) tu pourrais modifié(kernel32.dll -> tu dois remplacer ta new dll avec un live cd de linux par ex) :
7C80179D 66:8B4D E8 MOV CX,WORD PTR SS:[EBP-18]
7C8017A1 66:8908 MOV WORD PTR DS:[EAX],
wYear7C8017A4 66:8B4D EA MOV CX,WORD PTR SS:[EBP-16]
7C8017A8 66:8948 02 MOV WORD PTR DS:[EAX+2],
wMonth7C8017AC 66:8B4D F6 MOV CX,WORD PTR SS:[EBP-A]
7C8017B0 66:8948 04 MOV WORD PTR DS:[EAX+4],
wDayOfWeek7C8017B4 66:8B4D EC MOV CX,WORD PTR SS:[EBP-14]
7C8017B8 66:8948 06 MOV WORD PTR DS:[EAX+6],
wDay7C8017BC 66:8B4D EE MOV CX,WORD PTR SS:[EBP-12]
7C8017C0 66:8948 08 MOV WORD PTR DS:[EAX+8],
wHour7C8017C4 66:8B4D F0 MOV CX,WORD PTR SS:[EBP-10]
7C8017C8 66:8948 0A MOV WORD PTR DS:[EAX+A],
wMinute7C8017CC 66:8B4D F2 MOV CX,WORD PTR SS:[EBP-E]
7C8017D0 66:8948 0C MOV WORD PTR DS:[EAX+C],
wSecond7C8017D4 66:8B4D F4 MOV CX,WORD PTR SS:[EBP-C]
7C8017D8 66:8948 0E MOV WORD PTR DS:[EAX+E],
wMillisecondsCe qui est mis en gras doit être remplacé par une valeur >FFFFh au maximum.(>word)
NB:il faut aussi tenir compte que qu'il n'y pas plus de 60 minutes donc pas plus de 003Ch pour
wMinuteSinon à la limite, si tu ne veux pas modifié la .dll de façon permanente, tu peux utiliser l'API SetSystemTime à chaque nouveau Process :
> check:
invoke Sleep, 100 ;//fréquence -> 100 millisecondes
invoke EnumProcess, addr param1, param2, addr param3
invoke lstrlen, addr param1
shr eax, 2
cmp eax, precedant
je check
invoke SetSystemTime, addr param4
jmp check
Ca ferait faire un retour à une heure prédéfinie, et ca gènerait pas les autres process en cours vu que le temps s'écoulera. (faut pas oublié d'avertir les autres progi, que le temps system a changer > voir instr en anglais ^)
Voilà ce qui me vient à la tête.