Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: ADMIRATION en 12 Enero 2014, 13:49 pm



Título: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: ADMIRATION en 12 Enero 2014, 13:49 pm
Hola a toda la sección. Voy a empezar a estudiar lenguaje ensamblador desde cero y con S.O linux. Al dirijirme a la sección de ASM me asaltan las siguientes dudas:
¿con que tipo de lenguaje ensamblador de todos los que hay debo empezar?¿y con que tipo de depuradores?¿hay algun curso o tutorial ACTUALIZADO para empezar desde cero y con linux?
Gracias.


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: 0xDani en 12 Enero 2014, 14:08 pm
https://duckduckgo.com/?q=assembly+linux&t=canonical


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: ADMIRATION en 12 Enero 2014, 14:33 pm
Muchismas gracias OxDani.
Con tanta informacion, queriendo empezar a aprender "algo" de manera solida y seria, es un gran trabajo y una gran incertidumbre seleccionar lo mas adecuado para uno mismo e incluso para los demas.
Sera un placer corresponderte.



Saludos a toda la sección. Una vez mirando informacion sobre tutoriales y cursos de ensamblador me surgen algunas dudas sobre la eleccion del tipo de curso ensamblador el cual se adecue a mis caracteristicas Y  NO SECUAL ESCOGER(hay cursos de ensamblador bajo linux para "PIC", para INTEL, con ensamblador NASM, con ensamblador MASM, con TURBOASSEMBLER.........).
Estoy hecho un lio y bloqueado para poder seleccionar el mas adecuado para mi. Me gustaria que alguien me ayudara a seleccionar el mas adecuado a mi. Yo utilizo el S.O Linux(distro Ubuntu 12.10, el cual tiene por defecto el ensamblador binutils, aunque desde el repositorio de ubuntu puedo instalarme el nasm......NO SE QUE HACER NI QUE SELECCIONAR......
¿cual se puede adecuar mejor a mis necesidades??
Gracias de antemano


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: 0xDani en 16 Enero 2014, 16:01 pm
Te recomiendo el NASM.

Saludos.


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: Eternal Idol en 17 Enero 2014, 15:41 pm
Intel, si queres aprender PC.


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: ADMIRATION en 17 Enero 2014, 16:07 pm
Gracias OxDani :D.
Eternal Idol, ¿Puedo utilizarNASM para Intel con Linux?
Gracias.


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: Eternal Idol en 17 Enero 2014, 16:10 pm
Si:
http://en.wikipedia.org/wiki/Netwide_Assembler


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: ADMIRATION en 17 Enero 2014, 17:59 pm
Gracias Eternal Idol, en cuanto pueda entro y te comento.
OxDani: Encontre un curso en el link que me dejaste y me lo he descargado, muy interesante. Se llama "PROGRAMMING FROM THE GROUND" que aunque este en ingles mejor, pues me ayuda a repasar el vocabulario ingles ya olvidado.
Muy interesante a quien le interese.
Gracias Eternal Idol, OxDani


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: xv0 en 17 Enero 2014, 22:13 pm
Dices que vas a estudiarte la sintaxis de Intel (NASM), y te pones a leer un libro con la sistaxis de AT&T (GAS).

Bueno olvidando eso, que creo que despues de eso este hilo no va a ningun sitio, te voy a dar mi recomendacion.

Ya que estas con Linux aprende la sintaxis con la que originalmente trabajo GAS. No te recomiendo ese libro ni ninguno de ese estilo.

Podrias entrar en la pagina de GNU hay esta toda la informacion sobre binutils y sobre as (GAS) y ld el linker, te aprendas su sintaxis y leas los manuales de Intel o AMD (supongo que tendras una arquitectura x86-x86_64) para comprender el funcionamiento del procesador y las instrucciones, cosa que ninguno de esos libros te va ha proporcionar como los manuales, ese estilo de libros solo estan escritos para sacarle el dinero a los universitarios, pero esa es solo mi opinion.

Y sobre todo lee muchos codigos.

Un saludo.


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: ADMIRATION en 20 Enero 2014, 11:05 am
Aaaaah!!!. Gracias cpu2, Importante detalle el tuyo... Gracias por encaminarme algo mejor.
¿alguna pagina en concreto de GNU donde hayan buenos tutoriales. Yo empiezo desde cero.
Agradezco mucho que me guies en lo mas practico y segun a mis necesidades, eso es lo que yo pedia desde un principio, desde una base. Que luego habra tiempo para ampliar conceptos.
Cierto, mi S.O es Ubuntu 12.10, su ensamblador por defecto es Binutils y mi pc es 64bits con S.O de 32bits.
Si lo que me dices es mas adecuado por lo que yo tengo, yo tambien pienso que es mejor empezar de esa base.
¿Que enlace me recomiendas donde existan unos buenos tutoriales?
De antemano, muchas gracias


Título: Re: CON QUE TIPO DE LENGUAJE ENSAMBLADOR EMPEZAR
Publicado por: xv0 en 20 Enero 2014, 15:56 pm
Como dije anteriormente.

Código:
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Te recomiendo que te leas el primer tomo que es una introduccion, los segundos volumenes que son las referencia de las instrucciones. Puedes leer los demas pero de momento con eso ya estas bien.

Saber como funciona un poco as y ld.

Código:
http://sourceware.org/binutils/docs/as/
http://sourceware.org/binutils/docs/ld/

Bueno acabas de decir que tienes un procesador x64 y lo estas usando a x86, ya que tienes un procesador de x64 porque lo usas a x86?

En x64 los registros son de 64 bits (logico) vamos el doble, puedes cargas mas datos en ellos sin tener que usar el stack, tienes nuevos registros de calculo general r8-r15 algunos de ellos son para pasar argumentos y otros son libres, en x86 haces interrupciones al vector 80 y en x64 tienes una instruccion llamada syscall que es mas rapida que llamar al vector.

Código:
http://blog.rchapman.org/post/36801038863/linux-system-call-table-for-x86-64
http://syscalls.kernelgrok.com/

Las interrupciones, la segunda es de x86 solo cambian los registros, son de kernels algo pasados, pero siempre puedes mirarlos en el sistema. Tambien te recomiendo que no te acostumbres a utilizar llamadas ya que desde mi punto de vista no es ASM puro, pero como estas en ring3 estas obligado a usarlas, int 80 y syscall llaman a unas funciones escritas casi siempre en C que estan en el kernel, es una explicacion muy basta pero en el manual no la hubieras entendido.

Pero bueno seguro que tienes el Ubuntu a x86 porque seguro que leiste por hay que seria mas estable.

Bueno empieza por leer y entender un Hello word.

Un saludo.