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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 [3]
21  Programación / ASM / [HLA] High Level Assembly en: 7 Noviembre 2012, 18:55 pm
HLA (High Level Assembly)


Por ahí revisando archivos me encontré con esta bella de información.

HLA es un lenguaje ensamblador de alto nivel que sirve para ir aprendiendo de a poco el lenguaje ensamblador puro, es decir que te permite usar construcciones de alto nivel como "for", "while", "if" y etcétera e ir aprendiendo las instrucciones de ensamblador poco a poco hasta saber usar construcciones puras de ensamblador. El lenguaje HLA es desarrollado por Randall Hyde y también escribió un libro importante de Assembler sobre HLA.


HLA
Las herramientas de HLA son multiplataforma y de dominio público.
http://www.webster.cs.ucr.edu/AoA/index.html
http://www.web.mac.com/randyhyde/HighLevelAsm

Technical Documentation
http://www.webster.cs.ucr.edu/Page_TechDocs


HIDE (HLA IDE)
HIDE es para la plataforma Windows y la licencia es libre para uso personal o comercial.
http://www.sites.google.com/site/highlevelassembly


Otras herramientas útiles

ResEdit
Es un editor de recursos para los programas.
http://www.resedit.net/

Resource Hacker
Es una herramienta para ver, modificar, renombrar, agregar, borrar y extraer recursos en ejecutables de Windows de 32bit & 64bit y archivos de recursos.
http://www.angusj.com/resourcehacker/

 



Sitios web de Assembler (no son sitios sobre HLA, sino de Assembler puro)

http://www.asmcommunity.net
http://www.winasm.net
http://www.x86.org


Agner's CPU blog
http://www.agner.org/optimize/blog

Hutch's Assembly pages
http://www.movsd.com

Paul Hsieh's x86 Assembly page
http://www.azillionmonkeys.com/qed/asm.html

Iczelion's Win32 Assembly Homepage
http://www.win32assembly.online.fr


Tutoriales de Assembler

PC Assembly Tutorial - Roby Joehanes
http://www.etfos.hr/~jbognar/pozadine/temp/asembly%20tutorial

Lenguaje Ensamblador Para Microprocesadores Intel 80xx/80x86 - M. en C. Eduardo René Rodríguez Ávila
http://www.homepage.mac.com/eravila/assmblr.zip




Bibliografía


The Art of Assembly - Randall Hyde
http://www.webster.cs.ucr.edu
http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html

Assembly Language, The True Language Of Programmers
http://http://www.phatcode.net/res/225/files/pc_underground.pdf

Programming Ground Up - Jonathan Bartlett
http://www.programminggroundup.blogspot.com

Assemblers And Loaders - David Salomon
http://www.davidsalomon.name/assem.advertis/asl.pdf

Lenguaje Ensamblador para PC - Paul A. Carter
http://www.drpaulcarter.com/pcasm/pcasm-book-spanish.zip

Programación avanzada en lenguaje ensamblador - Medina, Ramon
http://www.ramonmedina.name/files/universidad/ac/ac0001.PDF

Introduction to 80x86 Assembly Language and Computer Architecture - Richard C. Detmer
http://www.cin.ufpe.br/~clac/infra_de_software/Introduction%20to%2080x86%20Assembly%20Language%20and%20Computer%20Architecture~tqw~_darksiderg.pdf

Manuales de Optimización de Agner Fog (Nota: los manuales no son para principiantes)
http://www.agner.org/optimize
22  Programación / ASM / Masm32 en: 7 Noviembre 2012, 18:54 pm
Next Generation Software

Introducción

Muchos recuerdan ensamblador como una necesidad complejo y tedioso cuando un lenguaje de alto nivel no ofrecer en términos de capacidad o rendimiento, sin embargo, siempre ha sido capaz de escribir aplicaciones de tamaño completo de una manera elegante y eficiente. MASM tiene la capacidad de escribir código modular adecuada que se convierte en una necesidad como un proyecto se hace más grande.
Ensamblador tiene la libertad de escribir el código que van desde la auto-impuesta enfoque estructural de la desenfrenada código libre, cada uno con sus respectivas ventajas. Auto-impuesto código modular tiene la ventaja de la organización, especialmente en proyectos de mayor envergadura en estilo libre tiene sus ventajas en la optimización del código corta distancia del bucle.

El rendimiento en el código ensamblador relación tamaño utiliza dos enfoques que se aprovecha de muchas de las técnicas de la eficiencia del lenguaje de alto nivel, tales como la reutilización de código al mismo tiempo ser capaz de centrarse específicamente en el código de velocidad crítica cuando sea necesario.

32 ensamblador poco es tanto más clara y más simple que el DOS y 16 bits de código de Windows y no es la maldición de la complejidad de la aritmética del segmento. Ya no tienen que lidiar con AX: DX pares de enteros largos y no hay límite de 64 KB impuestas por la estructura segmentada de software de 16 bits.

La complejidad de la escritura de 32 bits del software de Windows está relacionado con la estructura de Windows y la enorme gama de funciones en el conjunto de API. Se diferencia del código de DOS sólo en la medida en que los parámetros se pasan en la pila en lugar de en los registros como en las interrupciones de DOS.

Mientras que la enorme gama de funciones de la ventana puede ser un poco intimidante, sino que también pone en manos del programador de lenguaje ensamblador, un enorme conjunto de capacidades que no estaban disponibles en DOS.

Una de las ventajas de escribir en ensamblador es que cómodamente se encarga de la "C" el formato de la API de Windows sin ninguna dificultad. Cero cadenas terminado, estructuras, punteros, los tamaños de datos, etc .. son parte de la escritura ensamblador.



¿Cómo funciona MASM32?

Está diseñado para conectar a un equipo que tiene otros entornos de programación establecido en él y esto exige ciertas restricciones en el formato. Para evitar los problemas asociados a recoger las versiones de enlace mal y directorio de la biblioteca equivocada, obras MASM32 con las rutas especificadas a todos los archivos binarios que necesita para generar los archivos.

En el código fuente, las rutas a los archivos de la biblioteca se especifican y en los archivos de proceso por lotes que son utilizados por el editor para impulsar las opciones de generación, las rutas de cada archivo binario se especifica así.

Archivos de otras fuentes por lo general no construir a partir de MASM32 sin alguna modificación, por lo general la colocación de las directivas específicas MASM siguiente al principio del archivo de origen va a resolver la mayoría de los problemas. La otra es usar la "inclusión" y "includelib" sintaxis para el archivo de inclusión y bibliotecas para que sus caminos se puede encontrar.

     
Código:
0.386, las fuerzas de 32 bits de montaje 
      plana modelo, stdcall; modelo de la memoria y la convención de llamada.
      CaseMap opción: ninguno; caso sensible código

MASM32 utiliza su propia versión de "windows.inc". Es un archivo de más de 800k de tamaño y tiene un conjunto muy grande de iguala y las estructuras en que para 32 bits de programación de Windows. Siempre se debe poner antes de que el sistema se incluyen los archivos y bibliotecas.

Ejemplo

     
Código:
 include \ MASM32 \ include \ windows.inc, siempre el primero

      include \ MASM32 \ include \ user32.inc; sistema incluyen
      include \ MASM32 \ include \ kernel32.inc; siguiente archivo
      include \ MASM32 \ include \ gdi32.inc

      includelib \ MASM32 \ lib \ User32.lib, sistema de juego
      includelib \ MASM32 \ lib \ kernel32.lib, bibliotecas después de que
      includelib \ MASM32 \ lib \ gdi32.lib

MASM32 utiliza un conjunto de archivos de inclusión generados por el funcionamiento del sistema que se derivan de las bibliotecas. Para cada biblioteca, se utiliza el archivo de inclusión que corresponda. Para encontrar una función que necesita en función del material de referencia que está utilizando, busque en el sistema de archivo de inclusión para ver el archivo que tiene el prototipo de la función e incluir el archivo y la biblioteca correspondiente.

La mayoría de las funciones más comunes son en los tres grandes archivos DLL del sistema por lo que si nos fijamos en,

 
Código:
GDI32.INC; gráficos funciones relacionadas 
    KERNEL32.INC, núcleo del sistema operativo funciones
    USER32.INC; interfaz de usuario y varias otras funciones

    se encuentran la mayoría de las funciones comunes.

Para las funciones que no están en las principales bibliotecas, por lo general el material de referencia Microsoft especifica que la biblioteca de la función es en lo que si se mira en el archivo de inclusión para esa biblioteca, se encuentra el prototipo de la misma.

Hay dos fuentes de referencia principal para escribir en ensamblador 32 bits en Windows, para las instrucciones de ensamblador y la arquitectura general de la serie de procesadores x86, los tres (3) el volumen conjunto de archivos PDF a partir de Intel son los mejores disponibles y exhaustivamente documentada en el PIII la configuración manual.

La otra es Microsoft material de referencia. El más común es un archivo de ayuda llamado "Win32.hlp" que ahora es un poco fuera de fecha, pero todavía útil. Se trata de un archivo de ayuda de alrededor de 12 megas de tamaño. Si usted tiene el MSDN 2 juego de CDs, la información es más tarde y mucho más grande, pero es que también ocupa unos 800 megas de espacio en disco cuando se instala. Otra alternativa es los archivos de ayuda PlatformSDK sino que también son de aproximadamente el mismo tamaño.



Código de diseño

Con el uso de la sintaxis MASM alto nivel de "invocar", el código de Windows API se puede escribir mucho como idiomas compilador basado como "C" o "Pascal", la única diferencia real es que usted tiene que recoger el valor de retorno como un línea separada.

     
Código:
LOCAL ReturnValue: DWORD

    invocar FunctionName, par1, par2, par3, PAR4
    mov ReturnValue, eax

Esto está en el lugar de la forma menos legible,

     
Código:
impulsar PAR4 
    par3 empujar
    empuje par2
    empujar par1
    llamar FunctionName
    ReturnValue mov, eax

No es una ventaja considerable en términos de fiabilidad del código mediante el uso de la "invocar" la sintaxis de las llamadas a funciones que son de tipo compara con los prototipos de funciones en los archivos de inclusión que atrapa los desajustes de los parámetros.

Hay algunas situaciones en las que la pila manual de empujones y las llamadas a funciones son útiles, pero a menos que usted disfrute de la tipificación adicional y error de montaje que se derivan de la falta de comprobación de tipos, no hay ventaja en términos de velocidad de codificación y confiabilidad mediante la automatización de las llamadas a funciones API. Esto es particularmente evidente cuando la codificación de los bucles de mensajes con las pruebas condicionales anidadas.

Para cualquier que tienen que estar convencidos, hay un directorio en el código de ejemplo llamado "estilo antiguo", que muestra cómo es lento y propenso a errores de la técnica manual completo y sólo se basa en el mismo tamaño que el modelo genérico que utiliza el pseudo MASM alta nivel de la sintaxis.

El alto nivel [si -.. Endif] sintaxis permite una simulación razonable de la C " switch "en bloque o" Basic Select Case "la sintaxis que se pueden anidar en la forma normal y es aquí donde la codificación de alto nivel en claro su tipo de cuenta verdadera ventaja.

     
Código:
. Si var == 1 
        ; código condicional
    . elseif var == 2
        , código condicional
    más.
        ; código predeterminado
    . endif

El tradicional [cmp eax, valor - je etiqueta] produce pesadillas en la misma situación.

El uso de la simulación de alto nivel en MASM mejora el rendimiento del código de "hack" API de Windows de codificación de manera que las áreas más difíciles de la optimización del circuito y otros temas relacionados con el rendimiento se pueden abordar en un plazo razonable.

Cuando se utiliza la sintaxis MASM seudo alto nivel, que se están aprovechando de MASM "ensamblador macro" de la capacidad, que el código no se hinchan o en peligro de la misma manera que los datos se elaboran. Esta capacidad se puede ampliar por escrito "macros" que a automatizar las formas comunes de codificación.

Las siguientes macros pequeños MASM32 lo demuestra,

       
Código:
volver MACRO arg 
        mov eax, arg
        ret
      ENDM

  permite al programador para salir de la proc mensaje mediante el conocido "C",

     
Código:
return 0 

  que se expande por el ensamblador en,

 
Código:
 mov eax, 0 
    ret

Otra macro se utiliza,

     
Código:
 szText MACRO Nombre, Texto: vararg 
        LOCAL lbl
          jmp lbl
            Texto Nombre db, 0
          lbl:
        ENDM

  que permite que el texto sea incorporado directamente en el código.

       
Código:
szText Msg1, "Esta es una cadena terminada en cero" 
      invocar el cuadro de mensajes, Juin, Msg1 ADDR, ADDR szDisplayName, MB_OK

Esto permite mucho más intuitiva de codificación de tener que volver a la inicialización. Apartado de datos mediante,

     
Código:
 Msg1 db "Esta es una cadena terminada en cero", 0 

Datos integrados en la sección de código. Tiene una ventaja, ya que normalmente es mucho más difícil de encontrar y cortar y normalmente no se puede escribir de la misma manera que la sección. Datos. También es una forma eficiente de utilizar pequeñas cantidades de datos sin necesidad de colocarlo en la sección. Datos.

Para los programadores que desean mantener la posición más intuitiva de texto cerca del código que se utiliza al colocar los datos en la sección. Datos, hay una manera fácil de hacer precisamente eso, en línea escrita con el código fuente,

 
Código:
  . Datos 
      Msg1 db "Se trata de los datos escritos en la sección. datos", 0
    . código

  trabaja muy bien. Ml.exe resuelve el código y coloca los datos en la sección. Datos.

MASM32 intencionalmente ha evitado el uso de macros complejas, ya que no son fáciles de entender al principio, pero hay un considerable poder y la velocidad de codificación mediante la comprensión y el uso de macros escritas correctamente. La siguiente es una macro un poco más compleja que hace uso de un cuadro de mensaje estándar tan fácil como escribir en Visual Basic que puede utilizar el texto citado literalmente o direcciones directas de cero cadenas terminado o combinaciones de ambos.

   
Código:
 MsgBox hWnd, "Hola, estoy escrito en MASM32", "Saludos", MB_OK

Esta es la macro que produce el comando MsgBox.

      MsgBox MACRO Handl, TxtMsg, txtTitle, styl

        LOCAL Msg1
        Titl LOCAL

        Si @ InStr (1, <TxtMsg>, <addr>) eq 0
          @ Si InStr (1, <TxtTitle>, <addr>) eq 0
          . datos
            Msg1 TxtMsg db, 0
            db Titl txtTitle, 0
          . Código
            invocar mensajes, Handl , ADDR Msg1, ADDR Titl, styl
            EXITM
          EndIf
        EndIf

        Si @ InStr (1, <TxtMsg>, <addr>) gt 0
          @ Si InStr (1, <TxtTitle>, <addr>) eq 0
          . datos
            Titl txtTitle db, 0
          . Código
            invocar mensajes, Handl, TxtMsg, ADDR Titl , styl
            EXITM
          EndIf
        EndIf

        Si @ InStr (1, <TxtMsg>, <addr>) eq 0
          @ Si InStr (1, <TxtTitle>, <addr>) gt 0
          . datos
            Msg1 TxtMsg db, 0
          . Código
            invocar mensajes, Handl, ADDR Msg1, txtTitle , styl
            EXITM
          EndIf
        EndIf

        Si @ InStr (1, <TxtMsg>, <addr>) gt 0
          @ Si InStr (1, <TxtTitle>, <addr>) gt 0
            invocar mensajes, Handl, TxtMsg, txtTitle, styl
            EXITM
          EndIf
        EndIf

      ENDM

MASM32 se ha escrito sin ningún compromiso a los intereses o el formato de otros idiomas, se pretende potenciar al máximo las ventajas de escribir en un lenguaje de bajo nivel verdadero. El formato de los archivos de inclusión y el código de ejemplo utiliza tamaños de datos genéricos ensamblador en forma de BYTE, WORD, DWORD, QWORD. No intente poner en práctica las teorías abstractas de clases o cualquier otra técnicas de estratificación, sino simplemente para poner a disposición el verdadero poder bajo nivel de las mejores disponibles en ensamblador.

El tamaño de los datos se relacionan directamente con el tamaño de registro de la serie de procesadores x86 donde hay una correlación exacta entre el tamaño de los datos y los tamaños de registro.

  Registrarse tamaño de DATA

   
Código:
al = BYTE 8 bits 
    ax = palabra de 16 bits
    eax = DWORD de 32 bits
    mm (0) = QWORD 64 bits

Compare esta simplicidad de hardware basado en directo a la situación actual de 32 bits de Windows C + +, que tiene más de 60 diferentes tipos de datos en torno a la teoría de clase abstracta y donde los nombres de los diferentes tipos de datos significar cosas diferentes dependiendo de qué versión del sistema operativo que se construye.

El archivo windows.inc ha tenido todos los tipos de datos convertidos a los tipos de datos genéricos de ASM para eliminar la capa adicional de complejidad en los años 60 o por lo que C + + tipos de datos que reducen hasta el BYTE asm genéricos, WORD, DWORD, QWORD. Esto elimina una de las fuentes de error principales, tipos de datos incorrectos. Hay un conjunto de conversiones en windows.inc para los programadores que portar el código escrito en C / C + + tipos de datos en MASM32.



Código de Portabilidad

Si usted está escribiendo código para las plataformas que posee colectivamente alrededor del 2% del mercado de software, la portabilidad significa algo, pero en un mercado que es aproximadamente el 95% del sistema operativo de Microsoft basado en las ventajas de tamaño, velocidad y potencia superan fácilmente la idea de ser puede escribir código que puede ser compilado en diferentes plataformas.

El problema con el código de plataforma cruzada es que es por necesidad, código más bajo denominador común que por lo general un mal desempeño contra el código específico de la plataforma.

A menudo hay debates acalorados sobre las virtudes diferentes de código portátil contra el código específico de la plataforma, pero lo que no está sujeto a debate es la medición del tamaño de disco utilizado, o la evaluación comparativa en términos de rendimiento.

Código específico de la plataforma tiene la ventaja, en gran medida en términos de rendimiento, pero a costa de no ser compilable en otras plataformas.

Argumentos muy similares son utilizados por algunos que son de la opinión de que los lenguajes de alto nivel son ahora lo suficientemente bien escrito para ser capaz de hacer lo ensamblador puede hacer, pero una vez más, la medida del tamaño del disco y la evaluación comparativa de los resultados cuentan una historia diferente.

Bien escrito el código de alto nivel de lenguaje en un compilador que no tiene muchos bugs en el que a menudo se desempeña bien en comparación con el código ensamblador mal escrito, pero para hacer el punto, el código bien escrito en ensamblador se superan a cualquier lenguaje de alto nivel, no importa lo bien que la código de lenguaje de alto nivel que está escrito.

Algo que se olvida en el debate es que el ensamblador, en este caso, MASM, gestiona todas las construcciones de alto nivel normal, también. Funciones normales con los valores de retorno, los procedimientos, sin valores de retorno, las bibliotecas, las llamadas a DLLs, Windows el uso de recursos, etc ... pero con la ventaja añadida de que puede utilizar las macros escritas correctamente los cuales más de edequately compensar los sistemas de pre-construidos en lenguajes de alto nivel.

Muchos de los que son de la orientación de la programación orientada a objetos evocan las imágenes de los programadores de ensamblador a desarticular a los archivos binarios en un editor hexadecimal, pero esto está lejos de la forma programadores de ensamblador de trabajo. La sintaxis de la seudo alto nivel en MASM, en relación con la capacidad de macro permite que el código muy limpio, si está escrito correctamente, sin embargo, todavía no hay ensamblador puro compromiso.

La distinción básica aquí es que con un ensamblador, usted consigue lo que usted escribe en un compilador, se obtiene más de lo que escriben y tienen poco control sobre lo que se añade. Es cierto que existen compiladores bien diseñado en el mercado, pero no hay razón para suponer que alguno o todos los compiladores se escriben así, sin pruebas de su producción en términos de tamaño o velocidad.

Escrito en ensamblador para una plataforma específica, en este caso de 32 bits de Windows es una tarea que no se compromete a poner en peligro su rendimiento en pos de un objetivo que normalmente no se puede lograr. Absolutamente no se ejecutará en un MAC, pero con menos del 2% del mercado, es una cuestión de "a quién le importa".

Lo que se obtiene con la escritura de ensamblador para una plataforma específica es un rendimiento óptimo para esa plataforma y con el 95% del mercado con procesadores de Intel basados ​​en sistemas operativos de Microsoft, lo que se obtiene es el mejor rendimiento en la plataforma principal.

Para los programadores que necesitan un rendimiento óptimo en otras plataformas, no es la misma alternativa, los ensambladores están disponibles para MIPS, PPC y 68000, así como los procesadores menos conocidos.



Herramientas y juguetes

EDITOR

El editor de MASM32 es qeditor.exe . Es una ventaja para establecer las asociaciones de archivos en el gestor de archivos para que pueda iniciar un archivo ASM haciendo doble clic sobre él en el Administrador de archivos o Explorador. Dependiendo de cómo el equipo individual se establece, esto a veces puede ser un problema en que el Explorador de paso variable parámetros de línea de comandos encerrados en diferentes formatos. La mejor solución es ejecutar "Opciones" en Explorer y configurar las opciones de la siguiente manera,

    1. Seleccione " Mostrar todos los archivos "

    2. Seleccione " Mostrar el total de MS-DOS camino en la barra de título "

    3. ¿Es que no seleccione " Ocultar MS-DOS extensiones de archivo para tipos de archivo que están registrados "

    4. Seleccione " Incluir barra de descripción para los dolores de derecha e izquierda "

El editor viene pre-configurado para crear todo el código de ejemplo y tutoriales Iczelion directamente desde el editor. El menú "Proyecto" tiene el rango de la opción de generación en él para seleccionar y apoyar el GUI y aplicaciones de consola.


Generador de código:

Prostart.Exe es el generador de código se suministra con MASM32. Se basará trabajo EXE como titular a un proyecto. Tiene varias opciones para los componentes incluidos en el código fuente. Prostart.Exe es una herramienta muy útil de aprendizaje en que se escribe el código de la API correcta para las aplicaciones basadas basados ​​en Windows. Este código se puede utilizar para iniciar una aplicación, para el código de creación de prototipos sin tener que escribir manualmente el código de inicio y también para probar ideas de forma rápida.


Usted tendrá que crear un directorio para un nuevo proyecto, seleccione el directorio y elija las opciones que necesita para el proyecto. Puede crear el proyecto directamente desde Prostart.Exe y se prueba para ver si hace lo que usted requiere. Proyectos escritos por Prostart.Exe están diseñados para crear directamente desde el editor y también se puede construir desde el archivo de proceso por lotes que Prostart.Exe crea.

EJEMPLO DE CÓDIGO
MASM32 viene con una serie de código de ejemplo para ayudar en el diseño de los componentes de un archivo de proyecto. Es en los directorios Ejemplo 1, Ejemplo 2 Ejemplo 3 y de MASM32.

TUTORIAL CÓDIGO
Iczelion ha hecho su serie de tutoriales disponibles a MASM32 y ha modificado para trabajar en MASM32. Cada clase es en su propio directorio, que está fuera del directorio ICZTUTES en MASM32.


NOTA : El código de tutorial y el código de ejemplo son los diferentes estilos escritos por personas diferentes y son para fines ligeramente distintos. Iczelion tutoriales están diseñados como ejemplos de aprendizaje , así como por el valor del código que está diseñado el código de ejemplo como principales ejemplos de referencia . asegúrese de que entiende el código de diseño de ambos antes de mezclar el código fuente ya que a veces pueden tener problemas de compatibilidad si cortar y pegar desde el diseño de códigos a otra.
BIBLIOTECAS
MASM32 tiene su propia biblioteca en el M32LIB directorio que tiene el código fuente completo y un archivo por lotes pre-construidos para crear la biblioteca de nuevo si se ha modificado o añadido a. Puede utilizar el archivo por lotes MAKE.BAT como un ejemplo de cómo construir sus propias bibliotecas.

Se empieza con un directorio aparte y cuando se escribe un módulo de biblioteca, lo copia en el directorio donde desea crear la biblioteca. Crear un archivo de inclusión que tiene el prototipo para cada función en cada módulo de la biblioteca y luego hacer un archivo por lotes del mismo estilo que el MAKE.BAT archivo por lotes que se basará la biblioteca para usted. A continuación, puede utilizar el archivo de inclusión y de la biblioteca en sus propios programas

Para facilitar el proceso de escritura de módulos de biblioteca, el editor tiene una opción en el menú Herramientas en "Crear módulo de la biblioteca". Este es un plug-in DLL que poner un esqueleto módulo de la biblioteca directamente en el editor de esta manera puede escribir nuevos módulos de su propio diseño.

Junto con las macros, las bibliotecas son métodos muy potente de hacer código re-utilizable que es rápido, eficiente y confiable para su uso en el nivel de aplicación. Las combinaciones de las bibliotecas y macros permiten al programador lenguaje ensamblador para diseñar con eficacia su propio idioma que se puede escribir tan rápido como un lenguaje de alto nivel normal, pero sin los malos hábitos y la hinchazón que los lenguajes de alto nivel de los más modernos sufren.
 


Esta información esta extraida de Masm32 version 7 . has click aqui para descargar MASM32 7
23  Programación / Ingeniería Inversa / Que se Necesita para la Ingeniería Inversa By Stuxnet en: 7 Noviembre 2012, 15:48 pm
Tener conocimiento en el lenguaje ASM (ensamblador)

Que es ASM

Se denomina lenguaje máquina a la serie de datos que la parte física de la computadora o hardware, es capaz de interpretar.

 Una computadora digital o, mejor dicho, su parte física, sólo distingue  datos de tipo binario, es decir, constituidos por dos únicos valores a los que se denomina valor 0 y valor 1 y que, físicamente,  se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos que contengan una información se utilizan una serie de unos y ceros cuyo conjunto indica dicha información.


Algunos ASM

Masm32 Paquete para programar aplicaciones para Windows con MASM (Microsoft Macro Assembler).

Fasm Ensamblador para DOS, Windows y Linux. Soporta tanto 16, 32 como 64 bits. Open Source.

Nasm Ensamblador alternativo pera orientado mas que nada a Linux. Soporta 16, 32 y 64 bits. Open Source.

Tutoriales de Iczelion: orientado a Windows (MASM32)

Debugger's & Disassembler's

Es un programa usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto.

Entre los mas comunes tenemos

OllyDbg (el mas conocido)

W32 Dasm v8.93

HackAsm Disassembler v8.02

Hex editor

Un editor hexadecimal (o editor de archivos binarios o editor de bytes ) es un tipo de programa de ordenador que permite al usuario manipular la fundamental binarios (0 / 1, cero / uno) datos que componen los archivos de computadora . Tenga en cuenta que los archivos de computadora puede ser muy pequeño (sólo un nombre, sin contenido) a muy grandes (de contenido que abarcan varios discos duros). Un archivo de computadora típica ocupa varias áreas en el plato (s) de una unidad de disco, cuyo contenido se juntan para formar el archivo. Editores hexadecimales que fueron diseñados para leer ("parse") y editar sector los datos de los segmentos físicos de disco o los discos duros a veces fueron llamados editores de sector o de los editores de disco .

Entre estos tenemos

HexWorkshop

WinHex v1.25

Hiew v7.10

HDD Hex Editor v5.04

ICY Hexplorer v5.04

Biew v5.62


Tutoriales

Bien aqui les dejo la web de maestro del cracking Ricardo Narvaja http://ricardonarvaja.info/

Los tutoriales para OllyDbg http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/

y algunos manuales de Programacion

http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/
24  Seguridad Informática / Hacking / IDAscope la navaja suiza para reversers en: 7 Noviembre 2012, 15:45 pm

Function Inspection. Esta función implementa la capacidad de serie específica de etiqueta de llamada API. La API de seguimiento podría seleccionada y modificada en un archivo de configuración específico (config.json). IDAscope le alertará cuando ocurrirán patrones específicos de la API. La funcionalidad de control de función permite otra característica super llamado: bloque basic para colorear. Haber coloreado bloques en IDAPro es realmente útil para aprisa a entender cuál es el propósito de la pieace analizada del código. Lo que es común, ahora es colapsar bloques dando nombres de nivel altos. IDAscope ofrece la posibilidad de colorear automáticamente bloquea haciendo forma más eficiente en reconoce bloques inútiles. Código de función de conversión y cambio de nombre automático de funciones de envoltura son funcionalidades adicionales útiles así.

WinAPI Browsing. Obviamente para windows reversas es increíblemente útil tener manual de referencia de la API de Windows. Aquí, usando la API de IDAscope referencia está al lado de los ojos para la búsqueda rápida e inteligente. La siguiente imagen muestra ambos: colorante de bloques y WinAPI navegando.


Crypto Identification. Tal vez la más funcionalidad de useufl a todos los inversores que se utilizan para lidiar con múltiples herramientas para averiguar qué algoritmo de cifrado se ha utilizado en el código. IDAscope detecta el algoritmo usado basando su análisis en la relación de la aritmética / instrucciones de lógica para todas las instrucciones en un bloque básico.

http://pnx-tf.blogspot.it/

Happy Reverse Engineerin
25  Seguridad Informática / Hacking / Dissy ( Herramienta Para la Ingenieria Inversa ) en: 7 Noviembre 2012, 15:44 pm
Dissy es una interfaz gráfica para el desensamblador de objdump. Dissy puede utilizarse para la depuración y viendo el código generado por el compilador.

Dissy se puede encontrar en Backbox ... Auditing -> Reverse Engineering -> Dissy


También se puede descargar de: http://code.google.com/p/dissy/downloads/list
26  Seguridad Informática / Criptografía / Tipos de Hash en: 7 Noviembre 2012, 15:39 pm
DES(Unix)
Ejemplo: IvS7aeT4NzQPM
Utilizados en Linux y otras similares OS.
Longitud: 13 characters.
Descripción: Los dos primeros caracteres son la sal (caracteres aleatorios, en nuestro Ejemplos En la sal es la cadena "IV"), luego sigue el hash actual.


De dominio en caché de credenciales
Ejemplo: Admin:b474d48cdfc4974d86e f4d24904cdd91
Se utiliza para almacenar en caché las contraseñas de dominio de Windows.
Longitud: 16 bytes.

Algoritmo: MD4(MD4(Unicode($pass)).Unicode(strtolower($userna me)))


MD5(Unix)
Ejemplo: $1$12345678$XM4P3PrKBgKNnTaqG9P0T/
Utilizados en Linux y otras similares OS.
Longitud: 34 Caracteres
Descripción: El hash comienza con la firma $ 1 $, entonces ahí va la sal (hasta 8 caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), entonces ahí va uno más el carácter $, seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo MD5 2000 veces.

MD5(APR)
Ejemplo: $apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.
Utilizados en Linux y otras similares OS.
Longitud: 37 caracteres
Descripción: El hash comienza con la firma $ apr1 $, entonces ahí va la sal (hasta 8 caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), entonces ahí va uno más el carácter $, seguido por el hash actual .
Algoritmo: La verdad es que es un circuito llamado el algoritmo MD5 2000 veces.


MD5(phpBB3)
Ejemplo: $H$9123456785DAERgALpsri.D9z3ht120
Usado en phpBB 3.x.x.(Foros)
Longitud: 34 characters.
Descripción: El hash comienza con la firma H $ $, entonces ahí va uno de los personajes (por lo general el número '9 '), entonces ahí va la sal (8 caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo MD5 2048 veces.


MD5(Wordpress)
Ejemplo: $P$B123456780BhGFYSlUqGyE6ErKErL01
Usado en Wordpress.
Longitud: 34 characters.
Descripción: El hash comienza con la firma $ P $, entonces ahí va uno de los personajes (más a menudo "B" el número), entonces ahí va la sal (8 caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo MD5 8192 veces.


MySQL
Ejemplo: 606717496665bcba
Usado en las versiones antiguas de MySQL
Longitud: 8 bytes.
Descripción: El hash se compone de dos DWORD, cada uno no exceda el valor de 0x7fffffff.

MySQL5
Ejemplo: *E6CC90B878B948C35E92B003C792C46C58C4AF40
Usado en la versiones nuevas de MySQL5
Longitud: 20 bytes.
algoritmo: SHA-1(SHA-1($pass))
Nota: Los hashes se van a cargar en el programa sin el asterisco que se encuentra en el comienzo de cada hash.

RAdmin v2.x
Ejemplo: 5e32cceaafed5cc8086 6737dfb212d7f
Used in the application Remote Administrator v2.x.
Longitud: 16 bytes.
Nota: La contraseña se rellena con ceros a la Longitud de 100 bytes, que se aloja toda la cadena con el algoritmo MD5.

MD5
Ejemplo: c4ca4238a0b923820dc c509a6f75849b
Utilizados en v2.x phpBB, versión Joomla 1.0.13 a continuación y muchos otros foros y CMS.
Longitud: 16 bytes.
Algoritmo: Igual que la función md5 () en PHP.

md5($pass.$salt)
Ejemplo: 6f04f0d75f6870858ba e14ac0b6d9f73:1234
Utilizados en WB News, Joomla versión 1.0.13 y superiores.
Longitud: 16 bytes.

md5($salt.$pass)
Ejemplo: f190ce9ac8445d24974 7cab7be43f7d5:12
Utilizados en osCommerce, AEF, Galería y otros CMS.
(osCommerce tenia una falla mas grande..)
Longitud: 16 bytes.

md5(md5($pass))
Ejemplo: 28c8edde3d61a041151 1d3b1866f0636
Utilizados en e107, DLE, AVE, Diferior, Koobi y otros CMS.
Longitud: 16 bytes.

md5(md5($pass).$salt)
Ejemplo: 6011527690eddca2358 0955c216b1fd2:wQ6
Utilizado en vBulletin, IceBB.
Longitud: 16 bytes.
Notes: [1] [3] [4]

md5(md5($salt).md5($pass))
Ejemplo: 81f87275dd805aa018d f8befe09fe9f8:wH6_S
Utilizados en IPB.
Longitud: 16 bytes.

md5(md5($salt).$pass)
Ejemplo: 816a14db44578f516cb aef25bd8d8296:1234
Usado en MyBB.
Longitud: 16 bytes.


md5($salt.$pass.$salt)
Ejemplo: a3bc9e11fddf4fef4de ea11e33668eab:1234
Usado en TBDev.
Longitud: 16 bytes.

md5($salt.md5($salt.$pass))
Ejemplo: 1d715e52285e5a6b546 e442792652c8a:1234
Usado en DLP.
Longitud: 16 bytes.

SHA-1
Ejemplo: 356a192b7913b04c545 74d18c28d46e6395428 ab
Se utiliza en muchos foros y CMS.
Longitud: 20 bytes.
Algoritmo: Igual que el sha1 () en PHP.

sha1(strtolower($username).$pass)
Ejemplo: Admin:6c7ca345f63f835cb35 3ff15bd6c5e052ec08e 7a
Utilizados en SMF.
Longitud: 20 bytes.

sha1($salt.sha1($salt.sha1($pass)))
Ejemplo: cd37bfbf68d198d11d3 9a67158c0c9cddf3457 3b:1234
Utilizados en WoltLab BB.
Longitud: 20 bytes.

SHA-256(Unix)
Ejemplo: $5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqiKSNK1rkTk9z YE1v0
Utilizados en Linux y otras similares OS.
Longitud: 55 characters.
Descripción: El hash comienza con la firma de $ 5 $, entonces ahí va la sal (hasta 8 caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), entonces ahí va uno más el carácter $, seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo SHA-256 5000 veces.


SHA-512(Unix)
Ejemplo: $6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEmFNLlq6Ik9X3 reMXY3doKEuxrcDohKU x0Oxf44aeTIxGEjssvt T1aKyZHjs
Utilizados en Linux y otras similares OS.
Longitud: 98 caracteres.

Descripción: El hash comienza con la firma de $ 6 $, entonces ahí va la sal (hasta 8 caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), entonces ahí va uno más el carácter $, seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo SHA-512 5000 veces.
27  Programación / ASM / Re: como instalar tasm 5 en windows 7 en: 19 Octubre 2011, 02:25 am
¿Es un Windows 7 de 64 bits? Los procesos de 16 bits no estan soportados ... usa un ensamblador de al menos 32 bits.

hola pues tengo ese ensamblador pero no se cual o en que carpeta o cual es el archivo del ensamblador
28  Programación / ASM / como instalar tasm 5 en windows 7 en: 29 Septiembre 2011, 04:57 am
saludo mundo aguien me puede ayudar como instalar tasm 5 en windows 7 ya que no me lo acepta
29  Programación / ASM / descargar asm en: 21 Septiembre 2011, 04:07 am
hola mundo soy nuevo y quisiera conseguir el lenguaje de donde lo puedo descargar
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines