Sécuriser une application.

Signaler
Messages postés
124
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
10 février 2008
-
Messages postés
616
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
-
Bonjour a tous,

Je suis en train de coder une application que j'aimerais sécuriser un minimum, pour au moins décourager les hacker du dimanche.

Pour commencer, j'ai un login / Mot de passe a entrer que je compare à un hash de SHA256, bon pas de quoi casser des briques ...
Maintenant il faudrait que je me protège plus ou moins efficacement contre le désassemblage et le tracing.

Contre le désassemblage que pensez vous d'une obfuscation et d'une compression upx, en gros est ce que ça tiendra plus de quelques heures (en espérant que le nuisible se décourage vite :) ?
Le point le plus difficile apparemment est d'empêcher qu'un debuggeur s'exécute, voici ce que j'ai trouvé :
En effet un programme peut effacer lui-même les Drx (debug registers ;
registres hardware de debugging) de son propre CONTEXT (cf. structure
CONTEXT de Get/SetThreadContext). La structure CONTEXT est directement
atteignable au travers du SEH.


Mais le problème reste le même, le SEH peut être ou non pris en charge
par le debuggeur, le mieux est encore d'alterner des SEH qui ne font
rien de spécial, et des SEH qui vont s'occuper de tester si l'on est
effectivement débuggé.


Pour un "anti-tracing" (empêcher un débugger de tracer le code de son
application) on peut manipuler le registre EFLAGS (toujours dans un
SEH) en mettant le drapeau TF (trap flag) à 1 dans un SEH. Le trap flag
une fois armé déclenche une exception de type "trap" et les debuggeurs
sont incapables de continuer à tracer...


Le mieux est encore de coupler tout ca avec des méthodes anti-analyse
(junk code, VM, crypto) + une détection de breakpoint (en cherchant
l'opcode 0xCC qui correspond à une INT3) + un CRC pour vérifier
l'intégrité de son propre code : on commence à tenir une protection qui
tient la route :!:





Outch pas facile à voir comment réaliser ça en C#, mais est ce seulement réalisable (puisqu'on ne peut utiliser l'asm) ?
Y a t'il un autre moyen d'empêcher un debuggeur de s'éxecuter, de poser des breakpoints sur notre code en mémoire ?

Voila, j'en ai fini avec mes questions, merci pour vos futur (et intéressante) réponses.

6 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
mouaip... tout en sachant que pour "cracker" ton prog il suffit de le désassembler (ildasm)... avec un peu d'entrainement la modification ne prend que quelques minutes...

donc les protections anti debuggeur... ne servent à rien.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
124
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
10 février 2008

C'est justement pour ça que je veux compliquer la lecture du code désassembler.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
mouaip... mais conbien de temps ca va tenir :)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
124
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
10 février 2008

Bizarrement je n'arrive pas a trouver de documents (en français) sur le sujet !
Je sens que je vais devoir plutot regarder du coté des sites obscures :)
Messages postés
3
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
29 avril 2011

pour la sécurisation il faut faire une astuce qui permet a votre application de marcher a sens unique;
par exemple faire une test au démarrage au l'@ mac de pc qui utilise votre application.

af_h
Messages postés
616
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
6
Bonjour,

Simple curiosité de ma part :
Quel genre d'application mérite une telle protection ?

Est ce une application commerciale et dans ce cas je comprends ta démarche ou est ce une application que tu veux partager avec la communauté ?

Sinon comme le dis sebmafate, de la patience, de la volonté et des connaissances et on fait à peu près tout ce qu'on veut avec un PC.

@pluche

[b]"Chez ceux qui semblent très vertueux se cachent en général la vanité, l'orgueil, l'intolérance".

P.Coehlo (Maktub 2004)/b