Code source d'une application C# compilée

Code source d'une application C# compilée - C#/.NET managed - Programmation

Marsh Posté le 31-10-2006 à 20:00:08    

:)  
 
Hello !
 
Est-il techniquement possible de remonter au code source d'une application C# compilée ??? (cette question serait d'ailleurs applicable à d'autres langages ...)

Reply

Marsh Posté le 31-10-2006 à 20:00:08   

Reply

Marsh Posté le 31-10-2006 à 20:09:51    

y'a une différence entre les langages compilé et les langages type Java, c#:
pour les langages compilés: http://fr.wikipedia.org/wiki/D%C3%A9sassembleur
 
Pour c#, il semble y avoir des décompilateurs:
http://www.google.fr/search?hs=VHJ [...] cher&meta=
 


---------------
Töp of the plöp
Reply

Marsh Posté le 31-10-2006 à 20:28:49    

Merci pour ces infos ...
 
Voilà donc qui n'est pas très rassurant si on souhaite protéger son code source ???

Reply

Marsh Posté le 31-10-2006 à 21:17:51    

C'est pour ça qu'il existe des obfuscateurs :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 01-11-2006 à 10:49:26    

regarde du coté de reflector tu vas avoir peur...

Reply

Marsh Posté le 01-11-2006 à 18:34:47    

ta qua voir reflector avec son add in pour decompiler une source complete mais bonjour le resultat !


---------------
http://www.tutoworld.com - http://www.tutoworld.com/forum
Reply

Marsh Posté le 01-11-2006 à 18:35:49    

En effet, ça fait peur ...
 
Autant connaitre ces logiciels décompilateurs pour prévoir une bonne protection (bien qu'il semble qu'aucune protection ne soit vraiment infaillible ...)
 
Il me semble que C# est plus crackable qu'aucun autre langage. Je me trompe ???

Reply

Marsh Posté le 01-11-2006 à 18:37:31    

exact en C# ca marche assez bien mais en vb.NET c mort ^^
xenocode est un bon logiciel pour proteger son code !


---------------
http://www.tutoworld.com - http://www.tutoworld.com/forum
Reply

Marsh Posté le 01-11-2006 à 19:52:26    

fdiedler a écrit :

exact en C# ca marche assez bien mais en vb.NET c mort ^^
xenocode est un bon logiciel pour proteger son code !


N'importe, quoi, les 2 sont compilés en IL donc bon....
Tu peux même décompiler du C# en vb.net ou autre ou vice versa

Reply

Marsh Posté le 02-11-2006 à 11:07:10    

a noter que dans VS 2005 y'a déjà tout ce qu'il faut pour protéger son EXE. :spamafote:

Message cité 1 fois
Message édité par MagicBuzz le 02-11-2006 à 11:07:16
Reply

Marsh Posté le 02-11-2006 à 11:07:10   

Reply

Marsh Posté le 02-11-2006 à 18:02:05    

MagicBuzz a écrit :

a noter que dans VS 2005 y'a déjà tout ce qu'il faut pour protéger son EXE. :spamafote:


 
Pourrais tu STP nous en dire un peu plus à ce sujet ?
 
Merci !!

Reply

Marsh Posté le 02-11-2006 à 19:11:36    

Dans VS2005 (autre que version express) tu as Dotfuscator community edition qui te permet d'obfusquer ton code

Reply

Marsh Posté le 02-11-2006 à 19:25:15    

Ca plus la signature numérique, qui interdit toute modification de l'EXE une fois compilé (sinon on le détecte car la clé n'est plus valide). Ceci dit, autant ça protège contre les gens mal intentionnés qui pourraient injecter un crack ou virus, autant ça n'empêche pas de décompiler en effet.

Reply

Marsh Posté le 02-11-2006 à 21:10:18    

Sans être indiscret, c'est quel type d'application que tu souhaites protéger?

Reply

Marsh Posté le 02-11-2006 à 21:27:22    

Un fichier JavaScript dans un site web pardi :o :ange:

Reply

Marsh Posté le 03-11-2006 à 09:38:29    

MagicBuzz a écrit :

Ca plus la signature numérique, qui interdit toute modification de l'EXE une fois compilé (sinon on le détecte car la clé n'est plus valide). Ceci dit, autant ça protège contre les gens mal intentionnés qui pourraient injecter un crack ou virus, autant ça n'empêche pas de décompiler en effet.


 
Rien n'empeche de decompiler, modifier, recompiler avec une clef regeneree en faisant attention à bien reprendre les valeurs de public token key là ou on y fait reference ;)
 
Le dotnet, ca arrache, mais question secu du code, c'est pas ça du tout  [:spamafote] (perso, j'ai encore rien vu permettant de proteger à 100% le code, même les trucs obfuscé à mort, en pure code IL on arrive toujours à modifier)

Reply

Marsh Posté le 03-11-2006 à 11:45:32    

ixemul a écrit :

Rien n'empeche de decompiler, modifier, recompiler avec une clef regeneree en faisant attention à bien reprendre les valeurs de public token key là ou on y fait reference ;)
 
Le dotnet, ca arrache, mais question secu du code, c'est pas ça du tout  [:spamafote] (perso, j'ai encore rien vu permettant de proteger à 100% le code, même les trucs obfuscé à mort, en pure code IL on arrive toujours à modifier)


d'un autre côté, le C c'est pas mieu... ça se désassemble sans problème :spamafote:
 
la protection du code, c'est pipo et branlo vont au ski :spamafote:

Reply

Marsh Posté le 03-11-2006 à 11:53:29    

MagicBuzz a écrit :

d'un autre côté, le C c'est pas mieu... ça se désassemble sans problème :spamafote:
 
la protection du code, c'est pipo et branlo vont au ski :spamafote:


 
Tout à fait d'accord avec toi, mais le dotnet décompilé (que ce soit par reflector, ou par ildasm) c'est quand même Super lisible (plus que du C décompilé)

Reply

Marsh Posté le 03-11-2006 à 11:56:24    

ouais m'enfin le C avant compilation, c'est déjà pas lisible alors... :whistle:

Reply

Marsh Posté le 03-11-2006 à 11:56:53    

MagicBuzz a écrit :

ouais m'enfin le C avant compilation, c'est déjà pas lisible alors... :whistle:


 
[:ministry]

Reply

Marsh Posté le 03-11-2006 à 11:58:50    

Enfin bref, ce que je veux dire surtout, c'est que des applications comme les cracks ou autres patchs no-CD etc. voient généralement le jour à partir d'une interprétation de l'assembleur directement. Donc à partir de là, on se rend bien compte que vouloir protéger son programme contre la décompilation, ça sert à rien.
D'autant il existe certainement un tas d'outils qui permettent "d'interpréter" ce que fait un bout de code ASM afin de débrousailler le terrain.

Reply

Marsh Posté le 03-11-2006 à 12:11:39    

Example d'un soft commercial (dont je tairais le nom :o) décompilé en IL
 

Code :
  1. .method family hidebysig instance bool
  2.           CheckLicenseKeys([out] string& errorMessage) cil managed
  3.   {
  4.     // Code size       28 (0x1c)
  5.     .maxstack  2
  6.     .locals init (class xxx.yyy.Licensing V_0)
  7.     IL_0000:  ldarg.0
  8.     IL_0001:  newobj     instance void xxx.yyy.Licensing::.ctor(class xxx.yyy.zzz)
  9.     IL_0006:  stloc.0
  10.     IL_0007:  ldarg.1
  11.     IL_0008:  ldloc.0
  12.     IL_0009:  callvirt   instance string xxx.yyy.Licensing::CheckLicenseKeys()
  13.     IL_000e:  stind.ref
  14.     IL_000f:  ldsfld     string [mscorlib]System.String::Empty
  15.     IL_0014:  ldarg.1
  16.     IL_0015:  ldind.ref
  17.     IL_0016:  call       bool [mscorlib]System.String::op_Equality(string,
  18.                                                                    string)
  19.     IL_001b:  ret
  20.   } // end of method RadControl::CheckLicenseKeys


 
Cette fonction renvoi un booléen et rempli la chaine errorMessage aprés vérification de la licence, il suffit de remplacer le code par

Code :
  1. .method family hidebysig instance bool
  2.           CheckLicenseKeys([out] string& errorMessage) cil managed
  3.   {
  4.     // Code size       28 (0x1c)
  5.     .maxstack  2
  6.     .locals init (class xxx.yyy.Licensing V_0)
  7.     IL_0000:  ldarg.0
  8.     IL_0001:  ldsfld     string [mscorlib]System.String::Empty
  9.     IL_0006:  stloc.0
  10.     IL_0007:  ldc.i4.0
  11.     IL_0008:  ret
  12.    } // end of method RadControl::CheckLicenseKeys


 
La chaine reste à String.Empty puis on renvoie True et la verif de licence est chuntée...
 
Et le tour est joué :/

Reply

Marsh Posté le 03-11-2006 à 12:17:14    

Bof, moi un coup j'ai cracké une DLL permettant de traîter des images.
Elle inscrivait un message "Unregistred version" qu'elle foutait en filligramme un peu partout sur l'image.
J'ai ouvert le binaire avec un éditeur Hexa, et bêtement remplacé le message par une suite d'espaces, et hop ! Plus de message :D
 
Je crois bien que c'était encore plus facile :D

Reply

Marsh Posté le 03-11-2006 à 12:22:10    

MagicBuzz a écrit :

Bof, moi un coup j'ai cracké une DLL permettant de traîter des images.
Elle inscrivait un message "Unregistred version" qu'elle foutait en filligramme un peu partout sur l'image.
J'ai ouvert le binaire avec un éditeur Hexa, et bêtement remplacé le message par une suite d'espaces, et hop ! Plus de message :D
 
Je crois bien que c'était encore plus facile :D


 
En dotnet on peut pas modifier en Hexa (signature...  :whistle: ) mais un bon coup d'ILDASM couplé à reflector pour les partie un peu hardue (quoique maintenant...  :whistle: ), un bon editeur genre SCITE, un find & replace pour les codes obfuscés qui ne passe pas à la recompile, recréation d'une clé (sn -k ...), puis recompile avec ILASM avec les params qui vont biens (SN, RESOURCE, etc...) et en moins de 10 mins avec un peu d'habitude t'as claqué le fusible :D  (Et si t'es vraiment habitué, tu peux aller jusqu'a changer les namespaces, modifier les interfaces et avec ilmerge sortir une assembly sans aucune possibilité de tracage...)
 
Bref, dotnet c'est pas sécure et on boucle =)

Reply

Marsh Posté le 03-11-2006 à 12:58:11    

Mais si en C c'est pas mieux niveau sécurité, alors autant utiliser C# ...
 
En fait, ça ne m'inquiète pas vraiment que des utilisateurs puissent court-circuiter les licences (après tout le piratage par copie c'est un super moyen de se faire connaitre ...).
 
Ma crainte, c'est surtout de mal protéger des algorithmes et que ceux-ci soient adaptés sur d'autres programmes ...

Reply

Marsh Posté le 03-11-2006 à 13:09:59    

vladvad a écrit :

Mais si en C c'est pas mieux niveau sécurité, alors autant utiliser C# ...
 
En fait, ça ne m'inquiète pas vraiment que des utilisateurs puissent court-circuiter les licences (après tout le piratage par copie c'est un super moyen de se faire connaitre ...).
 
Ma crainte, c'est surtout de mal protéger des algorithmes et que ceux-ci soient adaptés sur d'autres programmes ...


 
C'est pas mieux....

Reply

Marsh Posté le 03-11-2006 à 13:40:47    

Dans tous les cas, il y a des lois qui protègent ton programme et ton code.
Autant dans le premier cas, ça te fait de la pub, et il est virtuellement impossible de faire la chasse aux pirates, autant dans le second, il est aisé de trouver quelques éditeurs utilisent tes algo et un procès sera forcément plus juteux.
 
Bref, la technique doit laisser place à la lois, elle est là pour :spamafote:

Reply

Marsh Posté le 03-11-2006 à 13:51:56    

MagicBuzz a écrit :

Dans tous les cas, il y a des lois qui protègent ton programme et ton code.
Autant dans le premier cas, ça te fait de la pub, et il est virtuellement impossible de faire la chasse aux pirates, autant dans le second, il est aisé de trouver quelques éditeurs utilisent tes algo et un procès sera forcément plus juteux.
 
Bref, la technique doit laisser place à la lois, elle est là pour :spamafote:


 
En même temps, rien ne protège un algo (pas de brevet logiciel en france), donc même si qqun decompile le soft, retranscrit l'algo (pas tel quel bien sûr), il n'y a rien à faire, aucune protection. Le coup des procés ca ne marche qu'aux US ou la loi prevoit un titre de propriété intellectuelle pour le developpement logiciel.

Reply

Marsh Posté le 03-11-2006 à 15:37:40    

Je vois aussi 2 autres problèmes à poursuivre un copieur en justice :
 
- Le prix d'une action en justice : inabordable pour un indépendant ou une petite boite.
- La constitution des preuves : à part décompiler les sources du copieur !!!  :pt1cable:
 
Donc, rien ne vaut le secret (mais visiblement, c'est techniquement impossible à garantir)  
 

Reply

Marsh Posté le 03-11-2006 à 16:21:14    

ixemul a écrit :

En même temps, rien ne protège un algo (pas de brevet logiciel en france), donc même si qqun decompile le soft, retranscrit l'algo (pas tel quel bien sûr), il n'y a rien à faire, aucune protection. Le coup des procés ca ne marche qu'aux US ou la loi prevoit un titre de propriété intellectuelle pour le developpement logiciel.


biensur que si.
tu ne peux pas le déposer "seul".
mais à partir du moment où ton algo est utilisé dans une application, alors il est protégé au même titre que l'appli.
par contre, oui, tu ne peux pas interdire une personne de reprendre la même idée pour faire autrechose.
 
ceci dit, la décompilation est illégale en france, et c'est facilement prouvable en faisant une étude du code de l'appli concurrente.

Reply

Marsh Posté le 03-11-2006 à 17:51:55    

MagicBuzz a écrit :

ceci dit, la décompilation est illégale en france, et c'est facilement prouvable en faisant une étude du code de l'appli concurrente.


 
Ah bon ? Il y a un texte de loi qui interdit la décompilation ?
 
Car le problème, c'est comment étudier le code de l'appli concurrente soupçonnée de piratage sans à son tour ... le décompiler ! :ouch:

Message cité 1 fois
Message édité par vladvad le 03-11-2006 à 19:23:35
Reply

Marsh Posté le 06-11-2006 à 19:31:03    

ixemul a écrit :

En même temps, rien ne protège un algo (pas de brevet logiciel en france), donc même si qqun decompile le soft, retranscrit l'algo (pas tel quel bien sûr), il n'y a rien à faire, aucune protection. Le coup des procés ca ne marche qu'aux US ou la loi prevoit un titre de propriété intellectuelle pour le developpement logiciel.


t'es sûr de ça ?
j'ai le souvenir d'un cours de droit où on m'avait dit qu'en France il y a des protections de la propriété intellectuelle pour le dev logiciel justement  :)

Reply

Marsh Posté le 06-11-2006 à 19:55:34    

vladvad a écrit :

Ah bon ? Il y a un texte de loi qui interdit la décompilation ?
 
Car le problème, c'est comment étudier le code de l'appli concurrente soupçonnée de piratage sans à son tour ... le décompiler ! :ouch:


en ouvrant une instruction légale, et en obtenant du juge une dérogation, ou plus simplement en éxigeant de la défense qu'elle fournisse les sources du logiciel soupçonné.
 
si tu te fais voler un tableau chez toi, t'as pas le droit d'entrer par effraction chez ton voisin. là c'est pareil :spamafote:
 
a noter que la décompilation entre dans deux cadres d'applications de la protection de la propriété intellectuelle :
- dupliquer une application, quelque soit la forme de la copie, si elle est différente de l'originale, n'entre pas dans le cadre du droit à la copie privée. la décompilation transformant la forme de l'application, elle est assimilée à une copie sans authorisation.
- décompiler une application, c'est en altérer la forme et son contenu. tout comme le fait que tu peux être poursuivit en justice pour avoir fait des moustaches à la Joconde, tu es condamnable pour altérer un logiciel.
 
je ne suis pas juriste, il y a très certainement d'autres textes de lois plus précis (notamment, je suis certain que parmis les lois relatives à la CNIL, le mot "décompilation" est présent).

Reply

Marsh Posté le 06-11-2006 à 19:56:36    

Zipo a écrit :

t'es sûr de ça ?
j'ai le souvenir d'un cours de droit où on m'avait dit qu'en France il y a des protections de la propriété intellectuelle pour le dev logiciel justement  :)


exact.
tu peux déposer un brevet pour un concept (pas une idée).
mais tu peux parfaitement déposer un algo à partir du moment où tu en fournit le code lors du brevet.
tout comme tu peux déposer les plans d'une machine ou d'un bâtiment.

Reply

Marsh Posté le 21-11-2006 à 15:58:37    

Sans vouloir casser la baraque, pour se protéger, il existe effectivement les brevet logiciel, mais :
1 - c'est cher
2 - faut faire faire une analyse de l'existant (cher aussi)
3 - faut avoir les moyens de se protéger, c'est à dire pouvoir prouver qu'on utilise tes algorithmes (en gros passer sa vie à décompiler des progs pour voir s'ils utilisent ton code)
4 - faut attaquer en justice celui qui contrevient, et là ça coute encore plus cher
 
Moralité : la protection logicielle est réservé aux riches (entreprise, etc...)
Sous couvert de "protection de l'innovation" et de "propriété intellectuelle", ces belles lois sont là uniquement pour préserver l'intérêt des riches et puissantes entreprises, ou pour asservir les vrais innovateurs à une entreprise riche et puissante.
 
La seule protection efficace pour un simble codeur, à mon humble avis, consiste faire en sorte que personne n'ai intérêt à décompiler ton code.
Comment ? Quelques idées...
- tu le vends une misère, ça coute toujours moins cher pour une entreprise que de faire bosser un codeur spécialiser une semaine (ou plus).
- tu vends le code source hyper-commenté et pas trop cher.
- tu fais une appli qui s'update toute seule, et tu essayes d'aller plus vite fonctionnellement que tes concurrents, en ajoutant des nouvelles fonctionnalités continuellement. Ca découragera les decompilateurs d'avoir à rebosser tout le temps.
- tu fais une archi tellement complexe et entrelacée qu'il sera plus rentable d'acheter le code que de se prendre la tête à décompiler :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed