Cet outil est déjà utilisé en interne chez Microsoft pour différentes analyses/optimisations sur les produits que l'on crée.
L'article est assez technique mais ne devrait pas etre completement obscur pour les non initiés.
Aller plus loin
- L'article chez MS Research (10 clics)
# Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Anonyme . Évalué à 0.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 10.
Mais j'ai encore du mal saisire la difference fondamental, entre Vulcan et un Debugger avancé genre Softice ( puisqu'on parle d'environement windows je parle de debugegr windows, mais oui j'utilise GDB qui est trés bien ).
Apres du coté non fondamental, mais sacrement pratique visiblement Vulcan ne recrache pas de l'ASM x86/i64 mais aussi du source celon le language de son choix ( parmis les langugaes MS ), pour les parties des applications codés en MSIL ( MicroSotf Intermediate Language, le pseudo language universelle qui sert de backend a tous les languages .NET ), vue que ces parties sont plus ou moin intepretés par le framework cela permet de modifier l'application pendant le debuggage sans recompilation, ce qui risque de sacrement simplifier et accelerer le debuggage des applications MSIL, apres pour les autres on reste sur un debugger classique, avec breakpoint, asm et recompilation.
En gros c'est genial pour les applis codés en C#/.NET pour le reste du monde ce n'est qu'un debugger de plus.
P.S. C'est ce que j'en ais compris apres je peux me planter
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 10.
Par exemple tu peux lancer des runs de ton soft dans differents scenarios, voir quelles sont les parties de code les plus utilisees, et modifier l'executable pour les rapprocher histoire d'avoir une meilleure utilisation des caches. Ca serait un exemple de modification d'un binaire sur disque.
Un autre exemple c'est de pouvoir patcher un binaire pendant qu'il tourne, plus besoin de rebooter ou arreter ton service pour patcher, c'est fait pendant que le service tourne.
Cet exemple c'est en fait ce qui va se passer dans .NET Server, il sera possible dans bcp de cas(pas tous) de patcher le kernel, les differents services, etc... sans rebooter, et sans arreter le service.
Vulcan se cree au moment de la compilation une representation de l'executable, et ca lui permet de travailler apres sur cet executable, il sait ou est quoi, comment il peut modifier, etc...
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 6.
Apres j'avais pas compris l'idée de patch ou de remplacement des binaires a chaud, j'avais cure que ce n'était qu'un concepete lancé en l'air comme but ultime a atteindre, pour la béte, mais en effet si cela ne penalise pas trop les performance global ( a quoi bon economiser 5 min d'uptime pour un charge CPU 10% superieur ) c'est vraiment revolutionnaire, des update sans arret de service.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Anonyme . Évalué à 0.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 3.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Anonyme . Évalué à 1.
Sous GNU/Hurd, il me semble, qu'on peut remplacer des partie de système sans arret de services. * Mais bon, je suis pas un pro en Hurd, si j'ai dis une gros c#ner#e la haut, je m'excuse, j'ai parlé trop vite :)
* It is possible to develop and test new Hurd kernel components without rebooting the machine (not even accidentally). Running your own kernel components doesn't interfere with other users, and so no special system privileges are required. The mechanism for kernel extensions is secure by design: it is impossible to impose your changes upon other users unless they authorize them or you are the system administrator.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 6.
Le kernel que tu as sur ta machine est un kernel "propre", sans aucune info non utile, par contre nous en interne on a a la compilation pris les infos sur le binaire, a quoi il ressemble, etc... et Vulcan grace a ces infos pourra patcher le binaire a chaud, le patch qu'on fournira contient toutes les infos necessaires pour que Vulcan fasse le boulot sur ta machine.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 1.
Je savais que c'était un peut trop beau.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 0.
Resultat, il n'y a aucune raison d'avoir ces infos dans le binaire, ca ne fait que rajouter du poids inutile dans un binaire, grossir la place disque, ralentir le systeme a cause du merdoyage des caches,... sans aucune raison vu que personne a part MS n'en aurait l'utilite.
Il faut bien voir que ce soft a ete developpe dans l'optique d'une utilisation par MS, notamment de par le fait qu'il n'est pas aise de creer un fix applicable "a chaud", il faut savoir exactement ce que fait le code pour decider si oui ou non le fix cree peut etre applique a chaud, et ca quelqu'un en dehors de MS ne peut pas le faire, et finalement nous on ne fait pas de releases frequentes, ce n'etait donc pas un critere de developpement pour le soft.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 2.
<Troll> Bon ba j'ai plus de raisons de porter Apache en C# .NET </troll>
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 2.
En plus vue que c'est codé avec du MSIL, il doit pas faloir se forcer pour avoir une pletor de section et d'objet.
Ca me rappel une vieillie astuce de cracker qui consister a interchanger une DLL apres qu'elle est était verifié, plus ou moin a l'arache en mémoire et en modifient les pointeur de fichier sur la DLL cracké, sauf que la au lieu des DLL, ce sont directement des sections de binaires.
le cracking au service des produits MS, comme quoi le piratage et MS c'est une grande histoire :-)
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Benjamin . Évalué à 4.
Par contre, pour être plus sérieux, je m'étonne que ce genre d'outil ne soit pas interdit au pays de PBPG selon leur DMCA..
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 2.
Mais bon logiquement on devrait interdir tous debugger qui permettent le cassage de protections, méme chose pour les deassembleur et autre .
# Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Benjamin . Évalué à 10.
C'est quoi le rapport avec Linux ou les Logiciels Libres ? Pourquoi c'est pas dans la boite autre ? Je suis sur que si c'était pas VousSavezQui qui l'avait postée, elle y serait depuis longtemps..
[si cette news est désormais dans la boite autre, merci de ne pas me scorer à -150 ;)]
[^] # Ahh non ...
Posté par Maillequeule . Évalué à 5.
Un court instant, j'ai cru voir le logo linuxfr remplacé par un bandeau de pub pour les logiciels agiles de VousSavezPourQuiMarcheVousSavezQui ...
Je joins un lien vers un point important de la configuration d'active directory aussi :
http://www.microsoft.com/windows2000/fr/server/help/default.asp?url(...)
Ca n'a rien à voir non plus, et c'est ca qui est bien :)
Mike
-
[^] # Re: Ahh non ...
Posté par Tutur . Évalué à 2.
Encore heureux que le gars n'est pas heureux que le gars ne change pas d'avis sur l'interieur de la voiture.
Où qu'il est le [-1]?
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Beretta_Vexee . Évalué à 2.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Jean-Yves B. . Évalué à 7.
En plus, si on se met à boycotter tous les papiers de chez MSFT Research, on est pas rendus.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Yusei (Mastodon) . Évalué à 2.
Ceci dit je m'en fiche, à la limite, un Slashfot français ça m'irait bien aussi.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par mammique . Évalué à 0.
au boulot ;-p
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Bruno (site web personnel) . Évalué à 1.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Yusei (Mastodon) . Évalué à 1.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par kadreg . Évalué à 0.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Damien . Évalué à 6.
Maintenant j'ai un peu de mal à comprendre pourquoi on nous affiche aujourd'hui une news n'ayant d'une part pas trait au contenu du site directement, et qui d'autre part relate l'existence d'un TR datant de... 2001 !
Si vous voulez des tonnes de papiers interessants, faites un tour sur http://researchindex.org(...) par exemple.
Moi aussi j'ai présenté un papier à une conf y'a 1 an, vous voulez que je fasse une news dessus ? parce que bon, moi je le trouve très interessant mon papier :)
M'enfin c'est pas bien grave, ca fait jamais de mal un petit come back technique !
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par mammique . Évalué à 0.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 0.
Il parait selon certains ici qu'il est important de savoir ce que MS fait car c'est le concurrent principal de Linux, et qu'il a une influence enorme sur le monde informatique.
Alors voila, une info de plus, la difference etant que cette fois ce n'est pas une news a troll sur le bien/mal ou autre, mais une news technique qui pourrait en plus interesser nombre de gens qui n'ont rien a foutre du fait que ce soit MS l'auteur de la chose.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
# Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Alban Peignier (site web personnel) . Évalué à 2.
http://java.sun.com/products/hotspot/docs/whitepaper/Java_Hotspot_v(...)
En plein de gens travaillent pour que cela existe aussi en libre ;o)
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 0.
C'est ca que resoud Vulcan, il te corrige du code binaire a chaud, que ce soit du C/C++ ou autre n'est pas important.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 1.
Vulcan permet de modifier le code, tu peux donc:
1) optimiser
2) corriger
3) etc...
Il prend des infos a la compilation, et les utilise ensuite pour modifier le code de la facon dont tu le veux(tu decide et implemente l'optimisation, Vulcan n'est qu'un outil te permettant de modifier le binaire a ta guise)
Sinon, on ne parle pas d'OO ici, tu peux modifier le binaire obtenu avec du C par exemple, et c'est d'ailleurs ce qui est fait dans Windows vu qu'il en contient une quantite enorme, bref, c'est un outil generique, qui ne demande pas un langage particulier au-dessus, etc...
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 1.
Dans n'importe quel compilateur, tu as cette etape ou tu transformes en binaire, et c'est la qu'il se greffe.
Vulcan ne depend pas du langage, il ne depend pas du fait que tel langage permet les fonctions virtuelles, ou autre feature. Il a juste besoin de connaitre la tronche de ton binaire au final, et quand je dis au final, ca veut dire une fois transforme en langage machine x86, IA64 ou MSIL.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
# Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
En plus, le patch de binaire tournant, cela ne doit être possible que dans des cas bien précis, car l'application doit reprendre à des points connus au moment du basculement ancien/nouveau code. Si le patch est gros, si les structures de donné sont modifiées, j'ai un peu de mal à voir comment s'en sortir sans un gros reset (du soft) qui revient presque à un restart.
"La première sécurité est la liberté"
[^] # Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par pasBill pasGates . Évalué à 0.
Effectivement, on ne peut pas le faire dans tous les cas, tu peux pas remplacer 90% du code a chaud ou grossir des structures existantes, etc... c'est infaisable.
Par contre des petits bouts de code par ci par la, c'est faisable sans probleme, et ca s'applique tres bien aux patches, car ils corrigent le plus souvent des problemes tres localises et qui ne demandent pas de modifier les structures de donnees.
Bref, la plupart des patchs peuvent en tirer parti, mais probablement pas tous, faut pas esperer installer un service pack sans rebooter.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 0.
Ce commentaire a été supprimé par l’équipe de modération.
# Re: Vulcan, ou comment modifier des binaires quand bon vous semble
Posté par vjm . Évalué à 1.
dans la famille open source et pour faire du patching à chaud de process image, y'a l'API Dyninst développée dans le cadre du projet Paradyn qui est pas mal (et multiplateforme).
D'une manière générale, le process hijacking et le checkpointing sont sujet que le monde libre a pas mal balisé. Aussi bien à titre institutionnel (cherchez esky ou libpkct et regardez les dates) que bidouilleur (suffit de voir la somme colossale d'articles qui proposent de patcher un processus via ptrace ou autre).
Sous Windows j'ai déjà vu des articles sur le process hijacking par des DLL
http://www.cs.wisc.edu/~paradyn/papers/(...) (section Paradyn and Dyninst)
http://www.cs.wisc.edu/~paradyn/release3.3/(...) (Dyninst only)
http://www.phrack.org/show.php?p=59&a=8(...)
http://www.phrack.org/show.php?p=59&a=12(...)
En tout cas c'est exactement le même paradigme chez MS et à l'Université du Wisconsin.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.