Disassembler
역어셈블러 또는 디스어셈블러(disassembler)는 기계어를 어셈블리어로 변환하는 컴퓨터 프로그램이다. 역어셈블러는 어셈블리어가 아닌 고급 프로그래밍 언어를 대상으로 하는 역컴파일러와는 구분한다. 역어셈블러의 출력물인 디스어셈블리(disassembly)는 어셈블러로의 입력에 맞추는 것보다 사람이 읽기 쉽도록 형식을 정하는 경우가 있는데 이것이 바로 리버스 엔지니어링 도구의 역할이다.
어셈블리어 소스 코드는 보통 상수와 프로그래머의 주석을 허용한다. 이것들은 기계어로 변환되는 과정에서 어셈블러에 의해 제거된다. 그렇기 때문에 역어셈블리는 원본 소스 코드보다는 사람이 해석하기 어려워 진다. 몇몇 역어셈블러들은 ELF 파일 형식의 오브젝트 파일에 존재하는 기호 디버깅(Symbolic Debugging) 정보를 사용한다. IDA Pro는 사용자에게 값이나 코드의 영역을 위한 연상 기호를 사용할 수 있게 함으로써 사용자의 이해를 역어셈블 과정에 적용할 수 있게 한다.
역어셈블리는 정확한 과학이 아니다. CISC 플랫폼에서는 가변적인 명령어들이나 자체 수정 코드의 존재로 인해서 한 프로그램이 여러 타당한 역어셈블리로 만들어질 수 있는 것이다.
See also
- Reverse engineering
- Decompiler
- Assembly
- Binary Ninja
- Interactive Disassembler (IDA; IDA Pro)
- OllyDbg is a 32-bit assembler level analysing debugger
- Radare2
- Hiew
- objdump (GNU Binutils)
- Plasma
- Cutter
- Ghidra
- x64dbg