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

 

 


Tema destacado: Trabajando con las ramas de git (tercera 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,150 veces)
Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


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

como te dije dame tiempo de llegar a mi casa y te lo pongo bien

saludos flamer y dame tiempo


En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #11 en: 28 Marzo 2013, 01:02 am »

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

A ver si lo entiendo porque la verdad esto se esta desviando, quieres mover carácter por carácter a eax no?

Para luego imprimir cada carácter con la api messagebox?

Sguiendo el código anterior hice esto aver si te puede ayudar

Código
  1. _C.0
  2.  
  3. lodsb
  4. cmpb $0x7c, (%rsi)
  5. jne _C.0

Copia byte por byte a al "eax de 8 bit", hasta que se encuentre con "|" es eso lo que quieres?

Y Gracias cpu2 tambien pero eso es fasm, no? apenas puedo con masm aun jejeje

De nada, se trata de la sintaxis de AT&T, los ejemplos son de 64 bits solo los tienes que traducir a nasm y 32 bits.

Un saludo.


En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #12 en: 28 Marzo 2013, 01:15 am »

En realidad yo preciso una funcion que sea Split, sin mas.. yo le paso un string como parametro a la funcion y ella se encarga de Splitearla.. El tema de los mensajes de windows son solo para mostrar en pantalla como me queda la cadena X)

Luego veo el tema de la traduccion AT&T.. Si ya me complica masm.. imaginate que entiendo yo de eso jaja

Saludos !
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 #13 en: 28 Marzo 2013, 05:21 am »

Veo que no tienes en cuenta algunas cosas. Examinemos el problema:

Quieres hacer en MASM lo mismo que en VB6: usar la función split.

La función split toma un string de largo arbitrario (por sencillez diremos que es un string terminado en zero) y otro string, el cual NORMALMENTE es de largo 1 (por sencillez lo tomaremos como de largo 1).

Lo que hace la función es partir el primer string en la posición de cada ocurrencia del segundo string. Cabe destacar que el string de separación (el segundo string) no se incluye en el resultado.

Luego, las strings obtenidas se colocan en un array (matriz en vb) de strings.

Faltan analizar los casos especiales, como por ej.: si no se encuentra el 2º string, pero por ahora basta con lo dicho.

Ahora, para lo anterior, debes tener en cuenta lo siguiente:

El array de cadenas: lo devuelves como puntero? Osea, la función se encarga de allocar la memoria, llenarla (partir la cadena) y devolver un ptr al array en eax? O mejor lo pides como parámetro? Si viene como parámetro: cuál debería ser el tamaño? Un array de strings en realidad sería un array de punteros, donde deberás especificar el tamaño, con lo que ya tendrías una estructura.

Como ves, no es tan sencillo como suena, pero tampoco imposible. Te aconsejo mirar la carpeta HELP del MASM. En especial el archivo masmlib. Verás que la lib de MASM tiene muchas cosas que puedes usar y que te permitirán implementar esta función de una forma sencilla. Ejemplos que te podrían servir en este caso:

create_array  Create an array of pointers to a user defined array
InString Find substring in zero terminated source string
szWcnt  Count the occurrence of text in a zero terminated string

y la lista sigue y sigue... :)

Saludos!
En línea

MCKSys Argentina

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

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #14 en: 28 Marzo 2013, 05:48 am »

Huu,, y yo de novato mandandome estas ocurrencias... Igual, creo que no seria para tanto MCK, te puedo decir MCK no ? jaja
Bueno, a lo que voy..
Citar
Lo que hace la función es partir el primer string en la posición de cada ocurrencia del segundo string.
No entiendo esa parte.. Lo que hace la funcion es partir una cadena, cuando encuentra un delimitador.. en este caso el caracter " | ". Asi mismo yo se que mi cadena solo se va a dividir en 2, y si en el futuro agrandase la funcion, bueno.. despues veo..

Voy a ser claro para que no de a confusion ;)

La cadena que preciso cortar puede ser por ejemplo: "CONNECT|Username" y comandos de ese tipo,,, supongo ya habran visto este tipo de cadenas en 1 millon de sources y se sobre entiende para que sirve.. ;)

Pd: voy a mirar eso que me dijiste y el enlace que hay por ahi arriba
« Última modificación: 28 Marzo 2013, 05:50 am por Vaagish » En línea

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Ayuda con funcion "Split"
« Respuesta #15 en: 28 Marzo 2013, 05:50 am »

Hola ya quedo el codigo
Código:
.data
Mensaje db "Hola mundo",0
Titulo db "Resultado",0
.data?
Caracter db ?
.code
xor eax,eax
xor ebx,ebx
.while ebx<=10
   mov al,byte ptr ds:[Mensaje+ebx]
   mov Caracter,al
   invoke messagebox,null,addr Caracter,addr Titulo,MB_OK
   inc ebx
.endw

dime si te salta error ami mesale bien

saludos flamer y dime como te fue
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

xv0


Desconectado Desconectado

Mensajes: 1.027



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

Código
  1. .section .data
  2.  
  3. cadena:
  4. .ascii "cc|aa"
  5.  
  6. .section .text
  7. .globl _start
  8.  
  9. _start:
  10.  
  11. movq $cadena, %rbx
  12.  
  13. _C.0:
  14.  
  15. incb %bl
  16. cmpb $0x7c, (%rbx)
  17. jne _C.0
  18.  
  19. movw -0x2(%rbx), %di
  20. incb %bl
  21. movw (%rbx), %si

Cuando encontrara  "|" copiaría los carácteres "cc" a di, y "aa" a si.

Más o menos es eso lo que pretendes no?

Un saludo.
En línea

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #17 en: 28 Marzo 2013, 15:56 pm »

Por si te sirve lo hice en C. Si te da una idea o si quieres usarla en tu codigo de ASM.

http://foro.elhacker.net/programacion_cc/c_funcion_split-t386651.0.html

Sa1uDoS
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #18 en: 29 Marzo 2013, 00:06 am »

Excelente amigos! Gracias por las respuestas a todos!! Yo pase 16 hs en querer resolverlo,, ya me tenia mal jaja

Es exactamente eso lo que preciso cpu2 pero adaptado al code de flamer que funciona impeca.. asi que ahora me toca a mi unirlos jeje Gracias! Mr.blood, tambien me sirve de guia.. aca todo sirve, no hay desperdicios ;)

Gracias a todos! Ya volvere con alguna pregunta de novato jeje

En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Ayuda con funcion "Split"
« Respuesta #19 en: 30 Marzo 2013, 04:48 am »

Hacer una función split en la que el delimitador sea un carácter, sólo un carácter, es muy fácil. Tienes que recorrer la cadena byte a byte y comparar (hay instrucciones precisas en ASM que usan los registros  ESI y EDI, muy útiles para estos casos).

Yo seguiría este procedimiento:

Reserva memoria para un array de punteros. Almacena la dirección inicial de la cadena a splitear en el primer elemento del array.
Ahora vamos recorriendo la cadena y buscamos la primera ocurrencia del delimitador. En cuanto la encontremos, sustituimos el byte por un byte nulo (0x00) y aumentamos el contador para pasar al siguiente carácter, cuya dirección almacenamos en el siguiente elemento de nuestro array de punteros.
Seguimos esto en bucle hasta encontrarnos con el final de la cadena.

Hecho esto, tendremos un bonito array de punteros cada uno apuntando a un trozo de la cadena, o mejor dicho, tendremos muchas cadenas almacenadas consecutivamente en memoria. Perfecto.

Ahora, si quieres hacer un split como el de VB (delimitador de más de un carácter), la cosa se complica. Lo difícil en ese caso es el algoritmo a usar, y hay que pensarlo bien para que sea óptimo.
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