这是内测安装包下载链接,夜行档案游戏下载安装-夜行档案安卓版游戏下载地址_管理资源吧
游戏已经没了,没有热更新
好像不是u3d游戏,解压以后是dat文件
from pathlib import Path
from typing import Union
from numpy import uint8, frombuffer as npbuff, tile as npfill
def Decrypt(bundle: Union[Path, str]):
with open(bundle, 'rb') as f:
size = 0xDC
darr = npbuff(f.read(size), dtype=uint8)
karr = npbuff(bytes(i ^ j for i, j in zip(b'Unit', darr[:4])), dtype=uint8)
data = (darr ^ npfill(karr, (size // 4) + 1)[:size]).tobytes()
if not data.startswith(b'UnityFS\x00'):
print(f'解密错误 ---- {bundle}')
return
data += f.read()
with open(f'{bundle}.dec', 'wb') as f:
f.write(data)
def batch(bundle_path: str = '', ext: str = '*.dat', subfolder: bool = False):
path = Path(bundle_path) if bundle_path else Path.cwd()
need = [i for i in (path.rglob(ext) if subfolder else path.glob(ext))]
for i in need:
Decrypt(i)
if __name__ == '__main__':
path = r'D:\测试' # 指定游戏文件所在文件夹
ext = '*.dat' # 指定要解密的文件类型后缀
subfolder = True # 是否查找子文件夹内的文件
batch(path, ext, subfolder)
它只是xor了文件前220字节
1 个赞
检查是不是unity游戏很简单, 查看apk里的lib文件夹看看里面有没有libil2cpp.so
1 个赞
学到了,谢谢大佬!
请问相关的解密逻辑是在哪个文件里查看的?
ida 逆向 libil2cpp.so, 然后自己找解密代码并解析, 不过对于xor加密可以靠硬猜