MIPS 바이너리 분석:바이너리 데이터를 구문 분석하기 위한 Python 라이브러리가 있나요?

StackOverflow https://stackoverflow.com/questions/45954

  •  09-06-2019
  •  | 
  •  

문제

저는 16진수 주소를 바이너리 내의 기호 함수 이름과 소스 코드 줄 번호로 확인해야 하는 유틸리티를 작업 중입니다.이 유틸리티는 x86의 Linux에서 실행되지만 분석되는 바이너리는 MIPS 기반 임베디드 시스템용입니다.MIPS 바이너리는 기호 디버깅 정보로 DWARF를 사용하는 ELF 형식입니다.

저는 현재 objdump를 포크하여 16진수 주소 목록을 전달하고 출력을 구문 분석하여 함수 이름과 소스 줄 번호를 얻을 계획입니다.MIPS 바이너리를 지원하는 objdump를 컴파일했는데 작동 중입니다.

나는 다른 프로세스를 포크하지 않고도 Python 코드에서 기본적으로 항목을 검색할 수 있는 패키지를 선호합니다.python.org에서는 libdwarf, libelf 또는 libbfd에 대한 언급이 없고 dwarfstd.org에서는 Python에 대한 언급도 찾을 수 없습니다.

어딘가에 적합한 모듈이 있나요?

도움이 되었습니까?

해결책

확인해주십시오 pyelftools - 이를 수행하기 위한 새로운 순수 Python 라이브러리입니다.

다른 팁

다음의 DWARF 라이브러리에 관심이 있을 수 있습니다. pydevtools:

>>> from bintools.dwarf import DWARF
>>> dwarf = DWARF('test/test')
>>> dwarf.get_loc_by_addr(0x8048475)
('/home/emilmont/Workspace/dbg/test/main.c', 36, 0)

당신은 주어야합니다 건설하다 시도.바이너리 데이터를 파이썬 객체로 구문 분석하는 것은 매우 유용합니다.

에 대한 예도 있습니다. ELF32 파일 형식.

나는 아무것도 모르지만 다른 모든 방법이 실패하면 사용할 수 있습니다 유형 libdwarf, libelf 또는 libbfd를 직접 사용합니다.

나는 다음을 사용하여 DWARF 파서를 개발해 왔습니다. 건설하다.현재는 상당히 거칠고 구문 분석이 느립니다.하지만 적어도 너한테는 알려줘야겠다고 생각했어.약간의 작업을 수행하면 귀하의 요구에 적합할 수 있습니다.

bitbucket에서 호스팅되는 Mercurial에 코드가 있습니다.

건설하다 매우 흥미로운 도서관이다.DWARF는 (내가 발견한 대로) 복잡한 형식이며 Construct를 한계까지 밀어붙입니다.

하치오르 바이너리 데이터를 구문 분석하기 위한 또 다른 라이브러리입니다.

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