programing

프로그래밍 방식으로 iPhone의 탈옥 여부 확인

lastcode 2023. 10. 9. 23:18
반응형

프로그래밍 방식으로 iPhone의 탈옥 여부 확인

iPhone/iPod가 다음과 같은지 (프로그래밍 방식으로) 판단하는 방법:

  1. 탈옥
  2. 소프트웨어의 손상된 복사본 실행

핀치 미디어는 전화기가 고장 났거나 실행 중인 소프트웨어에 금이 갔는지 감지할 수 있습니다. 어떻게 하는지 아는 사람이 있습니까?도서관이 있습니까?

앱에 금이 갔는지 확인하는 방법 중 하나입니다.

간단히 말해, 균열이 발생하려면 일반적으로 Info.plist를 변경해야 합니다.액세스할 수 있는 일반 파일이므로 변경 내용을 쉽게 확인할 수 있습니다.

감옥에서 부서진 전화기를 발견하는 것은 그 존재를 확인하는 것만큼 쉽습니다./private/var/lib/apt/폴더.Installer 전용 사용자를 검색할 수는 없지만, 지금까지 대부분의 사용자가 Cydia, Ice 또는 RockYourPhone을 설치했습니다(모두 apt를 사용함).

불법 복제된 사용자를 탐지하기 위해 가장 쉬운 방법은 A의 존재 여부를 확인하는 것입니다.SignerIdentity앱의 키를 입력Info.plist. 고급 크래커는 표준을 쉽게 찾을 수 있기 때문에[[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]체크, 다음을 통해 사용 가능한 Objective C 런타임을 사용하여 이러한 호출을 차단하는 것이 가장 좋습니다.#import <objc/runtime.h>또는 대체 등가물을 사용합니다.

자코비랴의 답변을 확대하기 위해 다음 코드를 사용할 수 있습니다.

if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
  // Jailbroken
}

그러나, 당신의 앱을 부수는 사람은 당신의 프로그램을 삭제할 수 있고, 따라서 그들은 @"SignerIdentity" 문자열을 @"siINGERIdentity" 또는 0으로 반환되는 다른 것을 읽도록 편집할 수 있고, 따라서 통과할 수 있습니다.

따라서 이를 사용하거나 http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html) 의 다른 제안을 사용하는 경우:

  • 영원히 효과가 있을 거라 기대하지 마세요.
  • 이 정보를 사용하여 앱을 깨거나 숨기지 마십시오(그렇지 않으면 앱이 파산한 것을 알 수 없게 됩니다).
  • 코드의 이 부분을 혼동하는 것이 현명할 것입니다.예를 들어, 코드에 base64 인코딩된 역 문자열을 넣은 다음 프로세스를 반전시켜 앱에서 디코딩할 수 있습니다.
  • 코드의 나중에 유효성을 확인합니다(예: SignerIdentity라고 했을 때 실제로 SignerIdentity라고 했습니까? siNERIdentity라고 했습니까?).
  • 스택 오버플로우와 같은 공용 웹 사이트의 사용자에게 사용 방법을 알려주지 마십시오.
  • 참고로, 이 책은 가이드일 뿐이며, (크래커에도 끄떡없습니다!) 큰 힘을 가진 사람은 큰 책임을 져야 합니다.

어셈블리 코드의 블록은 적절한 호출 규약을 준수할 수 있으므로 원래 C로 작성된 다른 기계 코드 블록이 호출할 수 있는 기계 코드 블록을 생성합니다.그 반대도 물론 가능합니다.

플랫폼, 컴파일러, 링커에 따라 호출 규약, 어셈블리 프로세스, 링크 프로세스(어셈블리 생성 객체 파일과 C 생성 객체 파일을 연결하는 것)의 세부 정보가 크게 다를 수 있습니다.당신이 선택한 플랫폼을 위한 좋은 조립 튜토리얼이 아마도 그러한 세부 사항을 다룰 것입니다.

인터페이스 어셈블리와 C 코드를 특별히 다루는 x86 중심의 PC 어셈블리 튜토리얼이 마음에 듭니다.

C 코드가 gcc에 의해 컴파일될 때, 그것은 먼저 어셈블러 명령어로 컴파일되고, 그리고 나서 다시 바이너리, 머신 실행 파일로 컴파일됩니다.다음을 지정하면 생성된 어셈블러 명령을 볼 수 있습니다.

, 와 같이

.
반응형