프로그램을 컴파일하는 데 사용 된 컴파일러를 찾을 수 있습니까?
-
03-07-2019 - |
문제
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의 경우 내 머리 꼭대기에서 비슷한 것을 생각할 수 없습니다.
컴파일러는 일반적으로 컴파일 된 파일에서 자신의 개인 "서명"을 일반 텍스트로 추가합니다. 문자열과 같은 도구를 사용하여 일반 텍스트를 끄는 것입니다.