elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda]Como resuelve el PE Loader direcciones de memoria en secciones ejecutables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda]Como resuelve el PE Loader direcciones de memoria en secciones ejecutables  (Leído 2,597 veces)
BloodSharp


Desconectado Desconectado

Mensajes: 811


¡ Hiperfoco !


Ver Perfil WWW
[Duda]Como resuelve el PE Loader direcciones de memoria en secciones ejecutables
« en: 24 Septiembre 2014, 17:12 pm »

Buenas, últimamente estoy haciendo un proyecto para ofuscar código de algunas rutinas que programo, por ejemplo:

Código
  1. int sumar(int a,int b)
  2. {
  3. int iRetVal;
  4. BeginEncryption();
  5. iRetVal=a+b;
  6. EndEncryption();
  7. return iRetVal;
  8. }

Donde el código entre BeginEncryption y EndEncryption está cifrado (por un programa externo que he creado que utilizo para cifrar y que encuentra esas 2 funciones) y en tiempo de ejecución se descifra para ejecutarse y vuelve a cifrarse cuando se termina de ejecutar. El problema surge cuando intento llamar a direcciones de memoria y/o funciones importadas dentro del código cifrado, por ejemplo:

Código
  1. char *szHola="Hola";
  2. void imprimiralgo()
  3. {
  4. BeginEncryption();
  5. printf("%s",szHola);
  6. EndEncryption();
  7. }

Mi duda entonces sería como resuelve el PE Loader las direcciones de memoria (ejemplo : push dirección / call[dirección] / mov registro,dirección)en las secciones ejecutables, dado a que estuve buscando información y todavía no logré encontrar. Lo prioritario sería saber como el Loader de Windows arregla en esas secciones ejecutables las direcciones de memoria, así para yo cuando llame a las rutinas de cifrado las pueda arreglar manualmente, las funciones importadas por el momento no son prioritarias debido a que puedo llamarlas de otra manera dentro del código cifrado aunque lo ideal sería también saber como las carga para arreglar ese código también.

Si alguien que sepa y pueda brindarme información respecto a esto se lo agradecería mucho...


B#


« Última modificación: 24 Septiembre 2014, 17:16 pm por IEAX » En línea



MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.513


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [Duda]Como resuelve el PE Loader direcciones de memoria en secciones ejecutables
« Respuesta #1 en: 24 Septiembre 2014, 18:34 pm »

Hola!

Si tu exe esta programado con ASLR, estonces es casi una DLL, por lo que tendrá informacion de relocacion. Esta info la usa el loader de windows para que todos los valores que hacen referencia a secciones del exe, tengan el valor correcto.

Aqui tienes un poco de info que te aclará algunas dudas.

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

BloodSharp


Desconectado Desconectado

Mensajes: 811


¡ Hiperfoco !


Ver Perfil WWW
Re: [Duda]Como resuelve el PE Loader direcciones de memoria en secciones ejecutables
« Respuesta #2 en: 24 Septiembre 2014, 19:46 pm »

Hola!

Si tu exe esta programado con ASLR, estonces es casi una DLL, por lo que tendrá informacion de relocacion. Esta info la usa el loader de windows para que todos los valores que hacen referencia a secciones del exe, tengan el valor correcto.

Aqui tienes un poco de info que te aclará algunas dudas.

Saludos!

Sí, el ejecutable al parecer tenía la tabla .reloc (cosa que yo pensé que no tuviera el ejecutable) y buscando las opciones de visual studio le cambié la opción y se la quité y funcionó con las direcciones de memoria y los imports... ;D
De todas maneras voy a ver bien el tema de las relocaciones debido a que también me gustaría utilizar el cifrado de rutinas en dlls...


B#
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Como puedo acceder a direcciones de memoria sin usar eax?
ASM
Avoidance25 7 6,253 Último mensaje 11 Noviembre 2009, 15:43 pm
por Avoidance25
[duda] Struc en C/C++, direcciones en memoria
Programación C/C++
CSQCasimiro 4 2,834 Último mensaje 6 Septiembre 2012, 22:26 pm
por CSQCasimiro
Duda direcciones de memoria C « 1 2 3 »
Programación C/C++
dRak0 23 9,987 Último mensaje 19 Julio 2013, 16:38 pm
por rir3760
WhatsApp resuelve los cierres constantes y problemas de memoria
Noticias
wolfbcn 0 1,389 Último mensaje 6 Marzo 2016, 03:14 am
por wolfbcn
Loader para memoria variable
Ingeniería Inversa
Marcelo! 8 3,714 Último mensaje 14 Mayo 2019, 17:18 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines