Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
950 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Code source d'une application C# compilée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code source d'une application C# compilée

n°1468456
vladvad
Posté le 31-10-2006 à 20:00:08  profilanswer
 

:)  
 
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 ...)

mood
Publicité
Posté le 31-10-2006 à 20:00:08  profilanswer
 

n°1468460
_darkalt3_
Proctopathe
Posté le 31-10-2006 à 20:09:51  profilanswer
 

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
n°1468470
vladvad
Posté le 31-10-2006 à 20:28:49  profilanswer
 

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

n°1468479
kadreg
profil: Utilisateur
Posté le 31-10-2006 à 21:17:51  profilanswer
 

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 !
n°1468593
Lamarmotte
Posté le 01-11-2006 à 10:49:26  profilanswer
 

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

n°1468773
fdiedler
http://www.tutoworld.com
Posté le 01-11-2006 à 18:34:47  profilanswer
 

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
n°1468774
vladvad
Posté le 01-11-2006 à 18:35:49  profilanswer
 

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 ???

n°1468775
fdiedler
http://www.tutoworld.com
Posté le 01-11-2006 à 18:37:31  profilanswer
 

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
n°1468817
Lamarmotte
Posté le 01-11-2006 à 19:52:26  profilanswer
 

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

n°1469112
MagicBuzz
Posté le 02-11-2006 à 11:07:10  profilanswer
 

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
mood
Publicité
Posté le 02-11-2006 à 11:07:10  profilanswer
 

n°1469486
vladvad
Posté le 02-11-2006 à 18:02:05  profilanswer
 

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 !!

n°1469528
Lamarmotte
Posté le 02-11-2006 à 19:11:36  profilanswer
 

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

n°1469535
MagicBuzz
Posté le 02-11-2006 à 19:25:15  profilanswer
 

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.

n°1469594
Lamarmotte
Posté le 02-11-2006 à 21:10:18  profilanswer
 

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

n°1469606
MagicBuzz
Posté le 02-11-2006 à 21:27:22  profilanswer
 

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

n°1469740
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 09:38:29  profilanswer
 

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)

n°1469840
MagicBuzz
Posté le 03-11-2006 à 11:45:32  profilanswer
 

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:

n°1469854
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 11:53:29  profilanswer
 

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é)

n°1469856
MagicBuzz
Posté le 03-11-2006 à 11:56:24  profilanswer
 

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

n°1469857
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 11:56:53  profilanswer
 

MagicBuzz a écrit :

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


 
[:ministry]

n°1469859
MagicBuzz
Posté le 03-11-2006 à 11:58:50  profilanswer
 

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.

n°1469870
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 12:11:39  profilanswer
 

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é :/

n°1469879
MagicBuzz
Posté le 03-11-2006 à 12:17:14  profilanswer
 

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

n°1469885
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 12:22:10  profilanswer
 

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 =)

n°1469912
vladvad
Posté le 03-11-2006 à 12:58:11  profilanswer
 

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 ...

n°1469925
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 13:09:59  profilanswer
 

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....

n°1469951
MagicBuzz
Posté le 03-11-2006 à 13:40:47  profilanswer
 

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:

n°1469971
ixemul
Nan mais sans blague ! ⚡
Posté le 03-11-2006 à 13:51:56  profilanswer
 

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.

n°1470176
vladvad
Posté le 03-11-2006 à 15:37:40  profilanswer
 

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)  
 

n°1470235
MagicBuzz
Posté le 03-11-2006 à 16:21:14  profilanswer
 

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.

n°1470299
vladvad
Posté le 03-11-2006 à 17:51:55  profilanswer
 

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
n°1471337
Zipo
Ours bipolaire
Posté le 06-11-2006 à 19:31:03  profilanswer
 

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  :)

n°1471343
MagicBuzz
Posté le 06-11-2006 à 19:55:34  profilanswer
 

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).

n°1471344
MagicBuzz
Posté le 06-11-2006 à 19:56:36  profilanswer
 

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.

n°1479370
_Mose_
Lonesome coder
Posté le 21-11-2006 à 15:58:37  profilanswer
 

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 :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Code source d'une application C# compilée

 

Sujets relatifs
Adapter ce code pour une page PHP[VBA] Code destiner pour acces / pour Excel
Souci avec un codeProbleme avec un code....
Iprimante USB et Application DOSWHERE '20710012541' LIKE concat(code,'%')
[PERL] [Debutant] Commande shell source en perlappel d'une fonction dans un lien html dans un code php
Gestion de la configuration d'une application Pythonpb pseudo frame depuis code php
Plus de sujets relatifs à : Code source d'une application C# compilée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR