簡體   English   中英

獲取info.plist的fileSize以防止盜版

[英]Get fileSize of info.plist to prevent piracy

我正試圖在我的應用程序中加入反盜版代碼。 由於可以使用十六進制編輯器在二進制文件中查找和替換“SignerIdentity”字符串,因此可以輕松地解決之前對此的回答(由於我的成員狀態而無法鏈接)。

相反,檢查info.plist文件的fileSize並將其與參考值進行比較聽起來更加可靠(因為在破解應用程序時,info.plist在這里和那里被修改)。 我該怎么辦? 我嘗試了以下但它記錄0。

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

您可以通過應用ROT13或類似的簡單模糊算法來阻止noobish破解者在您的代碼中找到對“SignerIdentity”的引用http://en.wikipedia.org/wiki/ROT13

應用ROT13后,“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的大小(以字節為單位)和bundle中的Info.plist可能會有所不同。 您可能想要構建一次游戲,然后查看<your app bundle.app>/Info.plist的大小,然后更新您的反盜版代碼。

我從來沒有為iPhone編程,但是你不能只是拿一個該文件的哈希值並將它與一個引用進行比較,可能會使哈希值變得干凈,以防止有人只是將引用哈希值更改為新的哈希值?

該代碼還有很多贈品:

字符串Info.plist很容易找到。 NSFileSize也很可疑......

正如在這里所說的那樣,通過install0us安裝一些最新破解的應用程序, 確定iPhone是否已經被Jail破壞了,並沒有修改它們的info.plist。 (至少info.plist不包含任何signeridentity鍵)。 在這種情況下我們怎么能檢測到裂縫?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM