[binary] 바이너리 파일 형식을 리버스 엔지니어링하는 데 도움이되는 도구

알 수없는 이진 데이터 형식을 디코딩하는 데 도움이되는 도구는 무엇입니까?

나는 Hex Workshop과 010 Editor가 모두 구조를 지원한다는 것을 알고 있습니다. 알려진 고정 형식의 경우 제한적으로 괜찮지 만, 특히 알 수없는 형식의 경우 더 복잡한 것은 사용하기 어렵습니다. 스크립팅 언어 또는 스크립팅 가능한 GUI 도구에 대한 모듈을 찾고있는 것 같습니다.

예를 들어, 제한된 알려진 정보 (아마도 매직 넘버)에서 데이터 블록 내에서 구조를 찾을 수 있기를 원합니다. 구조를 찾으면 알려진 길이와 오프셋 단어를 따라 다른 구조를 찾습니다. 그런 다음 의미가있는 곳에서 반복적으로 반복합니다.

제 꿈에서는 시스템에 이미 말한 내용을 기반으로 가능한 오프셋과 길이를 자동으로 식별 할 수도 있습니다!



답변

다음은 떠오르는 몇 가지 팁입니다.

경험상 대화 형 스크립팅 언어 (Python 사용)가 큰 도움이 될 수 있습니다. 바이너리 스트림과 몇 가지 간단한 알고리즘을 처리하는 간단한 프레임 워크를 작성할 수 있습니다. 그런 다음 바이너리를 가져와 다양한 것을 확인할 스크립트를 작성할 수 있습니다. 예를 들면 :

다양한 부분에 대한 통계 분석을 수행하십시오. 예를 들어 임의 데이터는이 부분이 아마도 압축 / 암호화되었음을 알려줍니다. 0은 부품 사이의 패딩을 의미 할 수 있습니다. 분산 된 0은 정수 값 또는 유니 코드 문자열 등을 의미 할 수 있습니다. 다양한 오프셋을 찾아보십시오. 바이너리의 일부를 2 바이트 또는 4 바이트 정수 또는 부동 소수점으로 변환하고 인쇄하여 의미가 있는지 확인하십시오. 데이터에서 반복되거나 매우 유사한 부분을 검색하는 몇 가지 함수를 작성하면 헤더를 쉽게 찾을 수 있습니다.

가능한 한 많은 문자열을 찾고 다른 인코딩 (c 문자열, 파스칼 문자열, utf8 / 16 등)을 시도하십시오. 이를위한 몇 가지 좋은 도구가 있습니다 (나는 Hex Workshop에 그런 도구가 있다고 생각합니다). 문자열은 많은 것을 알려줍니다.

행운을 빕니다!


답변

Mac OS X의 경우 제 iBored보다 훨씬 더 뛰어난 새롭고 훌륭한 도구가 있습니다. Synaliyze It! ( http://www.synalysis.net/ )

iBored에 비해 차단되지 않은 파일에 더 적합하며 스크립팅 가능성 (Lua 사용)을 포함하여 구조를 완벽하게 제어 할 수 있습니다. 또한 구조를 더 잘 시각화합니다.


답변

Tupni ; 내 지식으로는 Microsoft Research에서 직접 구할 수 없지만 유사한 프로그램 (아마도 오픈 소스)을 작성하려는 사람이 관심을 가질 수있는이 도구에 대한 문서가 있습니다.

Tupni : 입력 형식의 자동 리버스 엔지니어링 ( @ ACM 디지털 라이브러리 )

요약

최근 연구는 프로토콜 또는 파일 형식 사양의 자동 리버스 엔지니어링의 중요성을 확립했습니다. 그러나 이전 도구로 리버스 엔지니어링 된 형식은 보안 애플리케이션에 중요한 중요한 정보를 놓쳤습니다. 이 백서에서는 레코드 시퀀스, 레코드 유형 및 입력 제약을 포함한 풍부한 정보 세트로 입력 형식을 리버스 엔지니어링 할 수있는 도구 인 Tupni를 제시합니다. Tupni는 여러 입력에 대해 형식 사양을 일반화 할 수 있습니다. 우리는 Tupni의 프로토 타입을 구현하고 10 가지 형식으로 평가했습니다. 5 가지 파일 형식 (WMF, BMP, JPG, PNG 및 TIF)과 5 가지 네트워크 프로토콜 (DNS, RPC, TFTP, HTTP 및 FTP)입니다. Tupni는 테스트 입력에서 모든 레코드 시퀀스를 식별했습니다. 또한 여러 WMF 파일을 집계하여 Tupni는 WMF에 대한보다 완전한 형식 사양을 도출 할 수 있습니다. 또한 이전 리버스 엔지니어링 도구로는 불가능했던 제로 데이 취약성 서명 생성을 위해 제공하는 풍부한 정보를 사용하여 Tupni의 유용성을 시연합니다.


답변

최근에 출시 한 내 자신의 도구 인 “iBored”가이 작업의 일부를 수행 할 수 있습니다. 파일 시스템 형식 (UDF, HFS, ISO9660, FAT 등)을 시각화하고 디버깅하는 도구를 작성하고 검색, 복사 및 나중에 구조 및 템플릿 지원을 구현했습니다. 구조 지원은 매우 간단하며 템플릿은 구조를 동적으로 식별하는 방법입니다.

모든 것을 Visual BASIC 언어로 프로그래밍 할 수 있으므로 값을 테스트하고 특정 블록을 읽는 등 모든 작업을 수행 할 수 있습니다.

이 도구는 무료이며 모든 플랫폼 (Win, Mac, Linux)에서 작동하지만, 공유하기 위해 방금 공개 한 개인 도구이므로 문서화되어 있지 않습니다.

하지만 시도해보고 피드백을주고 싶다면 더 유용한 기능을 추가 할 수 있습니다.

나는 그것을 오픈 소스로 만들었지 만 REALbasic으로 작성 되었기 때문에 많은 사람들이 그러한 프로젝트에 참여할 것 같지 않습니다.

링크 : iBored 홈페이지


답변

나는 여전히 때때로 AXE, Advanced Hex Editor라는 오래된 16 진 편집기를 사용합니다. 지금은 인터넷에서 거의 사라진 것으로 보이지만 Google에서 여전히 찾을 수 있습니다. 내가 아는 마지막 버전은 3.4 버전 이었지만 실제로는 개인용 무료 버전 2.1 만 사용했습니다.

가장 흥미로운 기능이자 다양한 게임 및 그래픽 형식을 해독하는 데 가장 많이 사용했던 기능은 그래픽보기 모드입니다. 기본적으로 각 바이트가 색상 코드 픽셀로 변환 된 파일을 보여줍니다. 그리고 그렇게 간단하게 들리지만 때때로 리버스 엔지니어링 시도가 훨씬 쉬워졌습니다.

눈으로하는 것은 자동 분석을하는 것과는 정반대이며 그래픽 모드는 오프셋을 찾고 따르는 데 많이 사용되지 않을 것입니다.

최신 버전에는 사용자의 요구 사항 (스크립트, 정규성 파인더, 문법 생성기)에 맞는 것처럼 들리는 몇 가지 기능이 있지만 얼마나 좋은지 모르겠습니다.


답변

Hachoir 필드에 바이너리 형식을 구문 분석을위한 파이썬 라이브러리입니다, 다음 필드를 검색합니다. 일반적인 형식에 대한 많은 파서가 있지만 파일에 대한 자체 파서를 작성할 수도 있습니다 (예 : 바이너리 파일을 읽거나 쓰는 코드로 작업 할 때 일반적으로 디버깅 지원을 받기 위해 먼저 Hachoir 파서를 작성합니다). 하지만 지금은 프로젝트가 거의 비활성 상태 인 것 같습니다.


답변

내 프로젝트 icebuddha.com 은 브라우저에서 형식을 설명하기 위해 파이썬을 사용하여 이것을 지원합니다.