2011-12-05 3 views
1

레거시 파일 형식을 사용하여 데이터를 저장하는 프로젝트를 상속했습니다. 해당 파일 형식으로 들어가는 데이터에 액세스 할 수 있고 결과 파일에도 액세스 할 수 있지만 템플릿에 액세스 할 수는 없습니다. , 나는 그것을 재창조해야한다.바이너리 템플릿 파일

이진 파일을 리버스 엔지니어링하는 가장 좋은 방법은 무엇입니까? 어떤 언어/암호화가 사용되는지 파악하려면 어떻게해야합니까? 내가 한 번 정보를 얻는 데 가장 좋은 프로그램 (무료, 선호)은 무엇일까요? 이것은 Windows 시스템에 있지만 OpenSUSE Linux 상자를 실행하여이 문제에 대한 도움을받지 않았습니다.

+3

프로젝트 원본에 액세스 할 수없는 경우 샘플 입력 집합을 갖고 조금씩 변경하고 파일 형식의 이진 diff를 수행하여 해가되는 내용을 해독하려고합니다. –

+0

죄송합니다. 이해가 가지 않습니다. 조금 더 설명해 주시겠습니까? '바이너리 파일 '이란 무엇입니까? '템플리트 (template) '란 무엇인가? 파일 형식과 결과 파일을 설명 할 수 있습니까? 그런데 머리글 (이진 파일의 첫 번째 문자)은 무엇입니까? – Skrol29

+0

리버스 엔지니어링 파일 형식의 기사가 많이 있습니다. 예 : http://en.wikibooks.org/wiki/Reverse_Engineering/File_Formats – Alex

답변

5

약 1 년 전의 의견은 형식을 작동 방식으로 리버스 엔지니어링하는 것의 핵심입니다. 기존 프로그램을 블랙 박스로 처리하십시오. 저는 당신이 여전히 레거시 시스템을 어떻게 든 운영 할 수 있다고 가정합니다. 가장 먼저하는 일은 레거시 프로그램 전체를 어떻게 든 부를 수있는 서브 루틴으로 바꾸는 것입니다. 이는 스크립팅, VM 내에서의 실행, 시뮬레이션 및/또는 조롱 된 장치 등을 의미 할 수 있습니다. 뭐든지간에. 이 작업을 수행하는 방법을 모르는 경우 특정 상황에 대한 별도의 질문을하십시오. 하지만 목표는 레거시 소프트웨어의 사용을 자동화하여 프로브 및 테스트 슈트를 실행할 수 있도록하는 것입니다.

암호화를 사용할 수 있습니다. 이것을 먼저 다루십시오. 강력한 암호에는 애벌랜치 속성이 있습니다. 입력의 단일 비트를 변경하면 출력 비트의 50 %가 변경되고 의사 랜덤 비트 플립과 동일합니다. avalanche 속성을 사용하여 (1) 암호화 존재 여부를 테스트하고 (2) 암호화 구조를 찾으려합니다. 예를 들어, 데이터베이스가 한 번에 한 행씩 암호화 된 경우 저장된 행의 한 비트를 변경하면 암호화 된 행의 평균 비트 수를 변경할 수 있습니다. 분명히 한 비트를 변경하면 전체 파일이 변경되는 경우 몇 비트 만 변경하면 (, 예 : 체크섬, ) 다른 종류의 문제가 발생합니다. 어떤 형태로든 암호화가 있다면, 디버거에서 레거시를 실행하고 알고리즘을 알아낼 필요가 있습니다. 이것은 가치가 없을 수도 있습니다.

여기서 알 수 있듯이이 모든 것은 레거시의 작동을 확인하기위한 많은 호출을 의미합니다. 당신은 이것을 손으로하고 싶지 않습니다. 첫 단락을보십시오. 또 다른 우려를 해소하기 위해 데이터를 추출하기위한 기성 코드를 발견 할 가능성은 거의 없습니다. 이는 맞춤 코드 작업입니다. 이제 자동화가 작동하기 때문에 단위 테스트를 설정하고 레거시 코드를 호출하여 예상되는 부분을 확인해야합니다.

이것은 빠른 과정이 아니며 쉽지 않습니다. 수동 데이터 입력에 대한 비용 지불을 포함하여이 단계에서 예상되는 예상 비용과 다른 방식으로 데이터를 수집하는 비용을 항상 비교하십시오.