El código ntoskvinci
Ya en otra ocasion se me habia revelado un secreto que hicieron tambalearse los aparentemente solidos cimientos sobre los que se asientan mis convicciones, los cimientos que dotan de sentido mi existencia, esos axiomas inquebrantables e inmutables, tan evidentemente ciertos que no pueden ser puestos en tela de juicio. ¿O si pueden?… La revelacion a la que me refiero no es otra que la existencia de un clon de Mario en Microsoft. Y ahora, nuevos datos de gran importancia han llegado a mis manos. Como los
he conseguido o quien me los ha dado son cuestiones que carecen de importancia. Lo cierto es que obran en mi poder. Me veo obligado, en pro del bien comun, a hacer publica esta información.
Como es sabido, cuando trabajamos con RPC bajo Windows al igual que cuando trabajamos con algunas tecnologia de mas alto nivel, se hace un uso intensivo de la funcionalidad de creacion de identificadores unicos. Dicha funcionalidad. El nucleo de windows también proporciona una funcionalidad similar, que esta expuesta a Ring3 a traves de la función NtAllocateUuids, y que tambien puede ser usada desde Ring0 a través de una serie de funciones ExXXXX. El nucleo del sistema operativo crea bajo demanda y mantiene una estructura para gestionar estos identificadores. Esta estructura es del tipo _UUID_CACHED_VALUES_STRUCT y la variable en cuestion tiene como nombre _ExpUuidCachedValues. No entrare en detalles, entre otras cosas porque no conozco practicamente ningun detalle de esta parte de Windows. Si comentare que la estructura mencionada tiene la siguiente definición:
ULONGLONG Time;
LONG AllocatedCount;
UCHAR ClockSeqHiAndReserved;
UCHAR ClockSeqLow;
UCHAR NodeId[6];
} UUID_CACHED_VALUES_STRUCT;
Y aqui es precisamente donde se encuentra el gran misterio!. Si miramos un poco en las entrañas del ntoskrnl, podemos ver que la variable _ExpUuidCachedValues esta inicializada como:
AllocatedCount = 0xFFFFFFFF
ClockSeqHiAndReserved = 0
ClockSeqLow = 0
NodeId[0] = 0x80
NodeId[1] = ‘m’
NodeId[2] = ‘a’
NodeId[3] = ‘r’
NodeId[4] = ‘i’
NodeId[5] = ‘o’
Como ha llegado Mario a conseguir escribir su nombre dentro de todas las versiones del ntoskrnl? Su clon, tras soñar con el durante varias noches, no tuvo mas remedio que hacerlo para que sus pesadillas cesasen???? Quizas los dias de luna llena durante un espacio de tiempo sus cerebros se intercambiaban temporalmente y de esa manera Mario consiguio dejar una huella imborrable en todos los Windows??? Es quizas tambien Mario responsable de desviar un satelite unos centimetros y de que Bienvenido empieze por mayusculas???? Quizas tengo una doble personalidad malvada y he parcheado sin saberlo mi propio windows, siendo el unico que tiene a Mario dentro de su kernel??
…
La verdad esta ahi dentro.