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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10
41  Programación / ASM / Re: Salir sin usar ExitProcess !!!! en: 19 Junio 2009, 00:42 am
yo nunca he usado ExitProcess en asm  :P y en C solo cuando tengo varios hilos.
42  Programación / ASM / Re: Invertir una string , sencillo ... en: 18 Junio 2009, 22:40 pm
me encontre con un problemita, cuando intente ver el codigo en accion mediante el olly, me di cuenta de algo

lea ebx,string
dec ebx

en un principio ebx apunta al primer caracter de la cadena y al decrementarlo apunta a una region de memoria que no es la cadena
y cuando hagas

mov byte ptr ds:[ebx], cl

salta un error y cierra el programa lo correcto es decrementar eax, porque los limites de un array es size -1

aqui esta el testeo y la salida es emetreivni

Código
  1. format pe console
  2. entry main
  3. include 'c:\fasm\include\win32ax.inc'
  4. .data
  5. texto   db      'invierteme',0
  6. .code
  7. main:
  8.    xor eax,eax
  9.    add eax,10
  10.    mov ebx, texto
  11.        add eax,ebx
  12.        dec eax
  13.  
  14.        asd:
  15.         mov ch, byte[ebx]
  16.         mov cl, byte[eax]
  17.         mov byte[ebx], cl
  18.         mov byte[eax], ch
  19.         inc ebx
  20.         dec eax
  21.         cmp     ebx,eax
  22.         jbe asd
  23.  
  24. push texto
  25. call [puts]
  26. add esp,4
  27. ret
  28.  
  29. section '.idata' import data readable
  30. library msvc,'msvcrt.dll'
  31. import msvc,puts,'puts'
  32.  
43  Programación / ASM / Re: De mayuscula a minuscula ... en: 18 Junio 2009, 04:39 am
Hola a todos , esta es mi forma de pasar un texto a mayuscula o minuscula
(add    byte ptr ds:[eax], 20h) , no es mejor ni peor solo es la forma que encontre.
Escriban las suyas para comparar

lea     eax, string
dec eax
inicio:
inc     eax
cmp     byte ptr ds:[eax], 0
je      salir

cmp     byte ptr ds:[eax], 61h
jb      inicio               ; Salta si es menor a "61" o "a"
cmp     byte ptr ds:[eax], 7Ah
ja      inicio               ; Salta si es mayor que "7a" o "z"
sub     byte ptr ds:[eax], 20h  ; Resta 20 para hacerlos mayuscula
jmp     inicio ; SAlta a el principio
salir:

a mayusculas
Código
  1. toUpper:
  2. push ebp
  3. mov ebp,esp
  4.    mov esi,[ebp + 8]
  5. begin:
  6.    lodsb
  7.    cmp al,0
  8.    je endx
  9.    sub al,0x61
  10.    cmp al,0x1A
  11.    ja incr
  12.    and byte[esi-1],0xDF
  13.    incr:
  14. jmp begin
  15. endx:
  16. pop ebp
  17.  
  18. retn 4
  19.  

a minusculas
Código
  1. toLower:
  2.    push ebp
  3.    mov ebp,esp
  4.    mov esi,[ebp + 8]
  5. beginL:
  6.    lodsb
  7.    cmp al,0
  8.    je endx
  9.    sub al,0x41
  10.    cmp al,0x1A
  11.    ja incrL
  12.    or byte[esi-1],0x20
  13.    incrL:
  14. jmp beginL
  15. endxL:
  16. pop ebp
  17. retn 4
  18.  

no son la mejor implementacion del mundo pero funcionan  :P
44  Programación / ASM / Re: Evitar que te borren los Debug registers en un debugger ring3 en: 18 Junio 2009, 04:25 am
no estoy muy informado sobre el tema pero me parece que eso se hace desde el ring0  :-\

encontre esto puede te sirva puede que no

http://blog.48bits.com/?p=60
http://support.microsoft.com/kb/121093/es
45  Programación / ASM / Re: Invertir una string usando la pila ... en: 16 Junio 2009, 22:18 pm
usa el GeSHI para que el codigo se vea mas bonito y si la pila tiene un limite.
En fin dejo una version de strrev un tanto chapucera porque no me acostumbro todavia a programar en asm.

Código
  1. strrev:
  2.        push ebp
  3.        mov ebp,esp
  4.        push edi
  5.        mov edi,[ebp + 8]
  6.        push edi
  7.        call strlen
  8.        xor ecx,ecx
  9.        dec eax
  10.        jmp LL1
  11.        LL0:
  12.                dec eax
  13.                inc ecx
  14.                cmp ecx,eax
  15.                jge LL2
  16.        LL1:
  17.                mov dl,byte[edi + ecx]
  18.                xchg byte[edi + eax],dl
  19.                mov byte[edi + ecx],dl
  20.                jmp LL0
  21.  
  22.        LL2:
  23.        mov eax,[ebp + 8]
  24.        pop edi
  25.        pop ebp
  26. retn 4
  27.  
  28. strlen:
  29. push edi
  30. xor ecx,ecx
  31. mov edi, [esp + 8]
  32. not ecx
  33. xor eax,eax
  34. cld
  35. repne scasb
  36. not ecx
  37. pop edi
  38. add eax,ecx
  39. dec eax
  40. retn 4
  41.  
  42.  

la funcion depende de strlen pero eso se puede corregir injertandolo dentro de la misma funcion yo no lo hice porque ya tenia strlen y me dio hueva ponerlo ademas, que no se me hace facil todavia planear un codigo asm
46  Programación / ASM / Re: Hola Como Seguir? en: 16 Junio 2009, 02:42 am
visita el Entry Point ahi hay unos libros, te recomiendo el primero esta muy bien explicado y es el que yo estoy usando para aprender, nada mas que debes saber ingles

tambien te recomiendo echarle un vistazo a los codes de YST para que te des una idea.
47  Sistemas Operativos / Windows / Re: Cuales son los archivos mas importantes de windows en: 16 Junio 2009, 00:22 am
ntldr en la raiz.

http://es.wikipedia.org/wiki/NTLDR
48  Programación / ASM / Re: [ASM]Syscall no me funciona + fallo de segmentacion en: 14 Junio 2009, 19:38 pm
gracias por la documentacion, estan muy buenos los ejemplos y estan en fasm   ;-)
49  Programación / ASM / Re: Pequeño codigo para comparar strings... en: 14 Junio 2009, 19:37 pm
muy bien arkangel me sabia qua haciendo un xor 0x20 al caracter se cambia a mayusculas pero si ya esta en mayusculas lo vuelve a minisculas, muy bueno el uso de and  ;-) .

PD. no seria mas facil usar esi y edi  :huh:
50  Programación / ASM / Re: [ASM]Syscall no me funciona + fallo de segmentacion en: 14 Junio 2009, 15:50 pm
perfecto ese era el error ahora si me funciona bien, era lo de writeable, me funciona de ambas maneras poniendo un nuevo segmento con readable writeable o asignandole la propiedad de escritura al segmento actual. Que error mas estupido  :laugh:

gracias EI y yst no se me habia ocurrido lo del segment

saludos

P.D Creo que SYS_READ incluye el retorno en la cadena porque me aparece con una longitud un caracter mas largo de lo que es
Páginas: 1 2 3 4 [5] 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines