불법 복제를 방지하기 위해 info.plist의 파일 크기를 얻으십시오
-
05-09-2019 - |
문제
내 앱에 비화 방지 코드를 넣으려고합니다. "서명"문자열을 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에는 서명 키가 포함되어 있지 않음). 그러한 경우에 균열을 어떻게 감지 할 수 있습니까?