Dezasembler
Z Wikipedii
Dezasembler (ang. disassembler) – program tłumaczący kod maszynowy na kod źródłowy w języku asemblera. Dezasemblacją nazywa się sam proces tworzenia 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 asembler, 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 dezasemblacją, poprzez niskopoziomowe metody pomagające chronić prawa autorskie programisty. Kod wynikowy dezasemblowanego 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 dezasemblacji programu skompilowanego przez gcc do kodu binarnego procesora architektury x86:
.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
[edytuj] Programy
Większość debugerów zawiera dezasemblery, np. GNU Binutils zawiera program objdump
- BORG Disassembler [1]
- RosASM [2] – 32-bitowy asembler.
- Interactive Disassembler [3] – komercyjny, interaktywny dezasembler.
- Bastard (program) [4] – linuksowy dezasembler. Nie ma jeszcze użytecznego GUI, ale da się go obsługiwać z linii komend.
- Kopi [5]
- PVDasm [6]
- Java Class File Disassembler [7]
- HT Editor [8] – binarny edytor dla systemów Linux i Windows.
- ndisasm [9] – ndisasm, część pakietu NASM
- Udis86 Udis86
- diStorm64 [10]
- dezasembler dla bytecode'u Pythona [11]
- BIEW is Binary vIEW project