Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse. - Mayo 16, 2008, 01:39:25
Boton Buscar
Inicio Ayuda Calendario Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: The Shadow)  |  Tema: [G] Quieres empezar en ASM? (Entra aqui! (FAQ) 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)  (Leído 70 veces)
The Shadow
Moderadores
Colaborador
*****
Desconectado Desconectado

Mensajes: 482


Fucking mnemonic c0d1n6!

shadow@el-hacker.org
Ver Perfil
« en: Marzo 18, 2008, 07:28:17 »

             FAQ acerka 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":
   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:
.MODEL SMALL ; Determinamos el modelo de memoria
.STACK ; Definimos el área de pila
.DATA
MENS DB "HOLA MUNDO!.$" ; Especificamos la cadena de texto a mostrar
.CODE ; Inicio del código
INI: ; Etiqueta de inicio
MOV AX,   @DATA ; Permite tener acceso a los datos
MOV DS,AX ; a través de el registro DS
MOV DX,OFFSET MENS ; Prepara para desplegar el mensaje
MOV AH,9 ; Llama al servicio 9
INT 21H ; de la int 21h para desplegar el texto
MOV AH,4CH ; Llama al servicio 4Ch
INT 21H ; de la int 21h para terminar
END INI ; Cierra la etiqueta de inicio

En 32 bits (para MASM):
    .486                               
    .model flat, stdcall             
    option casemap :none           
    include \masm32\include\windows.inc     
    include \masm32\include\masm32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    print MACRO arg1:REQ,varname:VARARG   
        invoke StdOut,reparg(arg1)
      IFNB <varname>
        invoke StdOut,chr$(varname)
      ENDIF
    ENDM
    .data
      v0  dd 0
      v1  dd 1
      v2  dd 2
      v3  dd 3
      v4  dd 4
      v5  dd 5
      v6  dd 6
      ary dd v0,v1,v2,v3,v4
          dd v5,v6
    .code       
start:                       
    call main                 
    exit
main proc
    LOCAL cnt   :DWORD     
    push esi
    push edi
    mov cnt, 6             
    mov esi, ary     
  lp:
    mov edi, [esi+2]
    print str$(esi)       
    print chr$(" = Direccion en memoria",13,10)
    print str$(edi)         
    print chr$("       = contenido",13,10,13,10)
    add esi, 4             
    sub cnt, 1               
    jnz lp                 
    pop edi
    pop esi
    ret
main endp
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:¿Porque?
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 "censurado 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!...

Saludos!
« Última modificación: Abril 05, 2008, 11:37:28 por The Shadow » En línea





Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Reglamento del Foro
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: The Shadow)  |  Tema: [G] Quieres empezar en ASM? (Entra aqui! (FAQ) « anterior próximo »
Ir a:  
Novedades, Dudas, Comentarios Y Sugerencias, Top 100, Off-Topic, Revista E-Zine, Revista E-Zine, Sistemas operativos libres. , HacK GeneraL, Phreaking, Bug y Exploits, Networking & Wireless, Overclocking, Refrigeracion y demas, Hardware, Electronica Y Robotica, Hack para newbies, Todo Messenger, Troyanos y virus, Programacion, Programacion para webmasters, Software, Cracks & Serialz, P2p, Bittorrent, Elinks, Diseo Grafico, Juegos PC, Mp3, Multimedia, Peliculas Divx, Juegos, Humor y Adultos. (Diversion), Paginas Webs Recomendadas, Videos,


Zona-Musical Juegos online Juego Gratis10 Solucion Hosting Videos De Musica 1juegogratis Dragonjar
Noticias
 Juegos De Coche juegos gratis online juegos Los Foros De Sexe Gratuit Sexo Duro Tierra Messenger Trucos
Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC