DDisasm: 역방향(양방향) 디스어셈블러
DDisasm: Reversible (bi-directional) Disassembler
DDisasm은 빠르고 정확한 디스어셈블러로, 결과 어셈블리 코드를 다시 어셈블할 수 있을 정도로 정확합니다. Datalog(소플) 선언적 논리 프로그래밍 언어로 구현되어 있으며, ELF/PE 파일 정보를 파싱하고 가능한 명령어의 슈퍼셋을 디코딩하여 초기 사실 집합을 생성합니다. 이 사실들을 분석하여 코드 위치, 심볼화, 함수 경계를 식별하고, 정제된 사실을 GTIRB 중간 표현으로 변환합니다. GTIRB 프리티 프린터를 사용하여 재어셈블 가능한 어셈블리 코드로 출력할 수 있습니다. ELF(리눅스)와 PE(윈도우) 바이너리 형식을 지원하며, x86_32, x86_64, ARM32, ARM64, MIPS32 아키텍처를 지원합니다.
DDisasm은 결과 어셈블리 코드를 다시 어셈블할 수 있을 정도로 정확한 _빠른_ 디스어셈블러입니다.
- aboardRat4
HN에서는 ddisasm에 대해 충분히 논의하지 않은 것 같다. 내가 이걸 발견했을 때, 정말 놀랐고, 경악했고, 충격받았고, 감격했으며, 믿기지 않았다. 알고 보니 실제로 작동한다.
- BobbyTables2
실제로는 어떻게 작동하는 거지? 명령어 개수나 크기를 바꾸면 여전히 실행 파일이 기능을 못 하게 되는 거 아닌가? 아니면 모든 절대/상대 코드 및 데이터 참조가 마법처럼 다 업데이트되는 건가?
- sterlind
오, 수플레! 포화 폭발을 어떻게 피했는지 궁금하네. 그게 과거에 내 수플레 프로젝트들을 망쳤거든. 하지만 분명히 분할 방법(아마 블록 단위?)을 찾은 모양이야.