作者:creantan 小葡萄爸爸
QQ:865130685
破解TexturePacker加密資源的方式有好多種。。最多的是hook uncompress然后獲取到內(nèi)容,加入ccz的文件頭寫入文件。
例如:
http://blog.csdn.net/ynnmnm/article/details/38392795
http://bbs.pediy.com/showthread.php?t=187332
今天我用最直接的方法搞定,直接找到用戶設(shè)置的秘鑰。
void ZipUtils::ccSetPvrEncryptionKeyPart(int index, unsigned int value)// 設(shè)置密鑰的接口
上appstore上隨便找個(gè)cocos2d的游戲,拖入Hopper,搜索ccSetPvrEncryptionKeyPart,沒有找到。然后搜索ZipUtils,如下圖:

04E5BC6A-B738-473A-B184-82620C3C66C8.png
ccDecodeEncodedPvr用來解密pvr.ccz文件,沒有找到ccSetPvrEncryptionKeyPart,那么我們?cè)赾cDecodeEncodedPvr上下代碼塊里面試試運(yùn)氣

E023B78F-3D67-4D35-8613-E610F6F36D1A.png
int sub_444200(int arg0, int arg1) {
r1 = arg1;
r0 = arg0;
r3 = *(0x7d79d0 + r0 * 0x4);
asm{ it eq };
if (r3 == r1) {
return r0;
}
*(0x7d79d0 + r0 * 0x4) = r1;
*(int8_t *)0x7d89e0 = 0x0;
return 0x0;
}
這個(gè)有點(diǎn)像。。猜測arg0為index arg1為value
寫tweak驗(yàn)證:
int(*orgccSetPvrEncryptionKey)(int index,unsigned int key);
int myccSetPvrEncryptionKey(int index,unsigned int key);
int myccSetPvrEncryptionKey(int index,unsigned int key2key{
NSLog(@"\n\n===== keys: %d-%u ======\n\n",index,key);
orgccSetPvrEncryptionKey(key1,key2);
}
%ctor{
NSLog(@"====== HOOKED ======");
intptr_t module_vmaddr = _dyld_get_image_vmaddr_slide(0);
intptr_t ccSetPvrEncryptionKey = module_vmaddr + 0x444200 + 1;
MSHookFunction((void *)ccSetPvrEncryptionKey, (void*)myccSetPvrEncryptionKey, (void**)&orgccSetPvrEncryptionKey);
}
測試log
Jun 1 11:57:43 crean XXX[73393]:
===== keys: 0-405172683 ======
Jun 1 11:57:43 crean XXX[73393]:
===== keys: 1-1270815801 ======
Jun 1 11:57:43 crean XXX[73393]:
===== keys: 2-3663874658 ======
Jun 1 11:57:43 crean XXX[73393]:
===== keys: 3-2333226975 ======
將這4個(gè)Key轉(zhuǎn)為16進(jìn)制為
182671CB4BBF1C39DA624A628B1237DF
用TexturePacker打開加密的pvr.ccz的文件,它會(huì)提示你輸入128位加密的KEY,輸入直接解密驗(yàn)證:

5B26E15B-9F72-4166-B1C7-6438C0076623.png
我想,看了這篇教程學(xué)到的不緊緊是破解TexturePacker加密資源哦。。自己動(dòng)手驗(yàn)證試試。。只隨機(jī)了一個(gè)游戲測試。。有興趣的朋友可以找個(gè)游戲驗(yàn)證驗(yàn)證是否通用。。當(dāng)然還有很多種方法自己發(fā)掘吧~~
轉(zhuǎn)載請(qǐng)注明出處: http://www.itdecent.cn/p/9562bc1cab72 by creantan