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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  mover en memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: mover en memoria  (Leído 5,188 veces)
rembolso

Desconectado Desconectado

Mensajes: 163



Ver Perfil
mover en memoria
« en: 24 Julio 2011, 22:16 pm »

hola. acabo de empezar a programar en asm y e echo unos 25 ejemplos con hola mundo y ese tipo de cosa tambien e practicado descargar de una pila en orden etc. pero me encuentro con esta actividad mover el contenido de una direccion de memoria a otra direccion  ejemplo:
direccion a
004033C0 "hola mundo"
direccion b
004033E0 "mira esto:"
-------------
.MODEL SMALL
.CODE
Programa:
MOV AX, 004033C0
MOV DS, AX
MOV 004033E0 ,AX

.STACK

END Programa
------------ Y EN la direccion de mem 004033E0  TENDRIA QUE QUEDAR "mira esto: hola mundo"
pero me sale error bue me canse de intentarlo de mil formas diferentes talves me den una mano soy nobb ajaja  y un tutorial donde salgan este tipo de ejemplos saludos


En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: mover en memoria
« Respuesta #1 en: 25 Julio 2011, 01:36 am »

La instruccion que estas buscando es "movsb" o bien "lodsb y stosb".

Saludos


En línea

rembolso

Desconectado Desconectado

Mensajes: 163



Ver Perfil
Re: mover en memoria
« Respuesta #2 en: 25 Julio 2011, 04:38 am »

tendrias un ejemplo de como funciona o mas detalle yo encontre este pero no lo entiendo mucho con el rep

MOV AH, 62h
: INT 21h
: MOV ES, BX
: CLD
:
: mov bx, @data
: mov es, bx
: lea di, buffer
: mov cx , 333
: rep movsb
: mov [di], 30h ;** line 23 ????
:
: mov dx,buffer
: MOV AH, 09h
: INT 21h
En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: mover en memoria
« Respuesta #3 en: 25 Julio 2011, 05:33 am »

creo que tienes que leer un libro de ensamblador.

aquí te dejo un ejemplo:

Código
  1. .data
  2. Address1 db "Mensaje:"
  3.         db 25 dup (0)
  4.  
  5. Address2 db"Hola Mundo",0
  6.  
  7. .code
  8. start:
  9.  
  10. lea esi, offset Address2
  11. lea edi, offset [Address1 + 8]; Apunta a la memoría reservada, despues de "Mensaje:"
  12. mov ecx, 10; Longitud de Address2
  13. cld; Por Seguridad ._.
  14. rep movsb
  15.  
  16. end start
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
rembolso

Desconectado Desconectado

Mensajes: 163



Ver Perfil
Re: mover en memoria
« Respuesta #4 en: 25 Julio 2011, 07:30 am »

Иōҳ ese ejemplo si no me equivoco es para concatenar cadenas pero lo q yo busco es unir sectores de memoria (en ejecucion).
ejemplo
memoria :D
DIRECCION|   Hex byte                                     |show bytes
------------------------------------------------------------------------------
03BB0000   |  4D 65 6E 73 61 6A 65                   |Mensaje.....
03BB0001   |  00 00 00 00 20 14 55                    | . . . . . 2  @
03BB0009   |  48 6F 6C 61 20 4D 75 6E 64 6F      |Hola Mundo......
------------------------------------------------------------------------------
LA COSITA es que me traslade la cadena  03BB0000(mensaje) a la cadena 03BB0009   (hola mundo). y el sector de  memoria quedaria :
DIRECCION|   Hex byte                                     |show bytes
------------------------------------------------------------------------------
03BB0000   |  4D 65 6E 73 61 6A 65                   |Mensaje.....
03BB0001   |  00 00 00 00 20 14 55                    | . . . . . 2  @
03BB0009   |  48 6F 6C 61 20 4D 75 6E 64 6F 4D 65 6E 73 61 6A 65     |Hola Mundo Mensaje......
------------------------------------------------------------------------------
quedaria modificado en memoria. (supongamo que es la memoria de otro proceso )
lo que necesito es concatenar cualquier sector de memoria no importa si es de otra aplicacion
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: mover en memoria
« Respuesta #5 en: 25 Julio 2011, 15:23 pm »

Si estas en win32, la memoria viene protegida, donde intentes acceder a una direccion de memoria que no pertenece a tu ejecutable te encontraras con una excepcion.

Si quieres modificar otra ejecutable, tendras que cargarla como si fueras un depurador y ahi tendras acceso.
busca info de como cargar una ejecutable para depurar, o bien, tambien te sirve tutoriales para hacer trainers de videojuegos.

Citar
MOV AX, 004033C0
no hay forma que 004033C0 entre en AX que es un registro de 16bit.
Aqui tienes toda la info que necesitaras:
http://msdn.microsoft.com/en-us/library/ms679303
« Última modificación: 25 Julio 2011, 15:35 pm por _Enko » En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: mover en memoria
« Respuesta #6 en: 25 Julio 2011, 18:04 pm »

00402000  4D 65 6E 73 61 6A 65 3A 00 00 00 00 00 00 00 00  Mensaje:........
00402010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402060  00 00 00 00 00 00 00 00 00 00 00 00 48 6F 6C 61  ............Hola
00402070  20 4D 75 6E 64 6F                                 Mundo

despues de pasar las instrucciones que te deje:

00402000  4D 65 6E 73 61 6A 65 3A 48 6F 6C 61 20 4D 75 6E  Mensaje:Hola Mun
00402010  64 6F 00 00 00 00 00 00 00 00 00 00 00 00 00 00  do..............
00402020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00402060  00 00 00 00 00 00 00 00 00 00 00 00 48 6F 6C 61  ............Hola
00402070  20 4D 75 6E 64 6F                                 Mundo

Es lo que pides, ahora esto lo especificas recien

Citar
quedaria modificado en memoria. (supongamo que es la memoria de otro proceso )
lo que necesito es concatenar cualquier sector de memoria no importa si es de otra aplicacion

Como te dice _Enko, puedes mirar los trainer para juegos, y es que si tú quieres mover una cadena, o concatenar (porque eso haces) de una dirección de memoría a otra, primero tienes que saber si ese espacio, o bloque de memoría tiene permisos de lectura/escritura, si tiene el suficiente espacio para almecenar tu cadena concatenada.

Si tú estás en tu ejecutable, y haces mov eax, 004033C0, haciendo referencia al ejecutable externo, lo más probable es que te de una excepción, y crashee tu aplicación (en realidad estás haciendo referencia a tu ejecutable, no al externo), ya que o esa dirección no existe en tu ejecutable o estás intentando escribir en un lugar de tu ejecutable que no es la code, puede ser también que ahí hay opcodes y las estás cambiando.


Podes optar por un trainer o inyección dll.

Te dejo unos links talvez te interecen.

http://foro.elhacker.net/programacion_cc/tutoc_lecturaescritura_de_datos_de_una_aplicacion_externa_con_ejercicio-t258994.0.html

http://foro.elhacker.net/programacion_cc/tutorialiniciandome_en_el_hacking_mediante_inyeccion_de_dll_con_ejercici-t258750.0.html

http://foro.elhacker.net/asm/tutoinyeccion_dll_%E2%80%93_full_api-t282673.0.html

Nox.
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
rembolso

Desconectado Desconectado

Mensajes: 163



Ver Perfil
Re: mover en memoria
« Respuesta #7 en: 25 Julio 2011, 19:18 pm »

gracias. estoy buscando informacion asrca de la la estructura dememoria en assm y como actua . esto ya lo eecho en c++ y en vb  con copymen en c pero quiero en asm jeje .si termino el code lo posteo gracias
En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: mover en memoria
« Respuesta #8 en: 25 Julio 2011, 21:29 pm »

gracias. estoy buscando informacion asrca de la la estructura dememoria en assm y como actua . esto ya lo eecho en c++ y en vb  con copymen en c pero quiero en asm jeje .si termino el code lo posteo gracias

Puedes usar las mismas apis en asm, sin importar el lenguaje, siempre hacen lo mismo.
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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