Autor
|
Tema: Ayuda con una modificación que no funciona (Leído 8,054 veces)
|
arfgh
Desconectado
Mensajes: 45
|
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 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: 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
|
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
Mensajes: 45
|
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
la pregunta es ¿porqué querés mover a [4AFA46]? qué es una dirección a la que ya apunta el programa 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
Mensajes: 45
|
el lugar en dónde quiero guardar AL está libre.
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
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.
|
|
|
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
Mensajes: 45
|
ya advertí que no entiendo mucho 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
|
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
Mensajes: 45
|
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:.
|
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)
|
|
|
|
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
|
11 Mayo 2005, 11:14 am
por Erick_666
|
|
|
AYUDA - Modificacion de Registro x VBScript
Scripting
|
robo_z
|
4
|
3,738
|
5 Febrero 2010, 22:15 pm
por robo_z
|
|
|
ayuda con modificacion de bytes
Java
|
chungui_
|
0
|
1,396
|
26 Enero 2013, 23:35 pm
por chungui_
|
|
|
Ayuda con modificación de proyecto SDL
Programación C/C++
|
WHK
|
4
|
2,437
|
31 Marzo 2016, 00:26 am
por MAFUS
|
|
|
Ayuda Modificacion de diccionario
Programación C/C++
|
eduardo1985
|
0
|
1,510
|
26 Enero 2017, 13:51 pm
por eduardo1985
|
|