궁금합니다. 아니면 나를 기술적으로 기술하는 것도 불가능합니다. iOS가 압축을 푼 코드가있는 지역으로 점프하는 것을 막을 수 있기 때문입니까?iOS 용 실행 파일 (예 : UPX)이 있습니까?
3
A
답변
1
사용할 수 없습니다. iOS에서는 실행 파일 페이지를 만들거나 파일에서 맞춤 바이너리를 실행할 수 없습니다.
0
내가 아는 한 컴파일 된 실행 바이너리는 Xcode와 도구로 서명해야하기 때문에 압축 할 수 없습니다. iOS 장치에 서명 된 코드를 배포 한 후에는 어떤 방식 으로든 수정할 수 없습니다 (OS 만 다른 방식으로 RAM에로드 할 수 있음).
리소스 파일을 압축하고 다른 방식으로로드 할 수 있습니다.
1
UPX와 같은 unpackers는 압축 해제 된 이미지를 어딘가에 배치해야합니다. 메모리에 배치되면 CPU는 이미지의 명령 실행을 시작해야합니다.이 명령은 이전에는 데이터로 처리되었습니다. IIRC, iOS에서는 데이터 실행이 허용되지 않습니다.
이것은 잘못된 가정입니다. Xcode의 빌드 프로세스는 코드 네이 팅과는 별개이므로 빌드가 끝나고 서명되기 전에 바이너리를 조작 할 수 있습니다. 프로젝트의 설정에는 "postbuild custom build script"필드가 있습니다. – kuba
예. 그러나 코드 작성 (이진 파일)은 Xcode와 도구의 일부이기도합니다. 따라서 xcode가 아닌 도구로 바이너리를 패키징하려면 iOS 하위 시스템에도 해당 도구가 필요합니다. 그래서 내 눈에는 기회가 없다. –
음, 아니. UPX 및 다른 패커는 unpacker를 바이너리 자체에 포함 시키므로 별도의 요구 사항이없는 독립 실행 형 바이너리입니다. 그러나 다른 이유로는 불가능할 수 있습니다 (다른 게시물에서 제안 된 것처럼 런타임에 실행 가능 페이지를 할당 할 수 없음). – kuba