

macSubstrate는 macOS에서 프로세스 간 코드 인젝션을 위한 플랫폼 도구로, iOS의 Cydia Substrate와 유사한 기능을 제공합니다. macSubstrate를 사용하면 플러그인(.bundle 또는 .framework)을 Mac 앱(샌드박스 앱 포함)에 주입하여 런타임에 트윅할 수 있습니다.
필요한 것은 대상 앱의 플러그인을 얻거나 생성하는 것뿐입니다.
원본 대상 앱을 수정하거나 코드사인할 필요가 없습니다.
대상 앱이 업데이트된 후에도 추가 작업이 필요 없습니다.
플러그인 설치 또는 제거가 매우 쉽습니다.
대상 앱이 다시 실행될 때마다 플러그인을 자동으로 로드합니다.
GUI 앱을 제공하여 인젝션을 훨씬 쉽게 만듭니다.
시스템 무결성 보호는 모든 실행 중인 프로세스에 적용되는 새로운 보안 정책으로, 권한 있는 코드와 샌드박스 외부에서 실행되는 코드를 포함합니다. 이 정책은 디스크 및 런타임 시 구성 요소에 대한 추가 보호를 확장하여 시스템 바이너리가 시스템 설치 프로그램 및 소프트웨어 업데이트에 의해서만 수정되도록 허용합니다. 시스템 바이너리에 대한 코드 인젝션 및 런타임 첨부는 더 이상 허용되지 않습니다.
macSubstrate.app을 다운로드하여 /Applications에 넣고 실행합니다.

필요한 경우 권한을 부여합니다.
플러그인을 가져오거나 macSubstrate로 드래그하여 설치합니다.

대상 앱을 실행합니다.
3단계와 4단계는 순서를 바꿀 수 있습니다
macSubstrate로 플러그인을 설치하면 즉시 적용됩니다. 하지만 대상 앱이 다시 실행되거나 macOS가 재시작될 때마다 작동하도록 하려면 macSubstrate를 실행 상태로 유지하고 로그인 시 자동으로 실행되도록 허용해야 합니다.
더 이상 필요하지 않을 때 플러그인을 제거합니다.

macSubstrate는 .bundle 또는 .framework 플러그인을 지원하므로 유효한 .bundle 또는 .framework 파일을 생성하기만 하면 됩니다. 가장 중요한 것은 info.plist에 macSubstratePlugin 키를 딕셔너리 값과 함께 추가하는 것입니다:
| Key | Value |
|---|---|
TargetAppBundleID |
자세한 내용은 데모 플러그인 demo.bundle 및 demo.framework를 확인하세요.
macSubstrate는 또한 플러그인을 편리하게 생성할 수 있도록 Xcode 템플릿을 제공합니다:
ln -fhs ./macSubstratePluginTemplate ~/Library/Developer/Xcode/Templates/macSubstrate\ Plugin
Xcode를 실행하면 2개의 새로운 플러그인 템플릿이 표시됩니다.
또한 WeChat용 플러그인을 만들었습니다:
홍바오 메시지를 받으면 알림을 보냅니다.
사용자 정의 키워드가 포함된 메시지를 받으면 알림을 보냅니다.
메시지 회수를 방지하고 알림을 보냅니다.
자신의 플러그인을 Plugins에 풀 리퀘스트로 제출해 주세요 :)
macSubstrate는 MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.
macSubstrate는 다음 프로젝트들의 도움으로 영감을 받고 제작되었습니다:
대상 앱의 CFBundleIdentifier로, macSubstrate에 주입할 앱을 알려줍니다. |
Description | 플러그인에 대한 간략한 설명 |
AuthorName | 플러그인의 작성자 이름 |
AuthorEmail | 플러그인의 작성자 이메일 |