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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10
51  Programación / ASM / [ASM]Syscall no me funciona + fallo de segmentacion en: 14 Junio 2009, 06:11 am
hola tengo un problema, estoy tratando de aprender algo de las syscalls de linux con asm pero tengo un problema, mi codigo no funciona, el comportamiento es el siguiente.

se supone que pide un texto e imprime su longitud pero sucede:
pide texto, falla de segmentacion
la consola toma lo que tecle y me dice como que si lo hubiera escrito como un comando ejemplo:
si en el programa pongo hola
no me imprime nada y despues la terminal me dice
bash: ola comando no encontrado

mi code es el siguiente

Código
  1. include '/home/nyox/include/linux.inc'
  2. format ELF executable
  3. entry start
  4. segment readable executable
  5.  
  6. start:
  7. mov eax,SYS_READ
  8. mov ebx, STDIN
  9. mov ecx,texto
  10. mov edx,size
  11. int 0x80
  12.  
  13. push texto
  14. call strlen
  15. push eax
  16. push numtexto
  17. call itoa
  18.  
  19. push numtexto
  20. call strlen
  21.  
  22. mov edx,eax
  23. mov eax, SYS_WRITE
  24. mov ebx, STDOUT
  25. mov ecx, numtexto
  26. int 0x80
  27.  
  28.  
  29. mov eax, SYS_EXIT
  30. xor ebx,ebx
  31. int 0x80
  32.  
  33. strlen:
  34. push edi
  35. xor ecx,ecx
  36. mov edi, [esp + 8]
  37. not ecx
  38. xor eax,eax
  39. cld
  40. repne scasb
  41. not ecx
  42. pop edi
  43. add eax,ecx
  44. dec eax
  45. retn 4
  46.  
  47. strrev:
  48.        push ebp
  49.        mov ebp,esp
  50.        push edi
  51.        mov edi,[ebp + 8]
  52.        push edi
  53.        call strlen
  54.        xor ecx,ecx
  55.        dec eax
  56.        jmp LL1
  57.        LL0:
  58.                dec eax
  59.                inc ecx
  60.                cmp ecx,eax
  61.                jge LL2
  62.        LL1:
  63.                mov dl,byte[edi + ecx]
  64.                xchg byte[edi + eax],dl
  65.                mov byte[edi + ecx],dl
  66.                jmp LL0
  67.  
  68.        LL2:
  69.        pop edi
  70.        pop ebp
  71. retn 4
  72.  
  73. itoa:
  74.      push ebp
  75.      mov ebp,esp
  76.      pushad
  77.      mov edi,[ebp + 8]
  78.      mov eax,[ebp + 12]
  79.      mov ebx,10
  80.      L@@1:
  81.        xor edx,edx
  82.        div ebx
  83.        xchg eax,edx
  84.        or eax,48
  85.        stosb
  86.        mov eax,edx
  87.        cmp eax,0
  88.        jnz L@@1
  89.        inc edi
  90.        mov byte[edi],al
  91.        push dword[ebp + 8]
  92.        call strrev
  93.      popad
  94.      pop ebp
  95. retn 8
  96.  
  97. numtexto db 5 dup(0)
  98. texto db 10 dup(0)
  99. size dd 9
  100.  

SYS_WRITE = 4
SYS_READ = 3
STDIN = 0
STDOUT = 1

el codigo rula perfectamente en win aunque no es lo mismo porque uso printf y scanf asi que supongo que mi error esta en el uso de las syscalls a ver si me pueden echar una mano

el code en win es

Código
  1. format PE console
  2. entry start
  3. include 'c:\fasm\include\win32ax.inc'
  4. .code
  5.  
  6. start:
  7.        invoke scanf,"%s",texto
  8.  
  9.        push texto
  10.        call strlen
  11.        push eax
  12.        push numtexto
  13.        call itoa
  14.  
  15.        push numtexto
  16.        call strlen
  17.  
  18.        invoke printf,numtexto
  19. leave
  20. ret
  21.  
  22. strlen:
  23.        push edi
  24.        xor ecx,ecx
  25.        mov edi, [esp + 8]
  26.        not ecx
  27.        xor eax,eax
  28.        cld
  29.        repne scasb
  30.        not ecx
  31.        pop edi
  32.        add eax,ecx
  33.        dec eax
  34.        retn 4
  35.  
  36. strrev:
  37.        push ebp
  38.        mov ebp,esp
  39.        push edi
  40.        mov edi,[ebp + 8]
  41.        push edi
  42.        call strlen
  43.        xor ecx,ecx
  44.        dec eax
  45.        jmp LL1
  46.        LL0:
  47.                dec eax
  48.                inc ecx
  49.                cmp ecx,eax
  50.                jge LL2
  51.        LL1:
  52.                mov dl,byte[edi + ecx]
  53.                xchg byte[edi + eax],dl
  54.                mov byte[edi + ecx],dl
  55.                jmp LL0
  56.  
  57.        LL2:
  58.        pop edi
  59.        pop ebp
  60. retn 4
  61.  
  62. itoa:
  63.      push ebp
  64.      mov ebp,esp
  65.      pushad
  66.      mov edi,[ebp + 8]
  67.      mov eax,[ebp + 12]
  68.      mov ebx,10
  69.      L@@1:
  70.        xor edx,edx
  71.        div ebx
  72.        xchg eax,edx
  73.        or eax,48
  74.        stosb
  75.        mov eax,edx
  76.        cmp eax,0
  77.        jnz L@@1
  78.        inc edi
  79.        mov byte[edi],al
  80.        push dword[ebp + 8]
  81.        call strrev
  82.      popad
  83.      pop ebp
  84. retn 8
  85. section '.data' data readable writeable
  86. numtexto        db      5 dup(0)
  87. texto   db      10 dup(0)
  88. size    dd      9
  89.  
  90. section '.idata' import data readable
  91. library msvc,'msvcrt.dll'
  92. import msvc,printf,'printf',scanf,'scanf'
  93.  

no cambia mucho solo el uso de entrada y salida

gracias de antemano
52  Programación / ASM / Re: Te creamos tu función. en: 13 Junio 2009, 02:03 am
De todas maneras y me disculpan que me meta, pero el foro es libre :xD

Y si yo quiero hacerle las tareas a las demas personas, es mi problema, siempre y cuando aclaren bien esa norma..

Seria buen punto para debatir porque que sean las normas, no quiere decir que sean correctas.

claro hacerle la tarea a alguien te beneficia a ti porque te sirve como practica de tus conocimientos, pero al mismo tiempo le haces daño a quien se la haces porque lo vuelves un inutil. Pero es decicion de cada uno pero eso si las reglas son las reglas
"Se pregunta por conceptos abstractos. Aquí no estamos para hacerle el trabajo a nadie"
53  Programación / ASM / Re: Pequeño codigo para comparar strings... en: 13 Junio 2009, 01:59 am
pero entonces ten encuenta la longitud de las strings como te dice Binaria y con eso tendrias una condicion inicial de si son diferentes ya no fueron y te ahorra meterse en el proc  ;)

salu2

si pero para sacar la longitud tambien se necesita algo de codigo, asi que de todas maneras no te salvas del proc   ;D
54  Programación / ASM / Re: Te creamos tu función. en: 13 Junio 2009, 01:54 am
esta bien ayudar tampoco hay que dar todo en bandeja de plata, se puede dar una ayudita pero de ahi que dar el source completo  :-\
ademas hay quienes nada mas bienen piden y cuando se les da se van y no vuelven a regresar al menos que nececiten otra cosa
55  Programación / Programación C/C++ / Re: ayudenme en: 8 Junio 2009, 03:19 am
no entiendo la obsecion por el system(pause) cuando se pueden usar soluciones mas estandar y/o elegantes  :¬¬
56  Programación / ASM / Re: Entry Point en: 8 Junio 2009, 03:08 am
el tasm esta obsoleto, pero si te gusta el software de borland usa el tasm32, de todas maneras prefiero el fasm porque muy facil de usar y ensambla en mas formatos, y trae un rico conjunto de macros aunque personalmente casi no uso macros, solo uso las que sirven para importar las apis.
57  Programación / Programación C/C++ / Re: ayudenme en: 8 Junio 2009, 03:02 am
ayudaria que pusieras que errores te salen  :(
@andi1991 no es studio es stdio.h en c y cstdio en C++,
58  Programación / ASM / Re: Entry Point en: 8 Junio 2009, 02:58 am
te recomiendo 100% fasm razones:
-Es multiplataforma
-Genera ejecutables de dos
-Genera ELF (ejecutables de linux)
-Genera PE (ejecutsbles de windows)
-Genera COFF (formato plano de archivos objeto)
-Genera Dlls
-Genera MS COFF por lo que lo puedes enlazar con codigo C++ de Visual C
-Es rapido porque esta escrito en asm
-Es gratuito
-Trae IDE y no hay que configurarlo

descarga en http://flatassembler.net/ otra buena opcion es el MASM de microsoft pero personalmente me gusta mas el fasm
59  Programación / ASM / Re: Duda de implementación en lenguaje ensamblador en: 7 Junio 2009, 18:47 pm
hazlo primero en un lenguaje de alto nivel y luego lo pasas a asm, asi es mas facil  :xD, tu problema no es muy complicado solo hay que hacer unas cuantas comparaciones y saltos condicionales.
60  Programación / ASM / Re: Entry Point en: 1 Junio 2009, 22:38 pm
Bueno algunos libros de asm para los que empiezan por el lenguaje, estan en ingles asi que si no leen ingles  :¬¬ . Son muy buenos y muy bien explicados esta paa ms-dos, windows, linux sintaxis Intel y AT&T

Assembly Language For Intel based computers
PDF
ingles
731 paginas
autor: kip irvine
http://rapidshare.com/files/161065925/Assembly_Language_For_Intel_based_computers.zip


Guide to Assembly Language Programming in Linux
esta en pdf (ingles) y pesa alreddedor de 28 megas y son 539 hojas
http://rapidshare.com/files/167920349/Springer_-_Guide_to_Assembly_Language_Programming_in_Linux.zip



Assembly Language - The True Language of Programmers

esta en pdf (ingles) alrededor de 5 megas 548 paginas
http://rapidshare.com/files/167915627/Assembly_Language__The_True_Language_Of_Programmers.zip

The Art of Assembly Language 80x86
esta en pdf tambien en ingles pesa alrededor de 5 megass y son 1426 paginas
http://rapidshare.com/files/167914786/The_art_of_Assembly_Language_8086.zip

Windows Assembly Language - Systems Programming
Formato: PDF
Idioma: Inglés
Páginas: 421
Peso: 12 MB aprox.

http://rapidshare.com/files/161071665/Windows_Assembly_Language___Systems_Programming_16-_And_32-Bit_Low-Level_Programming_for_the_PC_and_

Introduction To 80x86 Assembly Language And Computer Architecture
Formato: CHM
Idioma: Inglés
Páginas: 499
Peso: 4 MB aprox.

http://rapidshare.com/files/161066804/Introduction_To_80x86_Assembly_Language_And_Computer_Architecture.zip


The Assembly Programming Master Book
Formato: CHM
Idioma: Inglés
Páginas: 736
Peso: 10 MB

http://rapidshare.com/files/161070377/The_Assembly_Programming_Master_Book.zip

Professional Assembly Language
Formato: PDF
Idioma: Inglés
Páginas: 577
Peso: menos de 2 MB

http://rapidshare.com/files/161066347/Professional_Assembly_Language.zip

originalmente publicados por laloolanda

cualquier problemas con los links avisenme y lo subo

Edit:
Documentacion Oficial sobre las instrucciones asm en 64 bits

http://www.intel.com/products/processor/manuals/index.htm
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24592.pdf
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24593.pdf
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24594.pdf
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26568.pdf
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26569.pdf
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