Programas de Vista(32) en XP(32)?

Iniciado por Karman, 13 Febrero 2008, 15:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Karman

buenas... se me planteó una duda (aunque no se si es aquí donde debería plantearla), mi duda es con los programas de Windows vista (los que trae por defecto el SO), cuando trato de ejecutarlos sobre XP me dice que no son ejecutables válidos de windows, pero he aquí lo raro, ambas plataformas son de 32 bits, si fuera de 64 sería lógico que no funcionara, pero como es de 32 me quedó la duda que tiene la nueva cabecera de los ejecutables de vista? que se modificó en esta?... haber si alguien tiene una idea... je...  :P

S2

karmany

Exactamente no lo sé pero lo probaré y cuando sepa algo cierto ya te lo comentaré porque yo utilizo XP y Vista.

Yo en algunos programas he visto 2 cosas:
1º- Comprueban si el sistema operativo es Vista y si es cierto dejan continuar a la aplicación. Esto lo comprobé por ej. con el programa "Tune Up Utilities" (para XP solamente). El programa aunque funcionaba bien en XP (lo hice funcionar) necesitaba una configuración diferente o modificar ciertos datos para que se ejecutara correctamente

2º- Puedes intentar ver las dependencias. Por ej. si el programa sabes que se ejecuta en Windows Vista pues ejecútalo con el OllyDBG (en WV) y observa las dependencias. PUede que utilice alguna máquina virtual (por ej.) y que por ese motivo el encabezado dé error en WXP.

Bueno, pienso que lo mejor sería que dijeras qué programa es el que no corre en XP y así entre todos le echamos un vistazo.

Un saludo

Karman

en realidad... ningún programa de windows vista (los clásicos que trae el SO, por ej: Worpad, Notepad, paint, solitario, etc...), lo descubrí cuando quise utilizar el nuevo administrador de correos que trae el vista en reemplazo del outlook, y lo peor es que ni los debugger's me dicen cual es el error, el olly me dice que no puede iniciar la aplicación porque no es válida, el w32dasm igual, y el IDA Pro alcanza a decompilarlo, pero cuando lo quiero ejecutar me tira error de tipo de archivo, por eso supongo que tiene que ser algo en la cabecera de dichos programas, algo así como un nuevo formato(?)...

S2

karmany

#3
Efectivamente, lo acabo de probar por ej. con el juego Chess que trae el Vista y dice aplicación 32 bits no válida.

A primera vista el encabezado parece correcto a no ser por la Image Base que no es muy normal según estábamos acostumbrados hasta ahora. He modificado el PE header para que fuera compatible con Windows XP y tampoco quiere funcionar.
Debuggeando en Vista he visto dos archivos que se utilizan que no están en Windows XP y que parecen ser únicos en Vista. Lo seguiré analizando, ya te comentaré.. y si descubres algo coméntalo también si quieres..

Un saludo Karman
karmany

PD. Según he podido averiguar indagando por Internet, parece ser que el problema es porque Windows XP no tiene DirectX10 ya que se hizo en un principio sólo para Windows Vista. Microsoft parece que sólo lo saca para Vista:
http://www.gamesforwindows.com/en-US/AboutGFW/Pages/directx10-a.aspx
He visto algunas modificadas para XP, pero nadie afirma abiertamente que funcionen correctamente.
También podría ser que si utilizamos las dll que el juego necesita (copiándolas de Vista a XP) pues que el juego funcione, pero no lo sé y me deja, por lo menos a mi,  muchas dudas...

Karman

#4
un par de cosas, lo de direct 10 no tiene nada que ver, porque programas como el notepad que no utilizan direct 10 ni nungún otro... tampoco funcionan... además si fuera problema de alguna dll el sistema operativo te diría "no se encuentra la librería tal o tal" o "no se encuentra la función tal en la librería tal...", otra cosa, si la cabecera estuviera bien, el programa alcanzaría a ser cargado en el debbuger de XP, pero no llega ni a eso, por eso desconfío de la cabecera, que haya alguna sección media rara o algo por el estilo...

S2

Eternal Idol

#5
dumpbin calc.exe /headers
Microsoft (R) COFF/PE Dumper Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file c:\windows\system32\calc.exe

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
             14C machine (x86)
               4 number of sections
        4549B0BE time date stamp Thu Nov 02 09:47:58 2006
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             102 characteristics
                   Executable
                   32 bit word machine

OPTIONAL HEADER VALUES
             10B magic # (PE32)
            8.00 linker version
           12E00 size of code
           18800 size of initialized data
               0 size of uninitialized data
           126FE entry point (010126FE) _WinMainCRTStartup
            1000 base of code
           14000 base of data
         1000000 image base (01000000 to 0102DFFF)
            1000 section alignment
             200 file alignment
            6.00 operating system version
            6.00 image version
            6.00 subsystem version

               0 Win32 version
           2E000 size of image
             400 size of headers
           39B6F checksum
               2 subsystem (Windows GUI)
            8140 DLL characteristics
                   RESERVED - UNKNOWN
                   NX compatible
                   Terminal Server Aware
           40000 size of stack reserve
            2000 size of stack commit
          100000 size of heap reserve
            1000 size of heap commit
               0 loader flags
              10 number of directories

Si cambias ese 6 por un 5 el error ese ya no se producira, aunque los dos programas que probe (calc y notepad) tienen funciones importadas que no existen en XP asi que tampoco cargan pero muesta otro error.

Los depuradores no te sirven (directamente) en este caso ya que la imagen es rechazada por el mismo loader, tendrias que depurar el loader (bajo el contexto del depurador) o para hacerla mas simple ejecutarlo desde cmd y depurar cmd.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Karman

ya me parecía que tenía que ser algo del header... je... voy a probar con unos cuantos haber si logro hacerlos correr...

S2

karmany

#7
Otra cosa curiosa por ej. en el notepad de XP es que la Import Table Address ya está direccionada y aunque la Image Import Descriptor está totalmente correcta si se modifica cualquier dato de una API que rellene la IID veréis que el programa se ejecuta perfectamente. Por ej. se puede buscar cualquier string de cualquier función de una API y modificar el nombre completo por algo que no exista y el notepad sigue funcionado perfectamente y eso es porque las direcciones ya están en el mismo ejecutable.
En el notepad de XP ir al offset 400h(creo que era ahí, o se puede buscar rápidamente) que ahí empieza la IAT y veréis sorprendentemente que están las direcciones reales!! de las API y no es la IID la que se encarga de rellenar esos datos... muy curioso, tengo que analizar el porqué, tal vez está la cosa en la IID, de momento no lo sé.

Gracias Eternal Idol por la aclaración, es curioso porque analizé todo el PE-header y ese valor creo (sólo creo) que también lo modifiqué.
Muy interesante.
Gracias Karman por esa duda me parece muy interesante.

Un saludo a los dos.
karmany