프로그래밍 방식으로 iPhone이 감옥에 갇혔는지 확인
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 의 다른 제안 ) :
- 그것이 영원히 작동 할 것이라고 기대하지 마십시오
- 이 정보를 사용하여 어떤 식 으로든 앱을 중단 / 방해하지 마십시오.
- 이 코드를 난독 화하는 것이 현명 할 것입니다. 예를 들어 base64로 인코딩 된 역방향 문자열을 코드에 넣은 다음 프로세스를 역순으로 앱에서 디코딩 할 수 있습니다.
- 나중에 코드에서 유효성 검사를 확인합니다 (예 : SignerIdentity라고 말했을 때 실제로 SignerIdentity 또는 siNGeridentity라고 표시 되었습니까?).
- stackoverflow와 같은 공개 웹 사이트의 사람들에게 당신이 어떻게하는지 말하지 마십시오.
- 그것은 단지 가이드 일 뿐이며 절대적인 (또는 크래커에 대한 증거도 아닙니다!)-큰 힘에는 큰 책임이 따릅니다.
위의 yonel과 Benjie의 의견을 확장하려면 :
1) 위에 yonel에 의해 링크 된 암호화 검사에 의존하는 Landon Fuller의 방법 은 자동화 된 크래킹 도구에 의해 여전히 패배하지 않는 유일한 방법 인 것 같습니다. 나는 Apple이 곧 LC_ENCRYPTION_INFO 헤더의 상태를 변경하는 것에 대해 지나치게 걱정하지 않을 것입니다. 탈옥 한 아이폰에 예측할 수없는 영향을 미치는 것 같습니다 (사용자가 사본을 구입 한 경우에도 ...)
어쨌든 나는 그 코드를 기반으로 사용자에 대해 어떤 성급한 조치를 취하지 않을 것입니다.
2) Benjie의 의견을 보완하기 위해 re. 난독 화 (해적판 방지 코드의 문자열 값을 다룰 때 절대적으로 필요함) : 비슷하지만 더 쉬운 방법은 찾고있는 값 의 솔트 된 해시 버전 을 항상 확인하는 것 입니다. 예를 들어 (그 검사가 더 이상 효율적이지 않더라도) 적절한 상수에 대해 각 MainBundle의 키 이름을 md5 (keyName + "some secret salt")로 검사합니다 ... 오히려 기본적이지만, 끈.
물론이를 위해서는 비교하려는 값을 간접적으로 쿼리 할 수 있어야합니다 (예 :이를 포함하는 배열을 통해 이동). 그러나 이것은 대부분의 경우입니다.
참고 URL : https://stackoverflow.com/questions/1140856/determining-if-an-iphone-is-jail-broken-programmatically
'IT TIP' 카테고리의 다른 글
nose vs pytest-내가 선택해야하는 (주관적) 차이점은 무엇입니까? (0) | 2020.10.12 |
---|---|
Visual Studio 2012 Express Desktop의 제한 사항 (0) | 2020.10.12 |
C ++ 예외 처리 런타임은 어떻게 구현됩니까? (0) | 2020.10.12 |
C # 애플리케이션에서 리소스와 임베디드 리소스의 차이점은 무엇입니까? (0) | 2020.10.12 |
Python 다중 처리를 사용하여 난처한 병렬 문제 해결 (0) | 2020.10.12 |