我正在尝试出于学习目的对游戏资产进行解密。我从游戏包中提取了上述资产,它们的格式为
.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
来找到它。