Jakas reklama 

 

Deasembler, dezasembler (z ang. disassembler) – program tłumaczący kod maszynowy na kod źródłowy w języku asemblera. Dezasemblacją lub deasemblacją nazywa się sam proces generowania kodu.

Asembler zwykle pozwala na korzystanie z komentarzy i stałych wewnątrz programu; są one usuwane podczas procesu zamiany kodu asemblera na kod maszynowy.

W większości przypadków nie jest możliwa skuteczna metoda zamiany kodu maszynowego na język asemblera, analizator nie jest w stanie rozróżnić danych od kodu i interpretuje dane umieszczone w kodzie programu jak instrukcje - szczególnie, jeśli analizowane dane są dodatkowo zabezpieczone przed deasemblacją poprzez niskopoziomowe metody pomagające chronić prawa autorskie programisty. Kod wynikowy deasemblowanego programu jest przez to jeszcze trudniejszy do zinterpretowania przez człowieka.

edytuj Przykład

Przykładowy program wypisujący na standardowym wyjściu słowa Witaj świecie (kodowanie w UTF-8) w języku C:

#include <stdio.h>
#include <stdlib.h>
int main()
{
  printf("Witaj świecie\n");
  exit(0);
}

po deasemblacji programu skompilowanego przez gcc do kodu binarnego procesora architektury x86 w składni AT&T:

         .file   "main.c"
        .section        .rodata
.LC0:
        .string "Witaj \305\233wiecie"
        .text
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $4, %esp
        movl    $.LC0, (%esp)
        call    puts
        movl    $0, (%esp)
        call    exit
        .size   main, .-main
        .ident  "GCC: (GNU) 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)"
        .section        .note.GNU-stack,"",@progbits

Większość debugerów zawiera disasemblery, np. Binutils zawiera program objdump.

edytuj Zobacz też


www.skalisko.waw.pl skarpetki Rejestr Online Cięcie wodą Sax and Dance