2012-07-22 3 views
2

앱 구매시 금이 갔는지 확인하는 방법이 있지만 앱 스토어에서 앱이 다운로드되었는지 확인할 수있는 방법이 있습니까?내 앱이 Installous로 다운로드되었는지 감지 할 수있는 방법이 있습니까?

누군가가 금이 갔거나 누군가 Installous에서 다운로드 한 경우 내 앱을 확인한다는 의미입니까?

+0

이 질문은 주제와 관련이 없습니다. 복제? 예. 그러나 화제 떨어져? 아니요. 유료 애플리케이션을 타겟팅하는 많은 iOS 개발자와 관련하여 유효한 질문입니다. –

답변

1

짧은 대답 : 아니오, 그렇지 않습니다. 하나는, 내가 틀릴 수도 있지만, 애플이 이것을 할 수있는 방법을 제공하지 않는다고 생각한다. 비록 그들이 했더라도, 그것은 많이 좋지 않을 수 있습니다.

VerifyAppStorePurchase이라는 일부 기능이 현재 Apple의 서버에 연결되어 있고 현재 사용자가 귀하의 앱을 합법적으로 구입했음을 확인한다고 가정합시다. 어딘가에 앱에서,이 같은 코드가 있습니다

if(!VerifyAppStorePurchase()) { 
    exit(-1); 
} 

이 팔이 같은 것으로 컴파일 (하지만이 86 조립입니다주의하지 것이다, 그래서 당신이 iOS 장비에서 볼 수있을 거라고 정확히 아니다. 동일한 개념하지만, 적용).

pushl %ebp 
    movl %esp, %ebp 
    subl $24, %esp 
    call _VerifyAppStorePurchase 
    testl %eax, %eax 
    je L7 
    # <snip app code here> 
L7: 
    movl $-1, (%esp) 
    call _exit 

나는이 체크 해제 할 수 적어도 두 가지 방법 크래커 볼 수 있습니다

  • 과거 점프로 call 명령의 처음 두 바이트 교체를 기음 두 바이트 패치 지옥
  • 일반적으로이 막을 것 두 바이트 패치를, nop 지침 - 다시 부부와 함께

서명 검증을 종료하려면 통화에 점프를 교체하지만, 탈옥 아이폰은 서명되지 않은 실행 행복하다 코드를 추가 할 수 있습니다. 따라서 추가 된 수표를 사용하지 않도록 앱을 수정하지 않아도되는 동기 부여가되는 크래커를 막을 수있는 방법은 없습니다.

+0

그런 이유로'exit'을 사용하지 않을 것입니다. 대신 앱 내부에서 SEGFAULT가 의도적으로 발생하게됩니다. –

+0

그렇게 할 수는 있지만 다른 사람이 코드를 패치하여 더 이상 그렇게하지 못하게 할 수 있습니다. 언젠가는 의도적 인 충돌을 유발할지 여부를 결정하기 위해 Apple에 전화해야합니다. 누군가 그 전화를 찾을 수 있다면, 그 전화를 걸어서 패치 할 수 있습니다. – LnxPrgr3

관련 문제