2016-07-05 4 views
0

최근에 ARM 기반 마이크로 컨트롤러 용으로 실행 가능한 ELF 실행 파일을 작성했습니다. 내가 arm-none-eabi-objdump으로 모든 것을 투기하여 검사하려고 할 때 놀랍게도, 내가 그것을 독점 툴체인으로 컴파일 (및 연결)되어있어 배운, 바이너리를 제공하는 사람을 요청하면 오류독점 ARM ELF 바이너리

File format not recognized

에 실패 유지 , 나는 그들에게 여분의 홍보를 피하는 것으로 언급하지 않을 것이다. 그 결과 바이너리를 분해하기 위해 독점 툴 체인에서 유틸리티가 필요하다고 들었습니다. 이제 이것이 나를 궁금하게 만든다. GNU의 obj 덤프가 ELF 파일을 구문 분석하지 못하는 이유는 무엇입니까? 필자가 알고있는 ELF는 표준 무료 파일 형식입니다. 물론 명령 세트가 인식되지 않더라도 심볼 및 심볼의 바이너리 디스 어셈블리는 물론 섹션 및 심볼 테이블을 확보 할 수 있어야합니다. 아마도 정보가 암호화되었을 것입니까?

답변

0

ELF 헤더가 어떻게 든 손상되어 안티 디버그 기술을 적용합니다. crackme 도전으로부터 많은 것을 배울 수 있습니다. Jonathan Salwan의 x86 crackme도 마찬가지입니다. 그의 블로그 기사 "이진 분석, 가능하다면 계산해라."에서 더 많은 내용을 읽을 수있다. : http://shell-storm.org/blog/A-binary-analysis-count-me-if-you-can/

+1

또한 'objdump'대신 'readelf'로 시작해야한다. –

+0

위대한 블로그, 고마워. 당신의 추측에 따라 바이너리를 보내 주신 분에게 분해 해달라고 요청했습니다. 그들이 같은 종류의 오류가 발생합니다. 조사가 끝나면 바이너리가 손상된 것을 발견했습니다. 나는 GNU Binutils를 통과 할 때 예상대로 작동하는 새로운 것을 받았다. 결국 의도적 인 것이 아니라 암호화가 없습니다. 그래도 링크 된 기사는 정말 흥미 롭습니다. – goblin

+0

@EmployedRussian readelf은 참으로 올바르게 ELF 헤더를 처리 않지만, 그것은 말한다 : 'readelf : 오류 : 없음이 섹션 headers'의 0x2800 바이트 읽어 'readelf : 오류 : 섹션 헤더의 0x3e80000 바이트에서 읽을 수 없습니다 ' 'readelf : 오류 : 섹션 헤더를 사용할 수 없습니다! ' 'readelf : 오류 : 0x800000 바이트의 프로그램 헤더를 읽을 수 없습니다 ' . 그렇지 않으면 ELF 클래스, 엔디 언, ABI, 플래그, 테이블 크기 등을 올바르게 인식합니다. – goblin

관련 문제