Autor
|
Tema: Ayuda con funcion "Split" (Leído 14,207 veces)
|
Vaagish
Desconectado
Mensajes: 875
|
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
Mensajes: 1.052
crack, crack y mas crack...
|
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. .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
|
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
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
Mensajes: 1.052
crack, crack y mas crack...
|
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
|
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
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
Mensajes: 1.027
|
Hola Esto puede ayudarte. .section .data cadena: .ascii "dddabbb" .section .text .globl _start _start: push cadena _C.0: incq %rsp cmpb $0x61, (%rsp) jne _C.0 incq %rsp movl (%rsp), %edi incb %al syscall
Si quieres que copie las "d", elimina el inc de la línea 19 y el mov dejalo así movl -0x4(%rsp), %edi
Es un ejemplo que hice, se puede mejorar mucho más. Un saludo.
|
|
|
En línea
|
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
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 Graciass !! Y Gracias cpu2 tambien pero eso es fasm, no? apenas puedo con masm aun jejeje
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
Si tienes un buffer (Cadena), puedes usar la palabra offset para hacer referencia a la posicion donde esta. Hace que eax apunte al primer byte de la cadena. Ahora 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
Mensajes: 1.052
crack, crack y mas crack...
|
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 .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
|
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con la función de "previsualizar fotograma"
Diseño Gráfico
|
nichihack
|
0
|
1,830
|
5 Febrero 2005, 01:26 am
por nichihack
|
|
|
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
|
taton
|
7
|
17,378
|
20 Septiembre 2006, 01:45 am
por taton
|
|
|
Duda con "Split"
Programación Visual Basic
|
HJZR4
|
6
|
2,223
|
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,715
|
19 Julio 2015, 17:07 pm
por Nico01
|
|
|
Ayuda con funcion de "click" en raton
.NET (C#, VB.NET, ASP)
|
j0lama
|
1
|
2,210
|
29 Julio 2015, 14:22 pm
por Eleкtro
|
|