문제

Solaris에서 실행하기 위해 C에서 컴파일되는 실행 파일이 주어지면 관련 불완전한 실행 파일을 컴파일하는 데 사용 된 컴파일러를 결정할 수 있습니까?

문자열이나 파일 명령을 사용할 때는 아무것도 볼 수 없으며 Magic에는 특정한 내용이 포함되어 있지 않은 것 같습니다.

컴파일러는 일반적으로 실행 파일 출력 파일에 지문을 넣습니까?

건배,

도움이 되었습니까?

해결책

실행 파일이 제거되지 않으면/USR/CCS/BIN MCS-P 시도는 일반적으로 컴파일러, 링커 및 사용 된 모든 헤더 파일이 표시됩니다.

다른 팁

예 Ida는 이것에 좋습니다. 그것은 불리는 기술을 사용합니다 바람둥이.

페이드 트릭을 할 것입니다. 일반적으로 훌륭하게 작동합니다. 분명히 PEID는 Windows 도구이지만 중요하지 않으며 컴파일러를 보여 주어야합니다 (때로는 특정 버전 정보조차도).

식별하려는 각 컴파일러마다 작은 테스트 앱을 구축하십시오. 그런 다음 16 진 편집자의 결과를보고 패턴을 찾으십시오. 예를 들어 정말 분명 할 수 있습니다. "풍부한"서명 Microsoft의 링커에서.

스트리핑되지 않음 :

$ cc -o hello.c

$ 파일 A.out

A.OUT : ELF 32 비트 MSB 실행 파일 SPARC32PLUS 버전 1, V8+ 필요한, 동적으로 연결되어 없음, 스트리핑되지 않음

$ 문자열 -A A.out | Grep CC

/opt/solarisstudio12.3/prod/bin/cc -o hello.c

$ dwarfdump -I A.out | grep compile_o

dw_at_sun_compile_options xa; o; r =Sun C 5.12 Sunos_SPARC 패치 148917-07 2013/10/18; 백엔드; RAW; CD;

스트리핑 :

$ Strip A.out

$ 파일 A.out

A.OUT : ELF 32 비트 MSB 실행 파일 SPARC32PLUS 버전 1, V8+ 필요한, 동적으로 연결, 스트리핑

$ 문자열 -A A.out | Grep CC

(없음)

Visual Studio와 GCC는 일반적으로 다른 스타트 업 루틴 (메인 호출)을 따릅니다. 아마 힌트 일 것입니다. 나는 다른 사람들에 대해 모른다. DLL의 경우 내 머리 꼭대기에서 비슷한 것을 생각할 수 없습니다.

컴파일러는 일반적으로 컴파일 된 파일에서 자신의 개인 "서명"을 일반 텍스트로 추가합니다. 문자열과 같은 도구를 사용하여 일반 텍스트를 끄는 것입니다.

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