所有的文件都是sign_123开头,这样的文件能解吗?

在获取某游戏资源时,该游戏下载资源没有在常规的Android\data下,经过一番寻找,需要在data\data\下才找到xx.xx.xx为下载的资源文件.
拉出来后,所有的文件后缀是正常的,内容全是以sign_123开头.
image
尝试解apk包是kotlin,对kotlin不熟悉,无从下手.
敢问这样的资源还能搞定吗?

这里赋上资源包和apk:
解压:123
https://www.123pan.com/s/6JWRVv-QQfph.html提取码:eja6

2 个赞

帮顶

我看了一下,apk文件里面存在libcoco2djs.so文件。应该是采用的coco2d之类的加密方式,那么就需要寻找sign和key。sign应该就是sign_123。接下来的过程就是找key。具体找key可以看看这篇文章
https://www.52pojie.cn/thread-1784353-1-1.html
如有错误,希望指正

2 个赞

因为不会ida分析,xxtea没有hook到密钥,所以我尝试猜测加密方式,运气比较好,这个让我猜出来了,sign是sign_123 ,然后4个字节异或密钥key_,之后都异或456key_就可以成功解密了。代码如下,记得换下路径

import os

def xor_decrypt(path, key):
    for root, dirs, files in os.walk(path):
        for file in files:
            if file.endswith("png"):
                file_path = os.path.join(root,file)
                with open(file_path, 'rb') as file:
                    encrypted_data = file.read()
                if encrypted_data[0:8] == b'sign_123':
                    encrypted_data = encrypted_data[12:]
                    decrypted_data = bytearray()
                    key_len = len(key)
                    for i, byte in enumerate(encrypted_data):
                        decrypted_data.append(byte ^ key[i % key_len])
                    with open(file_path, 'wb') as file:
                        file.write(b'\x89\x50\x4E\x47')
                        file.write(decrypted_data)
                        print("正在解密文件",file.name)
            else :
                file_path = os.path.join(root,file)
                with open(file_path, 'rb') as file:
                    encrypted_data = file.read()
                if encrypted_data[0:8] == b'sign_123':
                    encrypted_data = encrypted_data[8:]
                    offset_data = encrypted_data[0:4]
                    encrypted_data = encrypted_data[4:]
                    offset_key = b'key_'
                    offset_data = bytes([offset_data[i] ^ offset_key[i % 4] for i in range(4)])
                    decrypted_data = bytearray()
                    key_len = len(key)
                    for i, byte in enumerate(encrypted_data):
                        decrypted_data.append(byte ^ key[i % key_len])
                    with open(file_path, 'wb') as file:
                        file.write(offset_data)
                        file.write(decrypted_data)
                        print("正在解密文件",file.name)
if __name__ == '__main__':
    path = r"C:\Users\zjbook\Desktop\天命女神"
    key = b'456key_'
    xor_decrypt(path,key)

之后获得的内容为uuid的形式 需要再次恢复文件名称 看论坛里面的这个文章 里面有还原思路有什么方法能从cocos creator构建的游戏里还原出live2d或spine动画资源?