comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Quieres empezar en ASM? Entra aqui! (FAQ ASM)

  • 5 Respuestas
  • 5547 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado ProcessKill

  • *
  • Underc0der
  • Mensajes: 154
  • Actividad:
    0%
  • Reputación 0
  • Arriba los hackers de Argentina!
    • Ver Perfil
    • Email
« en: Febrero 24, 2010, 03:57:25 pm »

FAQ acerca del ASM by Shadow


P: ¿Que es "ASM"?
R: Es la abreviatura de lenguaje "assembler" o "ensamblador" en espa?ol.

P: ¿Que es entonces el lenguaje "ensamblador"?
R: Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente se?ales electr?nicas binarias. Dar una instrucci?n a un microprocesador supone en realidad enviar series de unos y ceros espaciadas en el tiempo de una forma determinada.
Esta secuencia de se?ales se denomina c?digo m?quina. El c?digo representa normalmente datos y n?meros e instrucciones para manipularlos.
Un modo m?s f?cil de comprender el c?digo m?quina es dando a cada instrucci?n un mnem?nico, como por ejemplo CMP, ADD o JMP.
Esta abstracci?n da como resultado el ensamblador, un lenguaje de muy bajo nivel que es espec?fico de cada microprocesador.?

P: ¿Que puedo programar en este lenguaje?
R: Simple, todo lo que puedes ver digitalizado por un monitor.

P: ¿Que necesito para aprender a programar en ASM?
R: Descartando lo obvio, un cerebro con IQ de mas 81, ser incha del RMFC y ganas de aprender

P: ¿Tiene que ver ASM que esos 0s y 1s de la ciencia ficcion de los "juackers"?
R: Dejame explicarlo asi:
En la pregunta #2 vimos que "los microprocesadores procesan exclusivamente se?ales electr?nicas binarias". Veamos la instruccion "10010000":
Citar
   Binario (lo que procesa el micro):                                                10010000
   Hexadecimal (representacion de la instruccion en otro sistema de numeracion):           90
   Mnemonico (representacion o "comando" de ensamblador):                                 NOP
   Uso:                                                No hace nada, es una instruccion nula.
P: ¿Como puedo practicar o hacer programas en ASM?
R: Puedes bajar un compilador. Entre los mas comunes estan: TASM (Turbo Asemmbler de Borland), MASM (Macro Assembler de Microsoft) y el RadASM.

P: ¿Como se ve un programa en ASM para compilar?
R: Mirandolo (XD).

En 16 bits:
Código: ASM
  1. .MODEL SMALL ; Determinamos el modelo de memoria
  2. .STACK ; Definimos el ?rea de pila
  3. .DATA
  4. MENS DB "HOLA MUNDO!.$" ; Especificamos la cadena de texto a mostrar
  5. .CODE ; Inicio del c?digo
  6. INI: ; Etiqueta de inicio
  7. MOV AX,@DATA ; Permite tener acceso a los datos
  8. MOV DS,AX ; a trav?s de el registro DS
  9. MOV DX,OFFSET MENS ; Prepara para desplegar el mensaje
  10. MOV AH,9 ; Llama al servicio 9
  11. INT 21H ; de la int 21h para desplegar el texto
  12. MOV AH,4CH ; Llama al servicio 4Ch
  13. INT 21H ; de la int 21h para terminar
  14. END INI ; Cierra la etiqueta de inicio
  15.  
  16. En 32 bits (para MASM):
  17.     .486                              
  18.     .model flat, stdcall              
  19.     option casemap :none            
  20.     include \masm32\include\windows.inc    
  21.     include \masm32\include\masm32.inc
  22.     include \masm32\include\gdi32.inc
  23.     include \masm32\include\user32.inc
  24.     include \masm32\include\kernel32.inc
  25.     includelib \masm32\lib\masm32.lib
  26.     includelib \masm32\lib\gdi32.lib
  27.     includelib \masm32\lib\user32.lib
  28.     includelib \masm32\lib\kernel32.lib
  29.     print MACRO arg1:REQ,varname:VARARG  
  30.         invoke StdOut,reparg(arg1)
  31.       IFNB <varname>
  32.         invoke StdOut,chr$(varname)
  33.       ENDIF
  34.     ENDM
  35.     .data
  36.       v0  dd 0
  37.       v1  dd 1
  38.       v2  dd 2
  39.       v3  dd 3
  40.       v4  dd 4
  41.       v5  dd 5
  42.       v6  dd 6
  43.       ary dd v0,v1,v2,v3,v4
  44.           dd v5,v6
  45.     .code        
  46. start:                        
  47.     call main                
  48.     exit
  49. main proc
  50.     LOCAL cnt   :DWORD    
  51.     push esi
  52.     push edi
  53.     mov cnt, 6            
  54.     mov esi, ary    
  55.   lp:
  56.     mov edi, [esi+2]  
  57.     print str$(esi)        
  58.     print chr$(" = Direccion en memoria",13,10)
  59.     print str$(edi)        
  60.     print chr$("       = contenido",13,10,13,10)
  61.     add esi, 4            
  62.     sub cnt, 1                
  63.     jnz lp                
  64.     pop edi
  65.     pop esi
  66.     ret
  67. main endp
  68. end start

P: ¿Porque la diferencia?
R: Un micro (microprocesador) de 16 bits soporta eso mismo, 16 bits de informacion por cada operacion que realize; uno de 32 soporta, 32 bits.

P: ¿Que otras diferencias hay entre estos 2?
R: Programar para 32 bits nos permite usar o "llamar" APIs de librerias externas como "kernel32.dll", no permite manejar la interrupciones como lo hace un programa para 16 bits; para 32 bits, los registros ("variables"; espacios de memoria reservados para guardar informacion especifica en el procesador) al aumentar su tama?o, cambian de sintaxis (PE.: de "ax" a "eax") aunque tambien se pueden seguir usando los registros de 16 bits; entre otras diferencias.

P: En la pregunta #5 mencionaste otros representaciones de los mnemonicos (binario y hexadecimal). ?Tengo que saber estas conversiones o conocer estos sistemas de numeracion?.
R: Tecnicamente, no. Pero, en la practica si (por lo menos tienes que saber convertir hexadecimal a decimal)

P: ¿Que ventajas tiene la programacion en ASM?
R: La principal ventaja es que permite crear programas muy r?pidos y livianos (Un programa hecho en C++ que imprima la cadena "Hola Mundo!." pesa unos 15.663 bytes, cuando uno hecho en ASM, que realize lo mismo y compilado con TASM, pesa 541 bytes, asiq estariamos hablando de
unas 29 veces mas peque?o).

P: ¿Y desventajas?
R: A menudo es dificil de aprender.

P: ¿Por que?
R: Los programadores de lenguajes de alto nivel no estan acostumbrados a la abstraccion, a la "limitacion" de funciones del ASM y a trabajar hablando direcctamente con el procesador, esto quiere decir que si la persona que intenta aprender ASM, no conoce el funcionamiento de un ordenador a nivel de memoria, procesador y hardware en general, le sera mucho mas dificil que al que ya conoce esto mas a fondo.

P: ¿Esto quiere decir que tengo que tener algun tipo de conocimientos sobre este tema (funcionamiento del ordenador)?
R: Si.

P: ¿De que me sirve saber ASM en nuestros dias? Por algo se inventaron los lenguajes de alto nivel.
R: Como dije, la principal ventaja es que permite crear programas muy r?pidos y livianos. Otro de los usos del ASM en nuestro dias es la llamada "Ingenieria Inversa" o "Cracking".

P: ¿"Ingenieria Inversa"?
R: "Arte del destripado"; rama de "hacking" o "pirateria informatica" que se encarga de romper cualquier tipo de seguridad que posea un programa comercial usando metodos de desensamblado y reconstruccion, comprometiendo asi cualquier tipo de cifrado o proteccion anti-"crackeo", tambien llamado por los coders: "debug", para poder disfrutar del limite de sus funciones o simplemente para modificar a gusto su funcionamiento.

P: ¿Ahora, que hago?
R: Busca un tuto basico o de introduccion que sientas que entiendas sobre este lenguaje y empieza a leer y si tienes alguna duda, ES FATAL que te quedes con ella, PREGUNTA, PREGUNTA, PREGUNTA, APRENDE, APRENDE, APRENDE, esa es la ley... Luego transmite lo que sabes!





Espero que les sirva de algo en su introduccion en este mundo!...



bytes ;)
« Última modificación: Mayo 01, 2014, 08:51:18 am por Expermicid »

Desconectado 0A10

  • *
  • Underc0der
  • Mensajes: 68
  • Actividad:
    0%
  • Reputación 0
  • 0A10
    • Ver Perfil
« Respuesta #1 en: Junio 28, 2010, 12:11:46 pm »
Leido.. Creo qe me falta mucho por aprender.. Pero lo intentare :)

Desconectado 3hy!

  • *
  • Underc0der
  • Mensajes: 79
  • Actividad:
    0%
  • Reputación 0
  • Use Google, it hasn't killed anyone until now...
    • Ver Perfil
    • Mi blog
    • Email
« Respuesta #2 en: Mayo 04, 2011, 04:12:31 am »
o.o Me has aclarado muchas dudas! Me voy a poner a estudiar ASM en cuanto acabe el C!
Salu2,
3hy!
Si tienes cualquier duda, pregunta en el foro!


Desconectado kid_goth

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Reputación 3
  • Tu conocimiento se limita cuando dices NO PUEDO...
    • Ver Perfil
    • DC Projects
    • Email
« Respuesta #3 en: Junio 08, 2012, 09:50:55 am »
mmm  :o (se me incho un ojo) aun asi lo veo un poco complicado... espero algun dia entender un poco mas ese lenguaje xD... y a ver si nos hacemos algun programilla en eso ;) Saludos y thanks



Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Desconectado yoyomismo

  • *
  • Underc0der
  • Mensajes: 14
  • Actividad:
    0%
  • Reputación 0
  • Cibergolen (CPH) yo-mismo (Otros)
    • Ver Perfil
    • Foro y Blog CodeSec
    • Email
« Respuesta #4 en: Abril 15, 2013, 06:19:16 pm »
¿Esto son las f.a.q.'s?  :-\

Citar
P: ¿Como puedo practicar o hacer programas en ASM?
R: Puedes bajar un compilador. Entre los mas comunes estan: TASM (Turbo Asemmbler de Borland), MASM (Macro Assembler de Microsoft) y el RadASM.

xDDDD no se compila nada, se ensambla y linkea. TASM trabaja a 16 bit, y MASM es Assembly de alto nivel. RADASM es un IDE, por decir una linea al azar

Y 3 años desactualizada

En fin, muy corta mi visita por esta comunidad

Un saludo
« Última modificación: Abril 15, 2013, 06:24:53 pm por yoyomismo »
CPH: Cibergolen
Otros: Yo-Mismo

Visitame en codesec.org

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #5 en: Abril 15, 2013, 07:51:47 pm »
¿Esto son las f.a.q.'s?  :-\

Citar
P: ¿Como puedo practicar o hacer programas en ASM?
R: Puedes bajar un compilador. Entre los mas comunes estan: TASM (Turbo Asemmbler de Borland), MASM (Macro Assembler de Microsoft) y el RadASM.

xDDDD no se compila nada, se ensambla y linkea. TASM trabaja a 16 bit, y MASM es Assembly de alto nivel. RADASM es un IDE, por decir una linea al azar

Y 3 años desactualizada

En fin, muy corta mi visita por esta comunidad

Un saludo


Adiós.

 

¿Te gustó el post? COMPARTILO!