上下文

我正在尝试出于学习目的对游戏资产进行解密。我从游戏包中提取了上述资产,它们的格式为.json.png.lua。但是,它们是加密的。在十六进制视图中检查文件时,我注意到一些特别有趣的事情:它们的所有字节均以4448 4741 4d45 53开头,在ascii中它对应于游戏的发行商。 />
在游戏二进制文件上运行strings命令以提取所有字符串,其中之一应该是解密密钥
编写一个python脚本,以使用AES尝试对这些加密资产使用每个可能的密钥,XXTEA和XOR。如果解密结果是有效的json / lua文本文件,则验证密钥。

通常,仅这两个步骤就可以为我找到许多其他游戏的关键,但是这次没有用。

我可以执行其他哪些步骤来尝试静态解密这些资产而无需将gdb插入运行时?

**资产链接可在此处找到https://www.dropbox.com/sh/7pqhvpsa0ems0q9/AAA8lHrudeix3hJ0Rz2tXPSxa?dl=0

#1 楼

您仍然可以尝试一些操作,例如在二进制文件上运行signsrch以查看其是否具有任何加密算法签名。 >
gbl@roran:~/Temp/14102$ ls -l
-rw-r--r-- 1 gbl users 1319 Dez  3 20:40 effect.json
-rw-r--r-- 1 gbl users  119 Dez  3 20:40 version.lua
gbl@roran:~/Temp/14102$ gzip *
gbl@roran:~/Temp/14102$ ls -l
-rw-r--r-- 1 gbl users 1354 Dez  3 20:40 effect.json.gz
-rw-r--r-- 1 gbl users  154 Dez  3 20:40 version.lua.gz


这可能暗示它们也已被压缩-但也许不是,因为对其进行加密应使其熵增加相同,这将导致相同的效果。

无论如何,请检查解密步骤的结果是否具有压缩器签名,然后对其进行解压缩。 ,然后在那里开始倒车,可能是这样做的唯一方法。请记住,加密密钥也可以是任何二进制字节序列,甚至可以在运行时生成,因此您不能真正假设使用4448 4741 4d45 53来找到它。