프로그램에서 생성 한 .dat 파일이 있습니다. 프로그램 소유자는이 파일의 구문 분석 및 편집에 반대하지 않지만 아무에게도 답변을 제공하지 않습니다.이진 비 직렬화 - 어떻게 찾을 수 있습니까, 어떤 유형의 직렬화입니까?
파일은 대부분이 방식으로 정의되는 변수로 구성되어 예를 들어,
(4 bytes - length of the var name)(var name)(1 zero byte)(4 bytes of some internal var type)
: 그래서 대부분의 경우
:
(4 bytes - length of the var name)(var name)(4 bytes of some internal var type)(4 bytes - possibly are elements count)(X bytes of var value)
드물게
([4 0 0 0][name])[11 0 0 0][1 0 0 0]([9 0 0 0][Alexander])
([8 0 0 0][names])[6 0 0 0](length [3 0 0 0])([4 0 0 0][John])([4 0 0 0][Anne])([7 0 0 0][SomeGuy])
나는 부스트 바이너리 직렬화를보고 시도했지만 파일에 변수 이름을 추가하지 않습니다 내가 생각 8 바이트를 사용하지 4.
알아 내기 위해서는 이진 데이터 파일의 스텐실 또는 레이아웃이 있어야합니다. 단위 당 얼마나 많은 바이트 ('uint8_t' 또는'uint32_t'와 같은)를 알 수 없습니다. 또한 멀티 바이트 수량의 경우 데이터가 Little Endian 또는 Big Endian인지 여부를 알아야합니다. –
[Reverse Engineering] (https://reverseengineering.stackexchange.com/) 사이트를 대신 사용해보십시오. –
Thomas, Macintosh ANSI (Notepad ++)입니다. 단위당 4 바이트라고 확신합니다. 나는 배열의 길이가 4 바이트로 표현된다는 것을 알아 냈다. – user64675