2011-09-27 25 views
8

¿Alguien ha notado que si importa un exe como recurso, se vuelve a configurar y también parece que su encabezado PE se reconstruye?C++ visual studio 2010 exe ​​en resource get Rebased?

Hay momentos en que esto es irritante. ¿Alguien sabe cómo desactivar el rebase?

pasos para reproducir en C++:

1) compilar un mundo hola y establezca manualmente su dirección base (en propiedades) para Digamos que 0x1000000

2) hacer un segundo proyecto e incluyen el hola mundo en recursos. También configure manualmente su dirección base como se indica arriba.

3) construir segundo proyecto

4) extraer el exe de recursos y comprobar que funciona con un editor de Pe! se establece en 0x400000. ¡¿Por qué?!

+0

acuerdo con http://msdn.microsoft.com/en-us/library/hh7adf4f.aspx, es posible que tenga un problema con su configuración: por favor, agregue los parámetros de engarce . De todos modos, creo que hay muchos programas que pueden rebase PE, así que tal vez considere probarlos también ... –

+0

editbin.exe por lo que yo entiendo, es un programa externo que se puede ejecutar después de la compilación. La reconstrucción del encabezado PE no tendrá ningún efecto en la situación anterior. Te perdiste el punto. – Ray

+4

Ni el compilador de recursos ni las API de recursos saben nada sobre los archivos EXE. Los tratan como una burbuja de bytes. En consecuencia, no pueden hacer nada para cambiar la dirección base. El problema está en otra parte. –

Respuesta

1

¿Cómo se incluye el EXE como recurso en el segundo proyecto?

El uso de estas define:

#define BINFILE 222 
#define IDR_MYFILE 101 

Si hago referencia el ejecutable en mi archivo .rc que apunta al archivo original, por ejemplo:

IDR_MYFILE BINFILE "S:\\mysource\\t1\\Release\\t1.exe" 

Luego, tras la extracción, mi recurso incrustado EXE no está re-basado, pero mantiene con lo que lo había construido.

+0

sí. esa es la forma en que me refiero al archivo exe. Estoy molestando mi cabeza por esto. Buscaré otras razones como sugirió Hans Passant. – Ray

+0

¿Quizás es así como lo estás extrayendo del EXE compilado? Usé PE Explorer para extraer el exe 1 de exe 2. Y simplemente funcionó. – Joe

+0

utilicé Visual Studio para exportar el archivo binario. haga clic derecho en el archivo y seleccione exportar. debería ser lo mismo. Creo que reduje el problema. Solía ​​tener un ofuscador. tal vez algo se dejó porque este proyecto es bastante viejo. – Ray