![]() |
UPX ¿como funciona?
¿el compresor upx como funciona?
tengo entendido que el programa tiene un stub. al cual se le mete contenido comprimido. y el stub es el encargado de descomprimir el contenido en la memoria. y ejecutar el programa, entonces el stub se cierra. ahora bien.. ¿como se ejecuta un programa en memoria? por que usando la undad shellApi, se puede ejecutar un programa que se tiene en el discoduro ¿pero en memoria? estoy usando los componentes vcl zip que son para comprimir con formato compatible al winzip. y ya logre hacer un programa stub. y extraer el exe fisicamente a una carpeta o al mismo directorio donde esta el stub. pero no se como ejecutarlo en memoria. como lo hace el UPX gracias.. |
No se si es correcto el termino Stub pero te explico rapidamente. El funcionamiento en la mayoria de los compresores, encriptadores, protectores de ejecutables y hasta los virus es muy parecida, modifican el punto de entrada del ejecutable al que tu llamas "Stub", el cual es un pequeño programa encargado de procesar y revertir un buffer a su "estado" original. Luego de haber realizado dicha accion simplemente tiene que realizar un llamado al buffer original (procesando sus secciones, direcciones absolutas y relativas y finalmente su punto de entrada original).
En todos los casos es la misma aplicacion que ha realizado un proceso de pseudo polimorfismo, en ninguno de los casos ha cargado una aplicacion externa en su mismo espacio virtual. Conociendo un poco la estructura (COFF) de un ejecutable, podrias llegar a tu acometido, pero sin mas informacion no le veo sentido. La idea seria cargar el ejecutable con LoadLibrary, obtener su EntryPoint y mediante un par de calculos "cederle" el control a la segunda aplicacion. Suerte |
yo no hablo de
cargar una aplicacion externa en su mismo espacio virtual. por que la aplicacion esta comprimida en un ejecutable. el stub. extrae la aplicacion y me parece que la ejecuta. en memoria. sin pasar a guardarla en disco. y despues ejecutarla. De lo demas no te entendi.. nada. |
Cita:
|
| La franja horaria es GMT +2. Ahora son las 15:01:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi