Mac의 /usr/bin 파일은 어떤 언어로 작성됩니까? 코드를 읽는 방법은 무엇입니까?

Mac의 /usr/bin 파일은 어떤 언어로 작성됩니까? 코드를 읽는 방법은 무엇입니까?

Mac의 경우 /usr/bin/ 아래에 csrutil.txt와 같은 파일이 있습니다. 이것들은 어떤 언어로 쓰여졌나요? 코드를 어떻게 읽나요? 부분적으로 읽을 수 있는 텍스트만 횡설수설하게 되었기 때문에 이것을 쉘 스크립트로 변환하는 것은 성공하지 못했습니다. 접미사가 없고 무엇을 해야할지 모르기 때문에 이 파일을 읽는 방법을 아는 사람이 있습니까?

답변1

Gerard H. Pille이 말했듯이 이러한 파일은 운영 체제와 프로세서에서 직접 읽을 수 있도록 설계된 실행 파일입니다. 기술적으로 파일 형식의 이름은 다음과 같습니다.Mach-O 또는 Mach 개체 파일 형식.

strings명령을 사용하면 실행 파일 내에서 압축되지 않은 텍스트 문자열을 볼 수 있습니다. 이는 알 수 없는 실행 파일을 식별해야 하는 경우 유용합니다. 예를 들어:strings /usr/bin/csrutil | less

기술적으로 기계어 코드를 사람이 더 읽기 쉬운 형식으로 다시 변환하는 것이 가능합니다. 이것은 ... 불리운다해체하다실행 파일이면 결과는 다음과 같습니다.어셈블리어각 프로세서 아키텍처별: 예를 들어 64비트 Intel x86 프로세서를 기반으로 하는 최신 Mac의 어셈블리 언어는 Motorola PowerPC 프로세서를 사용하는 이전 PowerMac의 어셈블리 언어와 다릅니다.

당신은 또한 사용할 수 있습니다디버거유틸리티, 가장 잘 사용되는디버그 기호 파일실행 중인 실행 파일의 내부 작동을 모니터링하려면 디버깅 중인 실행 파일을 일치시키세요. 또는 프로그램 충돌을 일으키는 문제가 발생하는 경우 다음을 활성화할 수 있습니다.코어 덤프그런 다음 디버거를 사용하여 프로그램 충돌로 인해 생성된 코어 덤프 파일을 분석합니다.

어셈블리 언어를 읽는 것은 쉘 스크립트를 읽는 것과 완전히 다릅니다. 이를 위해서는 프로세서 및 운영 체제의 기술적 세부 사항에 대한 훨씬 더 깊은 이해가 필요합니다. 일부 텍스트 출력과 같은 간단한 작업에도 표시할 텍스트의 메모리 주소를 찾은 다음 실제로 작업을 수행하는 적절한 운영 체제 함수를 호출하려면 많은 어셈블리 언어 명령이 필요합니다.

그러나 법적 경고가 있습니다. 현지 법률에 따라 운영 체제 실행 파일을 분해하지 않기로 동의할 수도 있습니다(운영 체제를 설치할 때 클릭해야 하는 법적 용어인 경우). 저작권법은 확실히 다음의 사용을 제한합니다. 그러한 분해를 통해 얻은 정보.

macOS 운영 체제는 독점적이고 오픈 소스가 아니기 때문에 출시된 버전을 만든 실제 소스 코드를 볼 기회를 얻으려면 Apple에 고용되어야 합니다(또는 적어도 합당한 이유가 있고 적절한 NDA에 서명해야 함). 맥 OS.

답변2

이 내용은 귀하가 아니라 Mac에서 읽어야 합니다. 그 안에 스크립트가 있을 수 있지만 대부분은 예를 들어 "머신 코드"와 같은 실행 파일입니다. C로 작성한 후 컴파일하고 링크합니다. "파일" 프로그램을 사용하면 내용을 확인할 수 있습니다. 얻은 답변에 "텍스트"가 포함되어 있으면 살펴볼 수 있으며, 그렇지 않으면 쓸모가 없습니다.

관련 정보