iPhone / iPod가 다음과 같은지 (프로그래밍 방식으로) 어떻게 결정합니까?
- 감옥 파손
- 크랙 된 소프트웨어 사본 실행
Pinch Media 는 전화기가 탈옥되었는지 또는 실행중인 소프트웨어가 깨 졌는지 감지 할 수 있습니다.이 방법을 아는 사람이 있습니까? 도서관이 있습니까?
iPhone / iPod가 다음과 같은지 (프로그래밍 방식으로) 어떻게 결정합니까?
Pinch Media 는 전화기가 탈옥되었는지 또는 실행중인 소프트웨어가 깨 졌는지 감지 할 수 있습니다.이 방법을 아는 사람이 있습니까? 도서관이 있습니까?
답변:
다음 은 앱이 크랙되었는지 감지하는 방법 중 하나입니다.
요컨대 : 크래킹은 일반적으로 Info.plist를 변경해야합니다. 액세스 할 수있는 일반 파일이기 때문에 이러한 변경 사항을 확인하는 것은 매우 쉽습니다.
탈옥 된 전화를 감지하는 것은 /private/var/lib/apt/
폴더 가 있는지 확인하는 것만 큼 쉽습니다 . 설치자 전용 사용자는 감지하지 못하지만 현재 대부분은 Cydia, Icy 또는 RockYourPhone (모두 apt 사용)을 설치했습니다.
불법 복제 된 사용자를 감지하는 가장 쉬운 방법은 SignerIdentity
앱의 .NET Core에 키 가 있는지 확인하는 것 Info.plist
입니다. 고급 크래커는 표준 [[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]
검사를 쉽게 찾을 수 있으므로 사용 가능한 Objective C 런타임을 사용하여 이러한 호출을 모호하게 #import <objc/runtime.h>
하거나 대체 동등 항목을 사용 하는 것이 가장 좋습니다 .
zakovyrya의 답변을 확장하려면 다음 코드를 사용할 수 있습니다.
if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
// Jailbroken
}
그러나 앱을 탈옥 한 사람은 프로그램을 16 진 편집 할 수 있으므로 @ "siNGeridentity"또는 nil을 반환하는 다른 것을 읽도록 문자열 @ "SignerIdentity"를 편집하여 통과 할 수 있습니다.
따라서 이것을 사용하는 경우 (또는 http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html 의 다른 제안 ) :
위의 yonel과 Benjie의 의견을 확장하려면 :
1) 위에 yonel에 의해 링크 된 암호화 검사에 의존하는 Landon Fuller의 방법 은 자동화 된 크래킹 도구에 의해 여전히 패배하지 않는 유일한 방법 인 것 같습니다. 나는 Apple이 곧 LC_ENCRYPTION_INFO 헤더의 상태를 변경하는 것에 대해 지나치게 걱정하지 않을 것입니다. 탈옥 한 아이폰에 예측할 수없는 영향을 미치는 것 같습니다 (사용자가 사본을 구입 한 경우에도 ...)
어쨌든 나는 그 코드를 기반으로 사용자에 대해 어떤 성급한 조치를 취하지 않을 것입니다.
2) Benjie의 의견을 보완하기 위해 re. 난독 화 (해적판 방지 코드의 문자열 값을 다룰 때 절대적으로 필요함) : 비슷하지만 더 쉬운 방법은 찾고있는 값 의 솔트 된 해시 버전 을 항상 확인하는 것 입니다. 예를 들어 (그 검사가 더 이상 효율적이지 않더라도) 적절한 상수에 대해 각 MainBundle의 키 이름을 md5 (keyName + "some secret salt")로 검사합니다 ... 오히려 기본적이지만, 끈.
물론이를 위해서는 비교하려는 값을 간접적으로 쿼리 할 수 있어야합니다 (예 : 값을 포함하는 배열을 통해 이동). 그러나 이것은 대부분의 경우입니다.