[Tous langages] Comment les editeurs protegent ils leurs code sources?

Comment les editeurs protegent ils leurs code sources? [Tous langages] - Divers - Programmation

Marsh Posté le 15-05-2006 à 10:41:07    

Bonjour tout le monde.  
 
J'ai une question a poser concernant les codes sources et les editeurs de logiciels.
 
Comment les editeurs font ils pour proteger leur codes sources contre les decompilateurs et contre la "rétro-ingénierie" ( traduction francaise de "reverse engineering" ).
 
Une des methodes de protections est l'obfuscation:
 
http://en.wikipedia.org/wiki/Obfuscated_code (angalis)
 
http://fr.wikipedia.org/wiki/Code_ [...] 3%A9trable  (Francais)
 
Est ce une methode utilise par tous les editeurs de logicielles (enfin par ceux qui choisissent de ne pas partager leurs code sources)?
 
Comment les gros editeurs de logiciels comme Microsoft font ils pour proteger leurs codes sources? Y parviennent ils?
 
Question subsidiaire, comment les crakeurs font ils pour deverouiller les protections? Est ce qu'ils decompilent les logiciels pour les modifier et les recompiler ensuite?
 
P.S Il s'agit d'un sujet purement technique et non d'un debat code open source vs code protege et encore moins d'un debat sur le piratage.
 
P.S: Desole  pour le manque d'accent (clavier qwerty).


Message édité par yannick le 15-05-2006 à 10:43:33
Reply

Marsh Posté le 15-05-2006 à 10:41:07   

Reply

Marsh Posté le 15-05-2006 à 10:55:12    

programme en C++ :o


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

Marsh Posté le 15-05-2006 à 11:01:21    

Si tu programmes dans un langage compilé comme le C ou le C++, tu n'auras jamais accés au source originel. Tu obtiendras juste le code assembleur du logiciel (on ne parle pas alors de décompilateur, mais de désassembleur). Seuls les langages sous VM (Java ou C#) sont susceptibles d'être décompilés, à condition effectivement que le code ne soit pas obfusqué.
 
Quant aux crackers, ils utilisent un debugger pour suivre l'executable pas à pas et comprendre sa logique. Ca implique de connaitre l'assembleur, ainsi que l'architecture de la machine sur laquelle tu travailles.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-05-2006 à 11:31:16    

C'est ce que j'avais cru comprendre. Cependant, en faisant quelques recherches, les choses n'ont pas l'air aussi simple.
 
http://www.program-transformation. [...] Refutation
 
http://www.program-transformation. [...] onPossible
 
http://boomerang.sourceforge.net/
 

Reply

Marsh Posté le 15-05-2006 à 11:45:44    

Enfin bon, ils font du reverse de code sur du hello world, pour obtenir un code avec des variables mal nommées.
 
Sur un exemple avec un autre compilo, optimisation activées, tu as pas grand chose :o


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

Marsh Posté le 16-05-2006 à 00:56:10    

Tout ce qui suit concerne les langages compilés, les langages interprétés peuvent être décompilé "facilement", mais pas forcément lu facilement ;)
 
Le décompilateur le plus efficace à l'heure actuelle est IDA Pro. Pourquoi? Il reconnaît des fonctions à partir de leur signature, ce qui te permet d'obtenir un code facilement compréhensible dans le cas où tu as la/les signature(s) correspondante.
Si tu veux compliquer la tâche aux décompilateurs, il faudra que tu packes ton code (cad le crypter) avec des softs comme UPX. Ca rebutera les moins entêtés, bien que ce type de protection commence à être connu. Parmi les autres solutions, tu as la manipulation des en-têtes (particulièrement les tables d'import de fonctions), tu as le code auto-modifiable ou encore les dongles (qui doivent être bien utilisé, sinon ils ne servent à rien).
 
Si tu veux un peu plus te renseigner sur ce type de chose, je ne saurais que trop te conseiller d'aller faire un tour sur crackmes.de ou de faire une recherche google sur crackmes. Tu verras et les protections, et les solutions mise en place.

Reply

Sujets relatifs:

Leave a Replay

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