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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Ayuda con una modificación que no funciona
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con una modificación que no funciona  (Leído 8,054 veces)
arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Ayuda con una modificación que no funciona
« en: 7 Julio 2016, 15:48 pm »

Hola amigos.

Estoy intentando hacer una modificación en un programa, que hace una llamada a la api 'Stretchblt', entonces antes de producirse la llamada he introducido un salto incondicional a una parte vacía al final del código para insertar allí mi asm :P
Evidentemente algo estoy haciendo mal ya que cuando ejecuto el programa, este revienta, también ejecutando paso a paso con el ollydbg no me pasa de una linea.

Mirad el código:

Código:

0048D773   .  52            PUSH EDX
0048D774   .  50            PUSH EAX
0048D775   .  E9 CD220200   JMP 004AFA47
0048D77A   .  FF15 90038700 CALL NEAR DWORD PTR DS:[<&GDI32.StretchBlt>]   \GDI32.StretchBlt

ahí podéis ver el salto incondicional, en su lugar estaba el comando Push EAX.


004AFA46   .  00            DB 00
004AFA47   >  50            PUSH EAX
004AFA48   .  A0 46FA4A00   MOV AL,BYTE PTR DS:[4AFA46]
004AFA4D   .  FEC0          INC AL
004AFA4F   .  3C 03         CMP AL,3
004AFA51   .  74 1C         JE SHORT 004AFA6F
004AFA53   .  3C 04         CMP AL,4
004AFA55   .  74 18         JE SHORT 004AFA6F
004AFA57   .  3C 05         CMP AL,5
004AFA59   .  74 14         JE SHORT 004AFA6F
004AFA5B   .  3C 06         CMP AL,6
004AFA5D   .  74 10         JE SHORT 004AFA6F
004AFA5F   .  A2 46FA4A00   MOV BYTE PTR DS:[4AFA46],AL
004AFA64   .  58            POP EAX
004AFA65   .  6A 00         PUSH 0
004AFA67   .  6A 00         PUSH 0
004AFA69   >  51            PUSH ECX
004AFA6A   .^ E9 F6DCFDFF   JMP 0048D765
004AFA6F   >  A2 46FA4A00   MOV BYTE PTR DS:[4AFA46],AL
004AFA74   .  58            POP EAX
004AFA75   .  68 80000000   PUSH 80
004AFA7A   .  68 80000000   PUSH 80
004AFA7F   .^ EB E8         JMP SHORT 004AFA69


Pues bien, cuando intento guardar mi contador con MOV BYTE PTR DS:[4AFA46],AL
pues el ollydbg no pasa de esa linea. Evidentemente entiendo muy poco de asm, y no sé que es lo que me está faltando.

ayuda y gracias.
« Última modificación: 7 Julio 2016, 16:16 pm por arfgh » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #1 en: 7 Julio 2016, 16:17 pm »

Hola!

Por lo que veo, 4AFA46 es el primer byte (DB 00) de tu código.
Ahora, normalmente la sección de código no es escribible y tu estás en ella.
Tienes 2 opciones: o haces la sección de código escribible (con CFFExplorer o la tool de tu preferencia) o bien usas una dirección que esté en la sección data (recomendable cerca del final para evitar que el programa machaque el byte), la cual, normalmente, sí es escribible pero no ejecutable.

Saludos!
En línea

MCKSys Argentina

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

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #2 en: 7 Julio 2016, 17:29 pm »

esa zona es al final de todo. Estás seguro de que la zona de código no se puede escribir ? entonces  por qué con la api 'writeprocessmemory' si que podemos ?

El asunto es que al llegar el ollydbg a esa posición del MOV, no pasa de ahí a la siguiente instrucción...
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #3 en: 7 Julio 2016, 22:57 pm »

la pregunta es
¿porqué querés mover a [4AFA46]? qué es una dirección a la que ya apunta el programa
Citar
Pues bien, cuando intento guardar mi contador con MOV BYTE PTR DS:[4AFA46],AL
si querés guardar Al deberías hacerlo en una dirección libre, como te indico MCKSys
En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #4 en: 8 Julio 2016, 00:28 am »

el lugar en dónde quiero guardar AL está libre.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #5 en: 8 Julio 2016, 00:47 am »

esa zona es al final de todo. Estás seguro de que la zona de código no se puede escribir ? entonces  por qué con la api 'writeprocessmemory' si que podemos ?

El asunto es que al llegar el ollydbg a esa posición del MOV, no pasa de ahí a la siguiente instrucción...

Estás mezclando todo. Como te dije, tienes 2 opciones en tu caso: hacer la sección .code/.text writable o escribir en la sección .data (ésta última es la más sencilla, pues sólo debes cambiar la dirección donde quieres escribir).

Por otro lado, WriteProcessMemory se usa desde otro proceso (normalmente) y no discrimina entre secciones de ejecutables, stack, heap, etc. Basta con que la memoria esté mapeada.

Saludos!

PD: Si hubieras completado la intro a Olly de Ricardo Narvaja no tendrías este tipo de problemas.  :P
En línea

MCKSys Argentina

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

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #6 en: 8 Julio 2016, 01:04 am »

ya advertí que no entiendo mucho :P
no obstante para escribir en la sección .data, tiene que haber un lugar para poder meter los bytes que necesitamos. 15 bytes es la zona más grande y vacía que he encontrado allí. No siendo que se pudiese hacer ese código más pequeño...

si es que se puede agrandar alguna sección pues ya me diréis como.....
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #7 en: 8 Julio 2016, 04:02 am »

Si el código que has colocado es todo el código, entonces sólo necesitas 1 byte de la sección .data.
Toma uno del final de la sección y listo.

Saludos!
En línea

MCKSys Argentina

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

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Ayuda con una modificación que no funciona
« Respuesta #8 en: 8 Julio 2016, 14:59 pm »

Amigos la zona .idata imports también es RW y también tiene mucho espacio vacío. Sería factible usar ese espacio con seguridad ?

Es posible programáticamente hacer una sección .rdata con permisos de escritura ? o cualquier otra que no sea RW.

Y también, es posible programaticamente expandir el espacio de una de las secciones y poder así meter nuestro código ?

saludos
En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Ayuda con una modificación que no funciona
« Respuesta #9 en: 8 Julio 2016, 16:57 pm »

Amigos la zona .idata imports también es RW y también tiene mucho espacio vacío. Sería factible usar ese espacio con seguridad ?

Es posible programáticamente hacer una sección .rdata con permisos de escritura ? o cualquier otra que no sea RW.

Y también, es posible programaticamente expandir el espacio de una de las secciones y poder así meter nuestro código ?

saludos

si, busca por una app que se llama t0po o topo en la web de ricardo narvaja
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda en modificacion de una foto (principiante)
Diseño Gráfico
Erick_666 3 2,229 Último mensaje 11 Mayo 2005, 11:14 am
por Erick_666
AYUDA - Modificacion de Registro x VBScript
Scripting
robo_z 4 3,738 Último mensaje 5 Febrero 2010, 22:15 pm
por robo_z
ayuda con modificacion de bytes
Java
chungui_ 0 1,396 Último mensaje 26 Enero 2013, 23:35 pm
por chungui_
Ayuda con modificación de proyecto SDL
Programación C/C++
WHK 4 2,437 Último mensaje 31 Marzo 2016, 00:26 am
por MAFUS
Ayuda Modificacion de diccionario
Programación C/C++
eduardo1985 0 1,510 Último mensaje 26 Enero 2017, 13:51 pm
por eduardo1985
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines