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
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Ayuda con funcion "Split"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con funcion "Split"  (Leído 14,151 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Ayuda con funcion "Split"
« en: 26 Marzo 2013, 23:09 pm »

Buenas amigos del foro.. Espero que anden bien.. :)

Bueno, creo que hoy la duda esta clarisima,, preciso dividir un string con un criterio dado,, asi, tal cual lo haria vb con split.

Si a alguien se le ocurre algo, una idea por donde empezar, o mejor aun un pseudocodigo, o lo que sea jaja

Desde ya, muchas gracias! :)


En línea

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Ayuda con funcion "Split"
« Respuesta #1 en: 27 Marzo 2013, 04:56 am »

hola Vaagish los string en asm se manejan en posiciones de memoria no puedes manejarlos como el vb ejemplo:

Nota: los comandos y el code pueden estar mal llaque no estoy en la pc

si tienes la palabra "hola mundo hacking" en la posicion 00401000 y la quieres dividir seria.

Código:
.data?
parte1 db ?
parte2 db ?
parte3 db ?
.code
xor eax,eax
xor ebx,ebx
.while ebx <= 4
   mov eax, bytes ds prt[00401000+ebx]
   mov parte1,eax
   inc ebx
.endwhile
xor eax,eax
xor ebx,ebx
.while ebx <= 5
   mov eax, bytes ds prt[00401005+ebx]
   mov parte2,eax
   inc ebx
.endwhile
xor eax,eax
xor ebx,ebx
.while ebx <= 7
   mov eax, bytes ds prt[0040100C+ebx]
   mov parte3,eax
   inc ebx
.endwhile
lo que ase este code es guardar la palabra "hola" en la variable parte1 y la palabra "mundo" en parte2 y "hacking" en parte3

saludos flamer y para unir es a la biseversa


En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #2 en: 27 Marzo 2013, 05:21 am »

Gracias Flamer por la respuesta, me es de gran ayuda para empezar, es que aun soy muy noob en esto de ASM.
El unico detalle es que mi code no tiene una cadena predefinida, y yo preciso cortar la cadena con un delimitador dado..
Seguro sabras de que hablo.. mi cadena llega algo asi, por ejemplo: "Mnsj|Ola keace", yo preciso :

Parte1 = "Mnsj"
Parte2 = "Ola keace"

A lo mejor, con darme una idea como "retocar" ese code y yo me manejo.. si no puedo preguntare otra vez jejeje

Gracias!!  

EI: juntando mensajes.

Y ya que estoy en el hilo, me tomo el atrevimiento de hacer una consulta bien, pero bien noob..
El operador xor, por lo que entiendo:

Devuelve True si                                         
a = true y b = false                                   
a = false y b = true   

Y False si:
a = true y b = true
a = false y b = false

pero.. para que sirve en este caso por ejemplo?

EDITADO: Ta, ya entendi para que sirve xor :)
« Última modificación: 27 Marzo 2013, 09:08 am por Eternal Idol 7D » En línea

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Ayuda con funcion "Split"
« Respuesta #3 en: 27 Marzo 2013, 06:28 am »

el xor por si lo entendistes mal o de otra forma te lo explico yo lo uso para dejar los registros en cero y el codigo que te puse arriba es para separar las palabras guardandolas en las variables parte1, 2, 3.

y por otro lado te deje el ejemplo para que te guies por ti mismo no puedo aserte todo el codigo y si tienes dudas aqui te dejo un link donde encontraras varios tutoriales te recomiendo el de radasm

ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/


saludos flamer y si te atoras pregunta
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #4 en: 27 Marzo 2013, 07:17 am »

Excelente recopilacion de tutos! Hoy de tarde los veo con tiempo!
Si, estoy usando el RadASM,, es muy bueno.. y por ahi vi en ese enlace que me mandaste que hay unos tutos de RadASM, me viene impeca para ampliarme mas en ese IDE...
Con respecto al code creo que voy a poder adaptarlo.. ;)

Gracias sabio! Abrazo!

Y larga vida al rey ASM ! Jejeje
En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #5 en: 27 Marzo 2013, 10:52 am »

Hola

Esto puede ayudarte.

Código
  1. .section .data
  2.  
  3. cadena:
  4. .ascii "dddabbb"
  5.  
  6. .section .text
  7. .globl _start
  8.  
  9. _start:
  10.  
  11. push cadena
  12.  
  13. _C.0:
  14.  
  15. incq %rsp
  16. cmpb $0x61, (%rsp)
  17. jne _C.0
  18.  
  19. incq %rsp
  20. movl (%rsp), %edi
  21. incb %al
  22. syscall

Si quieres que copie las "d", elimina el inc de la línea 19 y el mov dejalo así

Código
  1. movl -0x4(%rsp), %edi

Es un ejemplo que hice, se puede mejorar mucho más.

Un saludo.
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #6 en: 27 Marzo 2013, 22:09 pm »

Hola gentes!
La verdad queria hacerlo solo, pero esto me esta rompiendo la cabeza..

Tengo un problema con esta instruccion: mov eax, dword ptr [Cadena + ebx]

Veamos,, esto deberia poner la direccion de memoria de mi cadena en el registro eax, no ??

Pero si hago esto:

mov OtraVar, eax
messagebox OtraVar

Me muestra los 4 primeros caracteres de mi Cadena..
No estoy utilizando while, ni nada.. quedaria asi:

   xor eax, eax
   xor ebx, ebx
   
   mov eax, dword ptr [Cadena + ebx]
   mov Texto, eax
   invoke MessageBox, NULL, addr Texto, addr Titulo, MB_OK

Resultado "Esta" -> 4 primeros caracteres de mi Cadena

Como deberia recorrer el string caracter por caracter ? Yo me encargo del cmp, del jmp y todo lo demas :D

Graciass !! Y Gracias cpu2 tambien pero eso es fasm, no? apenas puedo con masm aun jejeje
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #7 en: 27 Marzo 2013, 23:12 pm »

Si tienes un buffer (Cadena), puedes usar la palabra offset para hacer referencia a la posicion donde esta.

Código:
mov eax, offset Cadena

Hace que eax apunte al primer byte de la cadena.

Ahora

Código:
mov eax, dword ptr [Cadena]

Hace que eax contenga "el dword que esta apuntado por" Cadena, osea los 4 primeros bytes de la misma.

Para recorrer el stringz char x char hay muchos metodos. Lo que hice YO al principio, fue hacer un programa que usaba las macros de masm (fijate el folder doc de la instalacion de masm), use StrCopy (no recuerdo bien cual fue con certeza), compile y miré el asm con Olly.
En línea

MCKSys Argentina

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

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Ayuda con funcion "Split"
« Respuesta #8 en: 28 Marzo 2013, 00:09 am »

hola aqui un codigo aver si te funciona ya que no estoy en la pc pero llegando a casa si esta mal lo soluciono.
El codigo debe de imprimir un msgbox en pantalla de cada letra dime si te funciona
Código:
.data
Titulo db "Mensage hola",0
Cadena db "hola mundo hacking",0
.code
   xor eax, eax
   xor ebx, ebx
   .while ebx <= 18
   mov eax, bytes ds ptr [Cadena + ebx]
   invoke MessageBox, NULL, addr eax,
addr Titulo, MB_OK
   inc ebx
   .endwhile

saludos flamer y cualquier duda pregunta
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #9 en: 28 Marzo 2013, 00:30 am »

Gracias por las respuestas a todos!!

No me funco eso Flamer, me dice un error que ya me habia salido, en tantas pruebas que he echo.. me dice:

missing operator in expression -> mov eax, byte ds ptr [Cadena + ebx]

miren como va la cosa, asi me pueden decir si voy bien :)

.code

Inicio:

   xor eax, eax
   xor ebx, ebx
   mov eax, offset[Cadena]
   
.while ebx < 4
   
   mov eax, byte ptr [eax+1]  -> Se que aca deberia sumar ebx, pero no funca
   cmp eax, '|'
   je Corta
   mov Texto, eax
   inc ebx   
   
.endw

Corta:
   invoke dwtoa, eax, addr Texto
   invoke MessageBox, NULL, addr Texto, addr Titulo, MB_OK
   invoke ExitProcess, 0

end Inicio

Si pongo como decis tu Flamer me dice missing op. y si pongo +1 me dice invalid instruction.. Me quiere enfermar jajaja

Bueno, por otro lado tambien precisaria que el while se ejecute hasta el tamaño del string,, no solo hasta 4 :/

Pd: Gracias MCKSys tambien por el aporte, ya comprendi el tema dword y el byte ;)
« Última modificación: 28 Marzo 2013, 00:39 am por Vaagish » En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con la función de "previsualizar fotograma"
Diseño Gráfico
nichihack 0 1,807 Último mensaje 5 Febrero 2005, 01:26 am
por nichihack
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 17,284 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
Duda con "Split"
Programación Visual Basic
HJZR4 6 2,211 Último mensaje 2 Noviembre 2007, 02:21 am
por elmaro
Ayuda T_T alguien sabe como usar la funcion "kbhit()"?
Programación C/C++
Ai Toi 2 11,680 Último mensaje 19 Julio 2015, 17:07 pm
por Nico01
Ayuda con funcion de "click" en raton
.NET (C#, VB.NET, ASP)
j0lama 1 2,175 Último mensaje 29 Julio 2015, 14:22 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines