문제

내 앱에 비화 방지 코드를 넣으려고합니다. "서명"문자열을 Hex 편집기를 사용하여 바이너리에서 찾아 교체 할 수 있기 때문에 이것에 대한 이전 답변 (내 멤버 상태 - 짜증으로 연결할 수없는)은 쉽게 반대 할 수 있습니다.

대신 info.plist 파일의 파일 크기를 확인하고 참조 값과 비교하는 것이 더 견고하게 들립니다 (info.plist가 앱을 크랙 할 때 여기저기서 수정되기 때문에). 어떻게할까요? 다음을 시도했지만 0을 기록합니다.

NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *mainDictionary = [bundle infoDictionary];
NSLog(@"%d", [mainDictionary fileSize]);
도움이 되었습니까?

해결책

ROT13 또는 유사한 간단한 모호한 알고리즘을 적용하여 코드에서 "서명"에 대한 언급을 찾는 것을 방지 할 수 있습니다.http://en.wikipedia.org/wiki/rot13

ROT13을 적용한 후 "SignerIdentity"는 "FVTAREVQRAGVGL"이됩니다.

어쨌든 질문에 대한 답변 (정보 크기를 얻는 방법) :

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]);
    }           
}

또한의 크기 (바이트) Info.plist Xcode 프로젝트 디렉토리 및 Info.plist 번들 내부는 다를 수 있습니다. 아마 게임을 한 번 구축하고 싶을 때 <your app bundle.app>/Info.plist 그런 다음 항 분리 코드를 업데이트하십시오.

다른 팁

나는 iPhone을 위해 프로그래밍 한 적이 없지만 그 파일의 해시를 가져 와서 참조와 비교하여 해시 값을 소금에 절인 사람이 참조 해시를 새 사람으로 바꾸지 못하게 할 수 없습니까?

그 코드는 여전히 많은 경품이 있습니다.

문자열 info.plist는 쉽게 찾을 수 있습니다. nsfilesize도 매우 의심 스럽다 ....

여기서 말했듯이 iPhone이 교도소가 프로그래밍 방식으로 부러 졌는지 여부를 결정합니다 install0us를 통해 설치된 가장 최근의 금이 간 앱 중 일부는 정보가 없음으로 보입니다 .Plist 수정. (적어도 info.plist에는 서명 키가 포함되어 있지 않음). 그러한 경우에 균열을 어떻게 감지 할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top