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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Décompilation !!!! ca fait chier.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Décompilation !!!! ca fait chier.

n°186666
oliv5
Pourquoi ? Parce que !
Posté le 31-07-2002 à 00:00:18  profilanswer
 

Ouais, le #, c'est comme le java, pour ceux qui le savent pas, ca se décompile et ca te redonne exactement le même code source à la virgule prés.
Bref, ca fait chier si tu veux pas faire un prog open-source.  
Je cherche donc un moyen d'empécher cette décompilation, en c# comme en java.
Quelqu'un a-t-il déja regardé ?

mood
Publicité
Posté le 31-07-2002 à 00:00:18  profilanswer
 

n°186668
lorill
Posté le 31-07-2002 à 00:02:28  profilanswer
 

A partir du moment ou t'as un byte code, c'est que c'est "interprété" par une machine virtuelle ou un interpréteur.  
Si l'interpréteur peut lire le code, alors un décompilateur le peut aussi.
 
Par contre il existe des "obfuscators" qui rendent ton code crade pour que la lecture apres decompilation soit malaisée.
 
Ca doit se trouver en libre sur http://freshmeat.net, du moins pour java. Sinon il reste google en cherchant obfuscator.

n°186681
oliv5
Pourquoi ? Parce que !
Posté le 31-07-2002 à 00:11:27  profilanswer
 

Merci pour le nom d'obfuscator, je cherchais un peu au hasard avant.
 
Comment expliques-tu cette abération : si je tape "return 3*4;" les compilateurs java et c# ne traduisent même pas 3*4 en 12 dans le byte-code. Je vois pas l'intéret, ca fait plus de boulot a l'éxécution.
Je pensais que c'étais un minimum compilé !!! je trouve ca aberrant...
 
Tiens autre question : y a til un moyen de faire un exe avec c# qui ne necessite plus l'utilisation des milliers de dll du framework, un peu comme en MFC quand on lie les librairies statiquement à la compilation ? *
En fait ca me fait chier de distribuer mon exe de 100ko avec le framework de 20Mo ...

n°186685
lorill
Posté le 31-07-2002 à 00:14:33  profilanswer
 

si je tape "return 3*4;" les compilateurs java et c# ne traduisent même pas 3*4 en 12 dans le byte-code.
 
Je sais pas trop, surtout que ca m'étonne aussi sur le coup. Pour C# je sais pas, mais en java c'est etrange, car les int sont des types de base, et * n'est pas redéfinissable. Si tu pouvais redefinir l'operateur pour le type int ca se comprendrait, mais la... Quelqu'un de plus compétent est au courant ?
 
y a til un moyen de faire un exe avec c# qui ne necessite plus l'utilisation des milliers de dll du framework
 
Désolé, je ne connais ni C# ni les MFC. en fait windows je suis un peu paumé.

n°188865
C_Po_Ma_Fa​ute
Posté le 02-08-2002 à 16:47:58  profilanswer
 

oliv5 a écrit a écrit :

 
 
(...)
 
Comment expliques-tu cette abération : si je tape "return 3*4;" les compilateurs java et c# ne traduisent même pas 3*4 en 12 dans le byte-code. Je vois pas l'intéret, ca fait plus de boulot a l'éxécution.
Je pensais que c'étais un minimum compilé !!! je trouve ca aberrant...
 
(...)




 
il ya rien d'abérrant là dedans, compiler ce n'est pas calculer le résultat des expressions (ça, c'est fait à l'exécution), avant la compilation effective, certaines transfos sont normallement faites (remplacement des contantes par leurs valeurs par exemple), mais pour le calcul d'expressions (même entièrement numériques) ce n'est pas le boulot d'un compilo


Message édité par C_Po_Ma_Faute le 02-08-2002 à 16:48:20
n°188911
oliv5
Pourquoi ? Parce que !
Posté le 02-08-2002 à 18:26:41  profilanswer
 

d'accord, mais 3*4 écrit comme ca c'est con de pas le calculer directement et mettre 12 dans le byte-code, non ?

n°188913
smaragdus
whores, drugs & J.S. Bach
Posté le 02-08-2002 à 18:30:06  profilanswer
 

oliv5 a écrit a écrit :

d'accord, mais 3*4 écrit comme ca c'est con de pas le calculer directement et mettre 12 dans le byte-code, non ?




 
Oui surtout que n'importe quel compilo C/C++ le fait.

n°382556
marc2k2
Posté le 05-05-2003 à 12:34:34  profilanswer
 

Au fait, vous en avez trouvé un bien de decompilateur C#? paske l'a j'ai du mal a en trouver.
 
Merci d'avance
a+

n°382561
chrisbk
-
Posté le 05-05-2003 à 12:59:50  profilanswer
 

oliv5 a écrit :

d'accord, mais 3*4 écrit comme ca c'est con de pas le calculer directement et mettre 12 dans le byte-code, non ?


 
<aucune idee>
bah ptet qu'y a des options d'optim a activer [:spamafote]

n°382593
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 05-05-2003 à 13:42:21  profilanswer
 

oliv5 a écrit :


En fait ca me fait chier de distribuer mon exe de 100ko avec le framework de 20Mo ...


 
Perso, je me suis renseigné à l'époque de la sortie de C# et il n'y a pas moyen. C'est une des raison qui fait que C# aura un interet un jour quand ce framework sera intégré à l'OS chez tout le monde (dans 5 ans ?)


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
mood
Publicité
Posté le 05-05-2003 à 13:42:21  profilanswer
 

n°382614
gilou
Modérateur
Modzilla
Posté le 05-05-2003 à 13:55:16  profilanswer
 

C_Po_Ma_Faute a écrit :


 
il ya rien d'abérrant là dedans, compiler ce n'est pas calculer le résultat des expressions (ça, c'est fait à l'exécution), avant la compilation effective, certaines transfos sont normallement faites (remplacement des contantes par leurs valeurs par exemple), mais pour le calcul d'expressions (même entièrement numériques) ce n'est pas le boulot d'un compilo


Euh si, justement! Le constant folding bien fait doit remplacer les expression constantes par la valeur constante correspondante appropriée.

Citation :

constant folding
<compiler> A compiler optimisation technique where constant subexpressions are evaluated at compile time. This is usually only applied to built-in numerical and boolean operators whereas partial evaluation is more general in that expressions involving user-defined functions may also be evaluated at compile time.

 

Citation :

Constant folding
From Wikipedia, the free encyclopedia.  
 
(See below for a dissenting article)  
 
Constant folding is the optimization done by compilers in early stage of the compilation of a program. In C it is the optimization that makes it possible to have constant expressions in array-declarations, like:  
 
 
 #define WIDTH 320
 #define HEIGHT 240
 
 
 char buffer[WIDTH*HEIGHT];
 
 
 
Constant folding is similar to constant propagation, however constant folding must be done before the high-level language is translated to three-address-code to make code like above work. Constant propagation is done on the three-address-code (preferably on SSA form)

 
 
A+,


Message édité par gilou le 05-05-2003 à 13:58:08

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°384957
marc2k2
Posté le 06-05-2003 à 18:25:44  profilanswer
 

Euh les gars, vous en avez pas un alors de decompilateur;)?

n°385042
nraynaud
lol
Posté le 06-05-2003 à 19:43:56  profilanswer
 

oliv5 a écrit :


Comment expliques-tu cette abération : si je tape "return 3*4;" les compilateurs java et c# ne traduisent même pas 3*4 en 12 dans le byte-code. Je vois pas l'intéret, ca fait plus de boulot a l'éxécution.


C'est pas le boulot des compilos byte code, mais celui des compilos natifs.
Concernant .net : le byte-code et compilé en natif et stocké sous cette forme avant la première exécution, c'est à ce moment là que ce genre d'optim peut être faite.
Concernant java : c'est les compilos just-in-time qui vont faire ce boulot s'il est nécessaire (puisqu'il se pourrait que l'expression entière passe à la poubelle).
 
D'une manière générale, cette optimisation n'est pas super-utile, du calcul pur d'expression comme ça n'est pas ce qu'il y a de plus coûteux. D'autre part, l'élimination des sous-expressions communes va prendre en charge la factorisation à court terme (car le calcul est probablement moins coûteux que de squatter un registre 3 heures) du résultat s'il est utilisé plusieurs fois.

n°385159
noldor
Rockn'roll
Posté le 06-05-2003 à 21:19:24  profilanswer
 

oliv5 a écrit :

Merci pour le nom d'obfuscator, je cherchais un peu au hasard avant.
 
Comment expliques-tu cette abération : si je tape "return 3*4;" les compilateurs java et c# ne traduisent même pas 3*4 en 12 dans le byte-code. Je vois pas l'intéret, ca fait plus de boulot a l'éxécution.
Je pensais que c'étais un minimum compilé !!! je trouve ca aberrant...
 
Tiens autre question : y a til un moyen de faire un exe avec c# qui ne necessite plus l'utilisation des milliers de dll du framework, un peu comme en MFC quand on lie les librairies statiquement à la compilation ? *
En fait ca me fait chier de distribuer mon exe de 100ko avec le framework de 20Mo ...
 

c'est absolument pas le boulto d'un compilateur de faire ça


---------------
http://runnerstats.net
n°385219
gilou
Modérateur
Modzilla
Posté le 06-05-2003 à 22:54:17  profilanswer
 

nraynaud a écrit :


C'est pas le boulot des compilos byte code, mais celui des compilos natifs.
Concernant .net : le byte-code et compilé en natif et stocké sous cette forme avant la première exécution, c'est à ce moment là que ce genre d'optim peut être faite.
Concernant java : c'est les compilos just-in-time qui vont faire ce boulot s'il est nécessaire (puisqu'il se pourrait que l'expression entière passe à la poubelle).
 
D'une manière générale, cette optimisation n'est pas super-utile, du calcul pur d'expression comme ça n'est pas ce qu'il y a de plus coûteux. D'autre part, l'élimination des sous-expressions communes va prendre en charge la factorisation à court terme (car le calcul est probablement moins coûteux que de squatter un registre 3 heures) du résultat s'il est utilisé plusieurs fois.


Oui et non: ce type d'optimisation (constant folding) peut etre fait a l'un ou l'autre stade. La seule raison qui me semble justifier de n'effectuer les optimisations que dans une phase just-in-time, c'est que, comme de toute facon, le compilo just-in-time va les effectuer de maniere plus pointues et ciblées pour la machine cible, il est donc inutile (et eventuellement, néfaste pour la qualité de l'optimisation effectuée par le compilo just-in-time), de faire une optimisation prealable, lors de la generation du byte code.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°387554
nraynaud
lol
Posté le 08-05-2003 à 21:50:17  profilanswer
 

http://www.go-mono.com/c-sharp.html
 

Citation :

The compiler performs a number of simple optimizations on its input: constant folding (this is required by the C# language spec) and can perform dead code elimination.



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

  Décompilation !!!! ca fait chier.

 

Sujets relatifs
Decompilation / Reverse Engeneering / Régénération d'un .c à partircompilation, decompilation
[PHP] Fait chier, comprend que dalle! 
Plus de sujets relatifs à : Décompilation !!!! ca fait chier.


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