2010-11-16 7 views
1

Comment pouvez-vous détecter lorsque l'utilisateur a annulé la date du système? La situation d'utilisation est d'éviter de contourner les licences et le programme devra détecter un retour en arrière qui s'est produit lorsqu'il n'était pas en cours d'exécution.Comment détecter une date de retour système?

Répondre

2

Eh bien, vous pouvez utiliser une base de données intégrée dans votre programme avec une date système cryptée qui est insérée de temps en temps. Si vous voyez qu'une date "plus récente" est antérieure à une date antérieure, vous pouvez voir que quelqu'un a changé la date du système. C'est juste une idée.

+0

Dario - mais l'utilisateur serait en mesure de supprimer la base de données pour réinitialiser le système. –

+0

@Sean: si vous stockez dans cette base de données des paramètres essentiels à l'exécution de votre programme, plus rien ne fonctionnera. En outre, une base de données incorporée écrira son contenu dans un fichier. Un utilisateur peut être assez technique pour le pirater. Faisable, mais pas facile. – darioo

+0

Darioo - J'ai une base de données intégrée et notre installateur a une option pour supprimer le fichier db lors de la désinstallation !!! –

0

Une autre idée consiste à ajouter également une connectivité NTP pour obtenir la date actuelle à partir d'Internet.

+0

Migol - bien sûr, mais s'ils ne sont pas connectés ... –

0

Je pense que je préfère la suggestion de @ darioo d'avoir un journal crypté. Juste pensé que je voudrais ajouter que les changements à l'heure système sont écrites dans le journal de sécurité Windows avec EventID 4616. Voici le message:

The system time was changed. 

Subject:  
    Security ID:    TheComputer\Me  
    Account Name:   Me  
    Account Domain:   TheComputer  
    Logon ID:    0x283df 

Process Information:  
    Process ID:    0x12b8  
    Name:     C:\Windows\System32\dllhost.exe 

Previous Time:    s010-‎11‎-‎15T09:10:32.000000000Z 
New Time:     ‎2010‎-‎11‎-‎15T09:10:32.000000000Z 

This event is generated when the system time is changed. It is normal for the Windows 
Time Service, which runs with System privilege, to change the system time on a regular 
basis. Other system time changes may be indicative of attempts to tamper with the 
computer. 

Bien sûr, le journal d'audit peut être effacé avec les autorisations appropriées. Donc, cela pourrait être contourné. En outre, j'utilise Windows 7 - il est également sur Windows Server 2008 et il existe un équivalent sur Windows Server 2003 (http://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4616). L'avantage de cette approche est que vous pouvez savoir quand l'heure a été changée - ce qu'elle était auparavant et à quoi elle a été changée. Ainsi, vous pouvez détecter un changement négligeable d'une heure ou plus par rapport à un changement d'une année.

+0

Xcaliburp - comme vous le dites, cela pourrait être facilement contourné. –

+0

Eh bien, lorsque le journal d'audit est effacé, il est également audité. Donc, vous savez qu'il a été contourné. Mais cette approche semble manquer d'élégance. – sheikhjabootie

2

Il ne va pas y avoir une solution du logiciel à cela qui ne peut pas être contournée en quelque sorte.

En supposant que vous distribuiez un logiciel de démonstration avec une courte période libre, vous pouvez enregistrer le datetime d'installation dans un journal crypté comme suggéré par @Darioo. L'emplacement du fichier journal doit être quelque part qui n'est pas supprimé par le programme de désinstallation, mais le journal doit être discret et petit.

Si le journal crypté est supprimé, la licence peut expirer automatiquement. Si la date est antérieure (lorsque le journal est déchiffré et lu), la licence peut expirer automatiquement. Vous voudrez peut-être envisager le cas de pointe du mode d'économie d'heure - l'horloge peut revenir en automne/automne d'une heure.

Si l'application est réinstallée, elle conserve l'ancien journal chiffré et l'utilise de telle sorte que la même période de licence continue sans interruption.

Si le journal crypté est supprimé et que le logiciel est réinstallé, il n'aura aucun moyen de faire la différence entre la première installation et une réinstallation afin de le contourner. Cependant, ce sera au-delà de la plupart des utilisateurs en particulier si le journal crypté est bien caché. Par exemple, vous pouvez le masquer comme Alternate Data Stream.

Note: Je vais quitter mon autre poste à moins qu'il ne soit rejeté - dans ce cas, je vais le supprimer car il ne semble pas être si utile.

Questions connexes