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
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Loader para memoria variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Loader para memoria variable  (Leído 3,268 veces)
Marcelo!

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Loader para memoria variable
« en: 10 Mayo 2019, 15:54 pm »

Hola a todos, solamente una gota de su conocimiento.
Hay alguna forma, o algún generador de loader para poder realizar como en el siguiente ejemplo?

Mov dword ptr ds:[D65E40],eax
Mov dword ptr ds:[eax],39383938

Mi intención es sobeescribir con el valor 39383938hex cualquier valor que haya en la dirección que indica eax que es variable y además se encuentra en memoria.
La dirección D65E40 es fija.
Cualquier ayuda plis esperaré su respuesta.
Gracias
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.470


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Loader para memoria variable
« Respuesta #1 en: 10 Mayo 2019, 17:04 pm »

Hola!

Ingresa "loader" en el buscador de la web de ricardo narvaja:

Código:
http://ricardonarvaja.info.info/WEB/buscador.php

y encontraras muchas teorias sobre como crear tu propio loader.

Saludos!
En línea

MCKSys Argentina

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

Marcelo!

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Loader para memoria variable
« Respuesta #2 en: 11 Mayo 2019, 20:00 pm »

Ok gracias sr MCKSys, anteriormente ya había ingresado a la página con el mismo fin, pero seguramente me pasé por alto muchas cosas, lo volveré a revisar.

En realidad estaba practicando con dup y process patcher, y logré parchear código en memoria en otros progs.

La única dificultad que encuentro es la siguiente, ya que este ejecutable detecta los parcheos en memoria:

Por ejemplo
1. El programa calcula una dirección en memoria cada vez distinta en eax, por ejemplo eax=00B4B4B4 y lo guarda en otra dirección conocida la cual no cambia:

mov dword ptr ds:[D65E40],eax
En este caso eax=00B4B4B4



2. Ahora ingreso mi serial falso y por supuesto, el programa hace muchas transformaciones y vuelteos y lo convierte por ejemplo en 39383938 y lo guarda en la dirección que había calculado antes:

mov dword ptr ds:[00B4B4B4],39383938

Luego compara mi clave ya transformada con la clave correcta, la cual me anoté en papel y verifiqué que la clave correcta se mantiene en cada ejecución, al menos en la computadora que uso.

3. Si cambio en el dump en olly mi clave falsa por la clave correcta, el programa aparece registrado y funcional pero solamente hasta que se cierre.

Entonces cómo puedo decirle al loader que tome la dirección calculada (00B4B4B4) y en ella cargue la clave que tengo anotada? Ya que esta dirección cambia en cada ejecución.

Cualquier ayuda es muy apreciada e incluso me gustaría pensar en alguna compensación por los logros obtenidos en el foro.[/i][/i]
En línea

Geovane

Desconectado Desconectado

Mensajes: 208



Ver Perfil
Re: Loader para memoria variable
« Respuesta #3 en: 11 Mayo 2019, 21:57 pm »

¡Hola

Si al cerrar él pierde la activación, es porque está editando en una región fuera de las secciones ejecutables.

Usted necesita saber dónde dentro del intervalo de memoria, dentro de las secciones fijas, donde usted define o busca por la serie.

Saludos
En línea

Para servicios, envíe un mensaje privado, sólo para servicios en curso hasta fecha de 10/06/2019
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.470


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Loader para memoria variable
« Respuesta #4 en: 12 Mayo 2019, 01:15 am »

Entonces cómo puedo decirle al loader que tome la dirección calculada (00B4B4B4) y en ella cargue la clave que tengo anotada? Ya que esta dirección cambia en cada ejecución.

Hola!

Seguramente, esa direccion esta apuntada por otra variable. Busca hacia atrás en el codigo y seguramente, encontraras el lugar donde esta el puntero a dicha variable.

Saludos!
En línea

MCKSys Argentina

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

Marcelo!

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Loader para memoria variable
« Respuesta #5 en: 12 Mayo 2019, 04:51 am »

Gracias Geovanne por la respuesta, me fijaré esa parte de las secciones en la memoria.

Asimismo al Sr. MCKSys
Citar:
Seguramente, esa direccion esta apuntada por otra variable. Busca hacia atrás en el codigo y seguramente, encontraras el lugar donde esta el puntero a dicha variable.

Es justamente lo que voy haciendo, solamente que ya encontré el puntero a esa variable y justamente es D65E40, en esa dirección se guarda la variable, esta variable es la dirección donde se encuentra mi clave.

A partir de ahí es que no sé cómo hacer para que el loader vaya a la dirección que muestra la variable y escriba los valores.
Es posible hacer esto con alguna herramienta?
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.470


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Loader para memoria variable
« Respuesta #6 en: 12 Mayo 2019, 05:40 am »

Hola!

A ver si te entiendo:

En 0xD65E40 se guarda el valor que quieres cambiar o el puntero al valor que quieres cambiar?

Si es lo primero, puedes hacer WriteProcessMemory en 0xD65E40 con el valor que quieres colocar.

Si es lo segundo, haces ReadProcessMemory en 0xD65E40 y luego WriteProcessMemory en el valor devuelto.

A menos que no sea ninguna de las anteriores...  :P

Saludos!
En línea

MCKSys Argentina

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

Marcelo!

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Loader para memoria variable
« Respuesta #7 en: 14 Mayo 2019, 17:06 pm »

Citar:
A ver si te entiendo:

En 0xD65E40 se guarda el valor que quieres cambiar o el puntero al valor que quieres cambiar?

Si es lo primero, puedes hacer WriteProcessMemory en 0xD65E40 con el valor que quieres colocar.

Si es lo segundo, haces ReadProcessMemory en 0xD65E40 y luego WriteProcessMemory en el valor devuelto.



Ok gracias MCKSys Argentina, justamente es lo segundo, en D65E40 se guarda el puntero al valor que quiero cambiar.

Ahora si no es mucho una consultica más ya que no soy programador, habrá alguna herramienta que se pueda usar o que me puedan recomendar para esta tarea? O necesariamente se tendría que programar. Ya que al menos quedaría conforme con saber si está dentro de mis posibilidades o ver otra opción.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.470


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Loader para memoria variable
« Respuesta #8 en: 14 Mayo 2019, 17:18 pm »

No estoy seguro de conocer alguna tool que te permita hacer eso. Los patcher te permiten cambiar codigo del binario, pero no creo que te permitan trabajar sobre un puntero a variable.

Lo mas sencillo de hacer seria usar topo para agregar una sección (o encontrar una "cueva") en el binario, redirigir el entrypoint y hacer tus cambios en esa parte y luego dejar que el programa corra.
Ahora, si el programa cambia esa direccion luego, vas a tener que hacer un hook para que luego de ese cambio, se ejecute tu codigo y asi registrar la app.

Lamentablemente, no conozco algo automatico.

Saludos!
En línea

MCKSys Argentina

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines