문제

이진 파일이 있습니다. 나는 그것이 어떻게 형식화되어 있는지 모르겠다. 나는 그것이 델파이 코드에서 나온다는 것을 알고있다.

이진 파일을 분석하는 방법이 있습니까?

알려지지 않은 형식의 파일의 이진 내용을 분석하고 실질화하는 "패턴"이 있습니까?

도움이 되었습니까?

해결책

이것들을 시도하십시오 :

  1. 데이터를 제외합니다: exe를 컴파일하는 방법을 분석하십시오 (시도하십시오. 파일 분석기). 발견 된 언어로 바이너리 데이터를 제조하십시오. 그런 다음 모든 프로그래밍 언어가 이해할 수있는 XML 형식 (언어 표시)로 직렬화하십시오.
  2. 이진 데이터를 분석하십시오: 변형이 거의없는 다양한 버전의 파일을 저장하고 Diff 프로그램을 사용하여 HEX 편집기와 모든 비트의 의미를 분석하십시오. 이진 해킹 기술과 함께 사용하십시오 (예 : Frans Faase의 이진 파일 형식을 깨는 방법)
  3. 리버스 엔지니어 응용 프로그램: 앱 빌드에 사용되는 프로그래밍 언어에 리버스 엔지니어링 도구를 사용하여 코드를 얻으십시오 ( 파일 분석기). 그렇지 않으면 Disassembler 분석 도구를 사용하십시오 Ida Pro Disassembler

다른 팁

취미 프로젝트를 위해서는 오래된 게임 파일을 리버스 엔지니어링해야했습니다. 내 접근 방식은 다음과 같습니다.

  • 좋은 16 진 편집자가 있습니다.
  • 이진 파일에서 읽을 수있는 단어를 찾으십시오. 그들의 분포가 어떤지 주목하십시오. 그들 사이의 거리는 일정하다면 당신은 그것이 목록이라는 것을 알고 있습니다.
  • 2-3 결과 0을 찾으십시오. int32 값을 나타낼 수 있습니다.
  • 일부 dword는 파일에 포인터가 될 수 있습니다.
  • 파일에서 다시 발생하는 패턴을 식별하십시오.
  • 많은 C0-CF를 보면 RLE 압축 데이터가 나타날 수 있습니다.

리버스 엔지니어링 바이너리 파일이 무엇을 나타내는 지에 대한 아이디어가있을 때 시간이 많이 걸리는 프로세스입니다. 그것이 무엇인지 전혀 모른다면 더 어려울 것입니다.

그러나 가능하지만 그렇게 할 좋은 이유가 있어야합니다.

첫 번째 단계는 선택의 16 진 편집자에서 열고 파일이 표현 해야하는 방향을 가리키기 위해 영어 텍스트를 찾을 수 있는지 확인하는 것입니다. 거기에서 Google "Reverse Engineering Binary Files"는 나보다 지식이 풍부한 사람들이 그 안내서를 작성한 것보다 훨씬 더 지식이 풍부한 사람들이 있습니다.

GNU Binutils의 "문자열"프로그램은 매우 유용합니다. 파일에 인쇄 가능한 문자의 문자열을 인쇄하여 파일에 포함 된 것 또는 프로그램이하는 일에 대한 단서를 제공합니다.

데이터가 직렬화 된 델파이 객체를 나타내는 경우 델파이 직렬화 프로세스에 대한 읽기를 시작해야합니다. 이 경우, 최선의 방법은 Delphi를 사용하여로드하고 IDE에서 분석을 계속하는 것입니다. 델파이 직렬화에 대한 일부 정보를 찾을 수 있습니다 여기.

편집 : 파일에 직렬화 된 델파이 객체가 포함 된 경우,이를로드하는 작은 델파이 프로그램을 작성하고 XML과 같은 중립적 인 것으로 직접 데이터를 "변환"해야합니다. 이 작업을 수행하면 Delphi가 XML에 직렬화를 지원하는지 확인하고 확인해야합니다. 그런 다음 모든 언어에서 해당 객체에 액세스 할 수 있습니다.

나는 개발했다 헥사 네이터 (창과 리눅스) 및 그것을 동기화하십시오! (MACOS) 정확히이 목적을 위해. 이러한 응용 프로그램을 사용하면 다른 16 진수 편집기와 같은 이진 파일을 볼 수 있지만 이진 파일 형식의 세부 사항과 함께 "문법"을 만들 수 있습니다. 문법에는 모든 빌딩 블록이 포함되어 있으며 파일을 자동으로 구문 분석하는 데 사용됩니다.

따라서 분석에서 얻은 지식을 유지하고 여러 파일에 동시에 적용 할 수 있습니다. HEX 편집기에서 빠른 개요를 위해 파일 형식의 비트 및 조각을 색상 코딩 할 수도 있습니다.Screen Shot of Synalyze It! Pro구문 분석 결과는 파일을 쉽게 수정할 수있는 트리 뷰에 표시됩니다 (Endianness et Cetera 적용).

Unix "File"명령은 정말 유용합니다. Windows에 그와 비슷한 것이 있는지 모르겠습니다. 당신은 이것처럼 그것을 실행합니다 :

file myfile.ext

그리고 그것은 그 안에 포함 된 마법의 숫자와 데이터를 기반으로 텍스트 설명을 뱉어냅니다.

아마도 그것은 내부에 포함되어있을 것입니다 Cygwin.

파일을 생성하는 응용 프로그램에 액세스 할 수있는 경우 응용 프로그램에 변경 사항을 적용한 다음 파일을 저장하고 효과를 확인할 수 있습니다 (숫자가 저장되어 있음을 명심하십시오. 작은 엔디언):

  • 먼저 파일을 반복적으로 만듭니다. 파일이 바이너리가 동일하지 않으면 현재 날짜/시간은 아마도 HTE 차이가 발생하는 영역에 저장 될 수 있습니다.
  • 어쩌면 다른 환경에서 소프트웨어가 실행되면서 OS 버전 등이 저장되어 있는지 확인하고 싶을 수도 있지만 이는 이례적인 일입니다.
  • 다음으로 단일 변수를 변경 하고이 변수의 값 만 다른 여러 파일을 만들 수 있습니다. 이 변수가 저장된 위치를 식별하는 데 도움이됩니다.
  • 이렇게하면 파일에 저장되지 않은 변수를 제외 할 수 있습니다. 변경하지만 생성 된 파일이 동일하면 저장되지 않습니다.

위의 단계로 작업 한 가설을 테스트하려면 파일 중 하나를 편집하고 응용 프로그램에서 읽게하십시오.

응용 프로그램 자체에 액세스 할 수 없다면, 응용 프로그램을 잊어 버리고 문제를 해결하는 다른 방법을 찾는 것이 좋습니다. 더 빠를 확률이 매우 높습니다 ...

만약에 file 의미있는 대답을하지 않으면 시도하고 싶을 수도 있습니다. 트리드 Marco Pontello에 의해 데이터가 알려진 형식으로 저장되어 있는지 확인합니다.

그것을 사용하는 프로그램을 알고 있습니까? 그렇다면 해당 프로그램이 파일 함수에 쓰기에 연결하고 글쓰기의 데이터, 데이터 규모 및 위치에 대한 아이디어를 얻을 수 있습니다.

더 많은 정보: http://www.codeproject.com/kb/dll/win32apihooking_trouble.aspx

Delphi 응용 프로그램을 가져 와서 열 수 있습니다 Ida Pro 프리웨어 버전, 파일을 작성하는 위치를 찾아 파일을 어떻게 작성하는지 디코딩하십시오.

계획 텍스트가 아니라면.

파일의 원시 육각 바이트 만 표시하는 기존 육각 편집기와 달리 010 편집기는 이진 템플릿을 사용하여 파일을 계층 구조로 구문 분석 할 수 있습니다. 이진 템플릿을 실행 한 결과는 원시 육각 바이트 만 사용하는 것보다 이해하고 편집하기가 훨씬 쉽습니다.

http://www.sweetscape.com/010editor/

HEX 편집기에서 열고 분석하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top