Título: mover en memoria Publicado por: rembolso 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 Título: Re: mover en memoria Publicado por: _Enko en 25 Julio 2011, 01:36 am La instruccion que estas buscando es "movsb" o bien "lodsb y stosb".
Saludos Título: Re: mover en memoria Publicado por: rembolso 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 Título: Re: mover en memoria Publicado por: Иōҳ en 25 Julio 2011, 05:33 am creo que tienes que leer un libro de ensamblador.
aquí te dejo un ejemplo: Código
Título: Re: mover en memoria Publicado por: rembolso 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 Título: Re: mover en memoria Publicado por: _Enko 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 Título: Re: mover en memoria Publicado por: Иōҳ 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. Título: Re: mover en memoria Publicado por: rembolso 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
Título: Re: mover en memoria Publicado por: Иōҳ 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. |