. Veréis, estoy intentando hacer un código referente a ésto. Básicamente, lo que quiero hacer, es poder cargar un ejecutable desde memoria (eso ya está) pero que se puede tambien si no tiene tabla de reubicaciones (Relocation Table). Lo que se me ocurrió para hacerlo, es que en vez de mover de sitio el ejecutable que quiero arrancar, mover un loader, me explico mejor:1- El ejecutable arranca, carga el loader del resource y lo arranca en otro sitio reubicando la imagebase
2- Se ejecuta el loader, "desmapea" la dirección donde se ejecutó el programa en el paso 1 (00400000) y carga el ejecutable que quiero arrancar y que no tiene relocation table
3- Se pasa la ejecución al archivo que acabo de copiar al image base original.
Bueno, pues para liberar memoria en el ImageBase original (0040000) llamo a NtUnmapViewOfSection de la NTDLL, pasándole el proceso actual y el ImageBase original. Despues de varios problemas, debugeando, lo conseguí, pero a medias. El programa sólo funciona si lo ejecuto bajo olly
. Es la primera vez que me pasa ésto y no tengo ni idea de por qué pasa, pero el error está en NtUnmapViewOfSection.A ver is alguien sabe algo
.









Autor




En línea



.
.
.
. Al final era cuestión de permisos:
.