Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大佬,知不知道.eme格式的引擎的有啥封包工具啊 #614

Open
wycstc353 opened this issue Dec 30, 2023 · 2 comments
Open

大佬,知不知道.eme格式的引擎的有啥封包工具啊 #614

wycstc353 opened this issue Dec 30, 2023 · 2 comments

Comments

@wycstc353
Copy link

大佬,知不知道.eme格式的引擎的有啥封包工具啊
瞳の烙淫1-3三部都是这个引擎的

@ist-42
Copy link

ist-42 commented Jan 22, 2024

我暂时没有找到专门的封包工具。 通过研究garbro的解包脚本和游戏包体,我最近给一个老游戏写了个专门的封包脚本,有空的话会优化下代码放出来。

eme包体从头到尾依次是"RREDATA "签名,lzss压缩的数据段,每个由header和data组成;然后是40 byte的key,key的前8byte表示加密流程,后32byte是key的数据;接着是每个文件 0x60 byte的index,存着name, subtype, offset, size等metadata。最后是4byte的uint表示文件数量。

lzss压缩的代码可以在 https://github.com/differentrain/LzssStream 里面找到,eme的lzss压缩似乎是限定THRESHOLD为2,maxMatchLength为LzssInitPos (注意是头文件里面原始的LzssInitPos, 而不是在GARBro读取做减法取模运算后的值)

封包的难点一是header字段里面有些未知用处的字段。二是garbro只有decrypt()函数,想加密的话需要自己写个逆运算。比较幸运的是我处理的游戏似乎没有用到那些header里面的未知字段。然后我不太关心加密就直接把key的前8byte全设为0跳过加密了。

一个奇怪的小坑是,eme包体里8 bit的灰度图的header里对应的BPP是7,但实际上是按照8bit读和存的,不是特别清楚为什么,封包的时候遇到BPP为8的图直接存BPP=7就行。

@wycstc353
Copy link
Author

我暂时没有找到专门的封包工具。 通过研究garbro的解包脚本和游戏包体,我最近给一个老游戏写了个专门的封包脚本,有空的话会优化下代码放出来。

eme包体从头到尾依次是"RREDATA "签名,lzss压缩的数据段,每个由header和data组成;然后是40 byte的key,key的前8byte表示加密流程,后32byte是key的数据;接着是每个文件 0x60 byte的index,存着name, subtype, offset, size等metadata。最后是4byte的uint表示文件数量。

lzss压缩的代码可以在 https://github.com/differentrain/LzssStream 里面找到,eme的lzss压缩似乎是限定THRESHOLD为2,maxMatchLength为LzssInitPos (注意是头文件里面原始的LzssInitPos, 而不是在GARBro读取做减法取模运算后的值)

封包的难点一是header字段里面有些未知用处的字段。二是garbro只有decrypt()函数,想加密的话需要自己写个逆运算。比较幸运的是我处理的游戏似乎没有用到那些header里面的未知字段。然后我不太关心加密就直接把key的前8byte全设为0跳过加密了。

一个奇怪的小坑是,eme包体里8 bit的灰度图的header里对应的BPP是7,但实际上是按照8bit读和存的,不是特别清楚为什么,封包的时候遇到BPP为8的图直接存BPP=7就行。

额,看不懂,还是等之后大佬你发布工具吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants