Tenemos un proyecto con muchos archivos dll que se cargan cuando se inicia la aplicación. La baseaddresses de los archivos dll se superponen para que la imagen de memoria se reubique. ¿Existe la posibilidad de asignar automáticamente la baseaddresses o una forma de calcular una dirección base "buena" para cada archivo dll?¿Cómo puedo configurar/baseaddress en un "buen" valor?
Respuesta
Puede utilizar la utilidad REBASE que se suministra con el SDK de la plataforma y con Visual Studio pienso para establecer las direcciones base de un montón de archivos DLL cargados por el appliction
Usted suministro de rebase con una lista de los archivos DLL que conforman su programa, sin incluir los Dlls del sistema, luego realiza una carga ficticia de todas las DLL y les asigna nuevas direcciones base.
Esto se puede realizar como parte de un paso final de compilación.
Hay un artículo el Dr. Dobbs rebase here y un artículo de Microsoft sobre el cambio de base en general here
Si está distribuyendo los archivos DLL, independientemente de cómo haya configurado su dirección de base, siempre hay un riesgo de que otros no DLL escrito por usted se cargan en esa dirección ya (por ejemplo, archivos DLL de ganchos globales).
Además, si usted está construyendo para Vista en realidad se debe usar/DYNAMICBASE para permitir que se produzca, ASLR
Aquí está el enlace de MSDN:. http://msdn.microsoft.com/en-us/library/bb384887.aspx.
- 1. ¿La opción de ajustar un valor es un buen patrón?
- 2. ¿Cómo puedo producir un buen resultado de una matriz numpy?
- 3. BitmapSource.CopyPixels: ¿cuál es un buen valor para la zancada?
- 4. ¿Es un buen diseño para devolver el valor por parámetro?
- 5. ¿Dónde puedo encontrar un buen curso en línea de Python?
- 6. ¿Cómo puedo devolver un valor de un hilo en Ruby?
- 7. ¿Cómo puedo almacenar un valor flotante en un NSArray?
- 8. ¿Cómo puedo formar un buen delegado predicado para encontrar() algo en mi lista <T>?
- 9. ¿Cómo obtener un buen funcionamiento de un proceso en ejecución?
- 10. ¿Dónde puedo encontrar un buen tutorial/introducción a Live Coding?
- 11. ¿Dónde puedo encontrar un buen tutorial de Robocode?
- 12. ¿Dónde puedo encontrar un buen ejemplo de iPhone/GWT/AppEngine?
- 13. ¿Cómo puedo obtener un valor de un par clave/valor xml con xpath en mi xslt?
- 14. ¿Cómo puedo leer atómicamente un valor en ASM x86?
- 15. En Perl, ¿cómo puedo ordenar por frecuencia de un valor?
- 16. ¿Cómo puedo comparar un valor de C# Viewbag en Javascript?
- 17. ¿Cómo puedo convertir el valor entero en valor decimal?
- 18. ¿Dónde puedo obtener un buen y conciso LINQ cheatsheet?
- 19. ¿Dónde puedo encontrar un buen plugin de sombra jQuery?
- 20. ¿Dónde puedo encontrar un buen código fuente de C++?
- 21. ¿Dónde puedo encontrar un buen .NET Tab Control gratis?
- 22. C# Servicios de Windows: ¿dónde puedo encontrar un buen tutorial?
- 23. ¿Dónde puedo encontrar un buen tutorial de XMPP (Jabber)?
- 24. ¿Dónde puedo encontrar un buen tutorial para principiantes para ColdFusion?
- 25. Donde puedo encontrar un buen tutorial para IJG libjpeg
- 26. iTunes Connect: ¿Cómo elegir un buen SKU?
- 27. ¿Cómo puedo agregar un valor booleano a un NSDictionary?
- 28. ¿Cómo puedo verificar si un valor es un número?
- 29. Cómo determinar un buen valor para - cargar promedio usando gnu Make?
- 30. ¿Dónde puedo encontrar un buen tutorial/referencia HTMLEditorKit, que en realidad explica cómo editar documentos HTML?
Descubrí que solo puedo llamar a REBASE.EXE -d -b 0x60000000 * .dll para lograr esto. – frast