2014-12-27 2 views

답변

1

Tweak은 dylib이며 프로세스에로드됩니다. 이 프로세스에는 인 타이틀먼트가있을 수 있으며 해당 인 타이틀먼트는 비틀기에 사용됩니다. 그게 전부 야. 비틀기에는 자체 권한이 없습니다.

질문 사항. 전에 내가 말했던 것 때문에 당신은 단지 비틀기를 제한 할 수 없다 - 당신의 제한은 조정되는 전체 프로세스에 적용될 것이다. 그것에 대해 아무 것도 할 수 없습니다. 이것이 비틀기가 작동하는 방식입니다. 프로세스 주소 공간에 동적으로로드되는 dylib입니다. 그 후 조정은 프로세스의 일부가됩니다. 따라서 모든 조정에는 응용 프로그램 코드와 기타 dylib/프레임 워크 응용 프로그램이 연결되어있는 모든 프로세스에 제한이 적용됩니다.

사용자가 조정을 제한하는 데 도움이되는 응용 프로그램을 개발하려는 경우 사용자가 그러한 일을 할 수 있다고 생각하지 않습니다. 무엇을 할 수 있는지는 어떤 애플리케이션이 조정되는지, 어떤 자격이 있는지, 어떤 프레임 워크와 dylib가 비틀기 (주로 비공개)에 사용되는지 분석하는 것입니다. 그리고 그 사용자로부터 그 비틀기를 켜거나 끌 수 있습니다. 가져 오기 섹션과 문자열 리터럴을 분석하여 심지어 사용되는 API를 정확하게 결정할 수도 있습니다.

업데이트

기본 프로세스가 프로세스 공간에로드하기 전에 비틀기와 통신하는 방법을 당신이 나에게 설명 할 수 있을까요?

아니요. 주입하기 전에 tweak은 어떤 바이너리와도 연결되지 않은 별도의 dylib입니다. CydiaSubstrate가 모든 주사를합니다. CydiaSubstrate의 주요 부분은 특수 로더 dylib입니다. 그것은 다른 모든 프로세스를 시작하는 iOS의 첫 번째 프로세스 인 프로세스에 대해 장치 시작시 launchd 프로세스에 동적으로 연결됩니다. 새 프로세스가 생성되면 CydiaSubstrate 로더 dylib는 모든 조정 필터를 검사하여 프로세스에 주입해야하는 필터를 확인하고 주입합니다. 그 후 팅겨보고 프로세스 주소 공간 (프로세스의 일부가된다)에로드되고 꼬집음의 생성자가 호출됩니다. 일반적으로 모든 훅이 설정됩니다.

어떻게 수행 할 수 있는지 설명해 주시겠습니까?

문자열 검색에 사용하려는 objc 클래스 이름, C/C++ 함수, 프레임 워크 및 dylib의 배열이 있다고 가정합니다. 쉬운 해결책이 있습니다. 비틀기의 파일을 열어서 일치하는 항목을 검색하면됩니다. 비틀기는 대개 너무 크지 않으므로 시간이 많이 걸리지 않아야합니다. 그리고 더 어려운 해결책이 있습니다. dyld 또는 다른 API를 사용하여 mach-o 섹션을 구문 분석하여 가져온 기호 및 문자열 리터럴을 찾은 다음 일치 항목을 검색하십시오.

+0

고마움, 답장을 읽어주세요 문자 제한 (: – user4397138

0

사용자의 질문에 대한 대답이 맞는지 잘 모르겠지만, 조정할 경우 XXX_CODESIGN_FLAGS = -Sentitlements.xml을 Makefile에 추가하여 에 설명 된 자격을 추가 할 수 있습니다.

+0

미리 작성된 인 타이틀먼트 집합을 업데이트하는 스크립트를 구현할 수 있습니까? 자동으로 (새로운 비틀기가 설치되었을 때) 또는 수동으로 터미널을 통해 말하십시오; 꾸러미를 선택하고 'xx said'규정을 포함하도록 Makefile을 패치함으로써. – user4397138

관련 문제