Code source d'une application C# compilée - C#/.NET managed - Programmation
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=
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 ???
Marsh Posté le 31-10-2006 à 21:17:51
C'est pour ça qu'il existe des obfuscateurs
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 !
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 ???
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 !
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 ^^ |
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
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.
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. |
Pourrais tu STP nous en dire un peu plus à ce sujet ?
Merci !!
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
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.
Marsh Posté le 02-11-2006 à 21:10:18
Sans être indiscret, c'est quel type d'application que tu souhaites protéger?
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 (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)
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 |
d'un autre côté, le C c'est pas mieu... ça se désassemble sans problème
la protection du code, c'est pipo et branlo vont au ski
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 |
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é)
Marsh Posté le 03-11-2006 à 11:56:24
ReplyMarsh Posté le 03-11-2006 à 11:56:53
ReplyMarsh 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.
Marsh Posté le 03-11-2006 à 12:11:39
Example d'un soft commercial (dont je tairais le nom ) décompilé en IL
Code :
|
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 :
|
La chaine reste à String.Empty puis on renvoie True et la verif de licence est chuntée...
Et le tour est joué
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
Je crois bien que c'était encore plus facile
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. |
En dotnet on peut pas modifier en Hexa (signature... ) mais un bon coup d'ILDASM couplé à reflector pour les partie un peu hardue (quoique maintenant... ), 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 (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 =)
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 ...
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# ... |
C'est pas mieux....
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
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. |
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.
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 !!!
Donc, rien ne vaut le secret (mais visiblement, c'est techniquement impossible à garantir)
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.
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 !
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
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 ? |
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
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).
Marsh Posté le 06-11-2006 à 19:56:36
Zipo a écrit : t'es sûr de ça ? |
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.
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
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 ...)