mercredi 25 juillet 2007

Quand les DRM stimulent la recherche (ou pas)

Il se trouve que mon "ancien nouveau" PC supporte la virtualisation hardware ... j'ai donc fait quelques tests.

Hôte : Windows Vista English 32 bits "Gold", CPU Intel Core Duo 2 GHz, RAM 1 Go.
Invité : Windows 2003 R2 English 32 bits w/SP2.

1er test : Virtual PC 2007 avec support matériel.
Temps de démarrage jusqu'à la mire de login : 31 secondes.

2ème test : Virtual PC 2007 sans support matériel.
Temps de démarrage jusqu'à la mire de login : 40 secondes.

Alors là je me dis "pas mal la virtualisation hardware, 33% de gain en performance ...". Vive les DRM ! (Car il me semble que c'est le projet Palladium de Microsoft qui a commencé à faire naitre l'idée d'un hyperviseur matériel dans les PCs grand public).

3ème test : juste pour être sûr, j'importe la machine virtuelle dans VMWare 6.0 (qui n'utilise pas la virtualisation hardware, car ils considèrent que les implémentations actuelles ne sont pas suffisamment performantes).
Temps de démarrage jusqu'à la mire de login : 29 secondes.

Ah non, en fait ce sont juste les développeurs de Virtual PC qui sont mauvais :)

Enfin la bonne nouvelle, c'est que même si les rootkits hyperviseurs ne sont pas encore de sortie "dans la nature" (à $400,000 pièce ça se comprend !), IDA Pro est déjà prêt !

vendredi 13 juillet 2007

Petit guide touristique à l'usage des provinciaux

A chaque fois, c'est la même histoire : les gens qui ne connaissent pas Paris débarquent comme des fleurs au volant de leur berline [*] et se permettent de critiquer abondamment la circulation.

Voici donc un petit guide à l'usage de nos amis de province, afin d'éviter les malentendus.

Tout d'abord inutile de faire 3 fois le tour de votre voiture en repartant : comme vous avez laissé une place suffisante devant et/ou derrière vous pour garer une moto (voire une Smart), quelqu'un en aura profité pour élargir sa place. Et comme vous avez trop serré votre frein à main, votre pare-choc est sacrément enfoncé. Dans le meilleur des cas (sinon un scooter vous a emporté un rétroviseur, ou une nuée de pigeons vous a pris pour cible). Bref, votre voiture reviendra avec un souvenir.

Bien entendu je comprends votre agacement car vous avez mis une bonne demi-heure à trouver une "vraie" place. De mon expérience, tout emplacement laissé libre est une place potentielle - sauf les couloirs de bus, qui sont réellement nettoyés.

Notons qu'à Paris les places de stationnement ont une durée de vie négative : lorsque vous marchez sur le trottoir avec vos clés de voiture en main, quelqu'un vous a déjà repéré. Ce qui explique pourquoi vous n'avez aucune chance de tomber "par hasard" sur une place libre.

Vous avez sûrement réussi à acheter la carte à puce spéciale stationnement (bravo, je ne sais même pas où on la trouve). Dommage car elle a une date de validité et coûte 10 euros - alors que l'amende (potentielle) en coûte 11.

Quelques règles de circulation élémentaires :

  • Celui qui tourne n'a pas la priorité. D'ailleurs celui qui doit ralentir ou qui hésite perd automatiquement sa priorité.
  • Le taxi a toujours la priorité.
  • Le bus suit la priorité standard du code de la route (oui je sais ça peut surprendre surtout lorsqu'il quitte son arrêt).
  • Le vélo n'est soumis à aucune règle de priorité. Il peut par exemple circuler de nuit à contresens dans une voie étroite, ou rédiger un SMS en pédalant (deux exemples authentiques), et quand même vous engueuler.
Le scooter quant à lui résulte des fluctuations quantiques du vide dans les interstices existant parfois dans la circulation. Comme tout objet quantique, il est impossible de connaitre à la fois sa position et sa vitesse.

Ce corpus de règles n'étant pas cohérent, il reste des cas aux limites non déterministes. De nombreuses expériences sont menées actuellement, consistant à injecter dans un accélérateur (appelé "couloir de bus") les 4 objets précédents afin de provoquer des collisions hautement énergétiques - dans l'espoir secret de produire un jour la théorie de l'unification de toutes les priorités.

Tentative qui risque d'être remise en question par l'arrivée de la particule "tramway" dont les propriétés sont encore inconnues.

Ah oui, et pour les contraventions, vérifiez que le numéro de plaque est le bon : votre voisin vous a peut-être refilé la sienne en douce, comme il sait que vous les payez.

[*] Seul le Parisien roule en 4x4.

vendredi 29 juin 2007

Challenge Securitech 2007 :)

WinDbg est un outil exécrable.

J'étaye cette affirmation par un extrait du blog Microsoft consacré au langage de script WinDbg :
"- I also prefer not to explain the source code details for security reasons. "

Ce qui signifie en français :
"Le langage de script est tellement illisible que si je ne vous explique pas ce que je cherche à faire, vous ne pouvez pas comprendre par vous même."

La situation va peut-être s'améliorer grâce à ce projet : PyDbgExt, qui est pour le moment en version "Beta". On attend également la version Ruby, probablement réalisée par un labo d'Issy-Les-Moulineaux :)

Mais après le débogage noyau sous Vista, il existe un autre domaine dans lequel WinDbg est incontournable : le débogage ".NET", auquel j'ai l'occasion de m'intéresser actuellement.

Pour donner un exemple, voici le challenge que je vous propose (d'où le titre de ce billet :).

J'ai téléchargé le décompilateur .NET (gratuit) "Fox Community Edition" de la société Xenocode. Il ne demande qu'un login/mot de passe pour se lancer. Mais le site d'enregistrement est tellement contrôlé, que même avec des informations valides, il refuse de me créer un compte !

Le challenge consiste donc à contourner la boite de dialogue initiale, de la manière la plus rapide et la plus élégante possible.



Quelques précisions sur le fonctionnement de l'obfuscateur Xenocode (utilisé ici) :

  • Le bytecode .NET est obfusqué.
  • Il n'y a qu'un seul fichier exécutable, qui contient les librairies du .NET Framework (il n'est donc pas nécessaire d'installer le .NET Framework sur la cible d'exécution).
  • Ces librairies sont chargées dynamiquement en mémoire, selon une technique proche de celle du Meterpreter.
  • Le bytecode est compilé just-in-time en assembleur x86.
Bonne chance ! Je publierai ma solution le week-end prochain.

Petite précision : contrairement au vrai Challenge Securitech, il n'y a rien à gagner :)