
특정 응용 프로그램이 어떻게 구축되고 어떤 언어/프레임워크를 사용하는지 더 잘 이해하기 위해 내 Macbook에서 다양한 응용 프로그램을 조사하고 해당 소스 코드를 확인하려고 합니다. 아마도 제가 혼란스러워하는 부분은 애플리케이션 인프라에 대한 심층적인 이해가 부족하기 때문일 것입니다.
그러나 내 컴퓨터에 여러 개의 앱을 가져와 해당 콘텐츠에 CD를 넣고 가능한 모든 디렉터리를 살펴봤지만 실제 소스 코드를 찾을 수 없는 것 같습니다. 내가 찾은 것은 CodeSigniture 파일, CodeResource 파일 및 .plist 파일과 같은 일부 코드뿐입니다. .js/.py/.c/.cpp 파일을 어떻게 찾나요?
보안/지적 재산을 유지하기 위해 이러한 파일을 어떻게든 암호화하는지 궁금합니다. 하지만 그렇다면 이러한 응용 프로그램을 실행하기 위해 내 컴퓨터는 무엇을 읽고 있습니까?
어떤 통찰력이라도 대단히 감사하겠습니다!
답변1
프로그램은 해석될 수 있습니다(명령이 필요할 때마다 소스 코드가 구문 분석되어 "즉시" 시스템 수준 명령으로 변환됨) 또는 컴파일(소스 코드가 구문 분석되고 시스템 수준 명령으로 한 번만 변환됨) 나중에 사용하고 재사용할 수 있도록 저장된 레벨 지침) 응용 프로그램이 일반적으로 컴파일되는 언어(C, C++, C#, Pascal 등)로 작성된 경우 소스 코드를 볼 수 없습니다. 프로그램을 실행하기 위해 컴퓨터에 설치할 필요는 없으며 시스템 수준 지침(Windows에서는 EXE 파일이라고 함)만 설치하면 됩니다.
ECMAscript, PowerShell, Perl, Python, Ruby 등과 같은 다른 언어도 해석되며, 이에 대한 경우 일반적으로 설치된 파일을 보면 소스 코드를 찾을 수 있습니다.
일부 해석된 언어의 일부 구현에서는 소스 코드가 '인코딩된' 형식(예: Base64)으로 변환되고 사용자 정의된 해석기에 추가되는 "래퍼"도 허용합니다.외모컴파일된 프로그램(예: Windows의 EXE)처럼 사용자에게 표시됩니다. 귀하의 응용 프로그램이 이들 중 하나로 만들어진 경우 소스를 쉽게 찾을 수 없습니다.
답변2
앱 내부에는 소스 코드가 없습니다.
그들은컴파일된소스 코드에서 실제 실행 파일로 - TheApplication.app/Contents/MacOS/TheApplication 내부를 보면 컴파일된 앱 자체라는 것을 알 수 있습니다. 거기에서 볼 수 있는 거의 모든 것은 앱이 의존하는 라이브러리이거나 언어 변경 등과 같은 사항을 관리하는 간단한 일반 텍스트 xml 파일입니다.
또한 App Store 등의 인정된 개발자가 제공한 앱을 망친 경우 해당 앱이 더 이상 코드 서명과 일치하지 않는 것으로 표시될 수 있으므로 해당 앱을 휴지통에 넣고 원본을 다시 다운로드해야 합니다. macOS는 변조되는 앱에 대해 점점 더 엄격해지고 있습니다.
Catalina는 이에 대해 훨씬 더 엄격할 것이며 코드 서명뿐만 아니라공증, 제3자가 앱을 수정하는 것은 거의 불가능합니다.
답변3
바이너리/실행 파일을 리버스 엔지니어링하려는 경우 다음을 사용할 수 있습니다.기드라. YouTube에는 독립 개발자가 시작하는 데 도움이 되는 몇 가지 튜토리얼이 있습니다(나는 이것이 접근하기 쉽다고 생각했다.).
다른 답변에서 언급했듯이 컴파일된 언어(예: *.cpp
, *.c
, *.java
)에는 파일을 깔끔하게 사용할 수 없으므로 파고들게 될 것입니다.