Gonzalien | Programación de otro mundo

Google niega haber decompilado Vista

El código fuente detrás del navegador Chrome de Google sugiere que Google ha usado una técnica de ingeniería inversa conocida como decompilación con el fin de conocer como utilizar una característica de seguridad muy útil en Vista.  Aunque el gigante de las búsquedas niega haberlo hecho.

El código de Chrome parece usar una funcionalidad disponible en Vista llamada “Data Execution Prevention”, que puede ser usada en Windows XP SP2 y en Windows Server 2003 SP1, el cual no está documentado en las versiones anteriores de Windows.  El código fuente de Chrome indica que esta funcionalidad puede ser entendida mediante la decompilación, el cual es un método de ingeniería inversa que desconstruye un archivo binario (un exe, dll, etc) y lo traduce a intrucciones de códugo entendible por un programador.

Un comentario en el código fuente de Chrome menciona el uso de un decompilador para saber como se usa esa funcionalidad de seguridad.  El código fuente es el siguiente:

// Completely undocumented from Microsoft. You can find this information by
// disassembling Vista's SP1 kernel32.dll with your favorite disassembler.
enum PROCESS_INFORMATION_CLASS {
  ProcessExecuteFlags = 0x22,
};

Sin embargo, Google no tomó ese camino, la compañia indica en una comunicación que esa técnica viene de la página http://www.uninformed.org/?v=2&a=4, y que hay que tomar en cuenta que la decompilación es una de las muchas técnicas que se pueden usar para obtener esa información.

Para Google “la decompilación es una práctica común y aceptada en el desarrollo de software, usada frecuentemente para asegurarse que las funcionalidades del software son compatibles con otros programas y sistemas operativos”

Aunque si es cierto que el código hace mención a la página de uninformed.org, esta referencia aparece mucho más adelante en el código y para algo muy diferente.  Aquí esta la fracción del código con la referencia:

// Go in darker areas.
// Only available on Windows XP SP2 and Windows Server 2003 SP1.
// http://www.uninformed.org/?v=2&a=4
FnNtSetInformationProcess NtSetInformationProc =
      reinterpret_cast<FnNtSetInformationProcess>(
          GetProcAddress(GetModuleHandle(L"ntdll.dll"),
                                         "NtSetInformationProcess"));

Y en otra parte del código aparece:

  // Try documented ways first.
  // Only available on Vista SP1 and Windows 2008.
  // http://msdn.microsoft.com/en-us/library/bb736299.aspx
  FnSetProcessDEPPolicy SetProcDEP =
      reinterpret_cast<FnSetProcessDEPPolicy>(
          GetProcAddress(GetModuleHandle(L"kernel32.dll"),
                                         "SetProcessDEPPolicy"));

Posiblemente, al no conseguir la documentación necesaria, usaron otras vías.

No es la intención discutir si Google hizo bien o no, realmente para mi el problema empieza por la falta de documentación de las funcionalidades de parte de Microsoft.   Ya que hay mucha funcionalidad no documentada que es importante conocer si se quiere hacer un software compatible con el sistema operativo.

Artículos relacionados:

  1. Primeras movilizaciones contra Windows 7 La Free Software Foundation (FSF) ha enviado cartas a las...
  2. Desaconsejan el uso del navegador de Google Primero se encontró una vulnerabilidad crítica apenas dos días después...
  3. Google puede eliminar aplicaciones remotamente de sus teléfonos En los términos de servicios del Android Market, se dice...
  4. Microsoft lanza versión Release Candidate de Windows 7 A partir de ayer, Windows 7 Release Candidate puede ser...