2009-05-24 4 views
8

내 앱에 불법 복제 방지 코드를 넣으려고합니다. "SignerIdentity"문자열을 검색하고 16 진수 편집기를 사용하여 이진 파일에서 바꿀 수 있기 때문에 이에 대한 이전 답변 (내 회원 상태 때문에 연결할 수 없음 - 짜증)은 쉽게 반박 할 수 있습니다.불법 복제를 막기 위해 info.plist의 파일 크기를 확인하십시오.

info.plist 파일의 fileSize를 확인하고 참조 값과 비교하는 것이 더 확실합니다 (app.clist가 앱을 크래킹 할 때 여기저기서 수정되기 때문에). 내가 어떻게 그럴 수 있니? 나는 다음을 시도했지만 0

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *mainDictionary = [bundle infoDictionary]; 
NSLog(@"%d", [mainDictionary fileSize]); 

답변

7

당신은 ROT13을 적용한 후 ROT13 또는 유사한 간단한 어둡게하는 알고리즘 http://en.wikipedia.org/wiki/ROT13

을 적용하여 코드에서 참조를 "SignerIdentity"를 찾는에서 noobish 크래커를 방지 할 수 기록 , "SignerIdentity"는 "FvtareVqragvgl"이됩니다.

어쨌든, 질문에 대한 대답은 (당신이의 Info.plist 파일의 크기를 얻을 방법) :

NSBundle *bundle = [NSBundle mainBundle]; 
NSString* bundlePath = [bundle bundlePath]; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 

NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath ]; 

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path 
                  error:NULL]; 

if (fileAttributes != nil) { 
    NSNumber *fileSize; 

    if (fileSize = [fileAttributes objectForKey:NSFileSize]) { 
     NSLog(@"File size: %qi\n", [fileSize unsignedLongLongValue]); 
    }   
} 

또한 명심 Xcode 프로젝트에서 Info.plist의 크기 (바이트) 디렉토리와 Info.plist 번들은 다를 수 있습니다. 게임을 한 번 빌드 한 다음 <your app bundle.app>/Info.plist 크기를보고 불법 복제 방지 코드를 업데이트하려고합니다.

+0

해적은 "FvtareVqragvgl"문자열을 다른 것으로 변경할 수 있으며 info.plist의 다른 키를 확인합니다. 아마도 null이됩니다. filesize 속성은 int와 비교되므로 바이너리에서 쉽게 찾을 수있는 방법이 없습니다. – samvermette

+0

답변 해 주셔서 감사합니다! – samvermette

+0

update : now // \t NSDictionary * fileAttributes = [fileManager fileAttributesAtPath : pathP traverseLink : YES]; 더 이상 사용되지 않습니다 ... 사용 : -> ... \t NSDictionary * fileAttributes = [fileManager attributesOfItemAtPath : pathP 오류 : NULL]; ... 대신 – meronix

5

iPhone 용으로 프로그램 한 적이 없지만 해당 파일의 해시를 가져 와서 참조와 비교해 볼 수 있습니다. 해시 값을 소금물로 바꿈으로써 참조 해시를 새로운 것으로 변경하는 것을 방지 할 수 있습니까?

2

코드는 여전히 가지고 많은 경품 :

문자열의 Info.plist 쉽게 찾을 수 있습니다. NSFileSize는 또한 매우 의심 스럽습니다. ...

2

여기에서 말한 것처럼 Determining if an iPhone is Jail broken Programmatically install0us를 통해 설치된 가장 최근에 깨진 응용 프로그램 중 일부는 info.plist가 수정되지 않은 것으로 보입니다. (최소한 info.plist에는 서명자 키가 없습니다). 그런 경우 어떻게 우리가 균열을 감지 할 수 있습니까?

+0

2 개의 info.plist 파일 크기를 비교하려고 시도 했습니까? – samvermette

+0

아니요, 아이폰 사용자가 appstore에서 일단 다운로드 한 info.plist의 크기를 전제로 할 수 있습니까? iTunes Store를 통해 appStore에 업로드 할 때와 같은 것이겠습니까? 이 파일이 때로는 바이너리로서 xml에있는 경우도 있지만이 파일에 대한 전체 흐름을 명확하게 보여주지는 못합니다./ – yonel

+0

filesize는 배포 빌드의 .app 패키지에있는 파일입니다. 앱을 제출 한 후 애플이 info.plist 파일에서 뭔가 바뀌는 지 모르겠습니다 ... – samvermette

관련 문제