2013-03-19 6 views
2

함수의 매개 변수 값을 변경하여 견고성 테스트를 수행하기 위해 elf 파일에서 함수 이름과 해당 매개 변수와 같은 정보를 추출하려고하는데 Windows 환경에서 작업하고 있습니다. 내가 계측기에 넣으려는 elf 파일은 powerPC 아키텍처 용입니다. MS Visual Studio에서 빌드 할 수있는 opensource 도구 DynInst http://www.dyninst.org/을 사용해 보았지만, cl 컴파일러 (exe 및 dll 형식)로 컴파일 된 바이너리 파일은 다음과 같은 질문을 가지고 있습니다. 포즈 :Windows 플랫폼에서 PowerPC 용 elf 파일 추출 및 계측

1) DynInst를 사용하여 이진수를 계측 할 수 있도록 Microsoft Visual Studio C++ 컴파일러를 사용하여 elf 파일을 생성 할 수 있습니까?

2) Windows 플랫폼에서 elf 파일을 추출하고 처리하는 데 사용할 수있는 다른 방법이나 도구가 있습니까?

objdump, readelf, nm 등은 elf를 추출하기위한 기능을 제공하지만 필자도 필자에게 필 요하다고 생각합니다. 나는 나의 필요를 충족시키기 위해이 유틸리티를 조정하는 방법을 모른다. 어떤 제안이라도 큰 도움이 될 것이다! ELF 그냥 파일 형식 :

/감사

답변

0

1)이 가능 ELF 파일을

물론을 생산하는 마이크로 소프트 비주얼 스튜디오의 C++ 컴파일러를 사용하는 것입니다. PowerPC/AIX에서 .zip 파일을 작성하고 SPARC/Solaris 및 x86/Windows에서 읽을 수있는 것처럼 모든 OS에서 ELF 파일을 작성할 수 있습니다.

그래서 DynInst를 사용하여 바이너리를 계측 할 수 있습니까?

DynInst과 같은 파일을 사용할 수 있는지 여부는 알 수 없습니다.

Windows 플랫폼에서 elf 파일을 추출하고 처리하는 데 사용할 수있는 다른 방법이나 도구가 있습니까?

readelf을 포함하는 GNU binutils 패키지를 컴파일 할 수 있습니다. 이 파일을 사용하여 ELF 파일에서 모든 종류의 정보를 추출 할 수 있습니다.

libelf 라이브러리가있어서 ELF 파일을 읽을 수 있습니다. libelf이 너무 많은 문제없이 Windows에 구축 될 수 있는지 여부는 알 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. readelf의 다양한 옵션을 보려고했지만 정확히 어떻게 함수 매개 변수의 주소와 유형을 얻는지를 파악할 수 없었습니다. 예제가 도움이 될 것입니다. – Nithi89

0

Visual Studio 컴파일러를 사용하여 ELF 바이너리를 직접 생성 할 수 없습니다. Windows 바이너리는 PE 형식이며 ELF와 호환되지 않습니다. 그것은 입니다. ELF 출력은 많은 작업과 함께 어셈블리 언어로 컴파일하고 결과 파일을 통해 PE에서 ELF로 변환하고 ELF 인식 어셈블러를 사용하여 yasm, nasm)을 사용하여 결과 파일을 어셈블합니다.

또한 Windows가 PowerPC 아키텍처를 지원하지 않기 때문에 Windows에서 PowerPC 바이너리를 실행할 수 없습니다.

DynaInst가 컴파일 코드에 후크를 삽입하는 경우 크로스 컴파일러를 사용하여 DynaInst 라이브러리 후크와 계측 할 바이너리를 모두 컴파일해야합니다.

gprof과 같이 Windows에서도 작동해야하는 다른 도구를 사용할 수 있습니다.이 도구는 함수 호출을 계측하는 데 사용되는 특정 기능 만 사용할 수 있어야합니다.