Vota por nosotros en el ranking web que participamos

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Octubre 07, 2008, 05:37:28
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: The Shadow(examenes))  |  Tema: [G] Quieres empezar en ASM? (Entra aqui! (FAQ) 0 Usuarios y 2 Visitantes 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 412 veces)
The Shadow(examenes)
Dein Nulls
Moderadores
Colaborador
*****
Desconectado Desconectado

Mensajes: 905


Fucking mnemonic c0d1n6!

shadow@el-hacker.org
Ver Perfil WWW Email
« 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


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion





Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Reglamento del Foro
     Linux  Registered User #473016
The Shadow(examenes)
Dein Nulls
Moderadores
Colaborador
*****
Desconectado Desconectado

Mensajes: 905


Fucking mnemonic c0d1n6!

shadow@el-hacker.org
Ver Perfil WWW Email
« Respuesta #1 en: Mayo 30, 2008, 10:29:58 »

P. Quiero aprender asm, pero soy usuario de linux ¿hay diferencias en cuanto a sintaxis de las operaciones con DOS/Windows?
R. Si la hay, linux utiliza mayormente sintaxis AT&T, aunque tambien puedes programar con la sintaxis de intel en linux, dependiendo de que compilador uses.

con NASM en linux:
Código:
global _start

section .data
hola db "Hola , mundo!", 11
length equ $-hola

section .text

_start:
mov eax, 4 ; escribe en el archivo
mov ebx, 1 ; manejador de STDOUT
mov ecx, hola         ; el mensaje
mov edx, length ; tamanio del mensaje
int 80h ; ejecuta la llamada al sistema

xor ebx, ebx ; envia 0 como codigo de salida
mov eax, 1 ; termina proceso
int 80h ; ejecuta la llamada al sistema
--> [p3ll3]

y con la sintaxis de AT&T:

Código:
.data
             msg: .string "Hola mundo!\n"
             len = . - msg
.text
             .globl _ini
_ini:
             movl $4, %eax
             movl $1, %ebx
             movl $msg, %ecx
             movl $len, %edx
             int $0x80
             
             movl $1, %eax
             xor %ebx, %ebx
             int $0x80

P. ¿Donde puedo encontrar compiladores para asm en linux?
R.
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

P. ¿Donde puedo encontrar tutoriales para aprender asm en linux?
R.
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

Saludos!
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion





Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Reglamento del Foro
     Linux  Registered User #473016
Avantlord
Recien Llegado
*
Desconectado Desconectado

Mensajes: 17



Ver Perfil
« Respuesta #2 en: Junio 13, 2008, 12:54:45 »

uuuuu q poder..... diculpa y una guia avanzada de hardware para empezar por ver como es q se comunican los dispositivos entre si XD
En línea

Sono il Lord!
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: The Shadow(examenes))  |  Tema: [G] Quieres empezar en ASM? (Entra aqui! (FAQ) « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC