Galgame汉化中的逆向(一)_文本加密(压缩)解密
Galgame汉化中的逆向 (一):文本加密(压缩)与解密by devseed,
0x0 前言看到关于游戏汉化相关的逆向教程挺少的,作为某汉化组的成员也帮过别的汉化组,于是就想把我见到的几个典型的例子整理分析一下,还是挺有意思的。此教程和我在贴吧和隔壁发的一样。
0x1 观察与定位这个游戏还是很典型的,cpk封包,文本应该在sn.bin里面。打开一看没有明显的字符,而且数据看起来很紧凑,应该是压缩或者加密了。
相比与主机游戏ida费劲的静态分析,pc动态调试真是太舒服了。找文本很简单,等游戏运行起来后直接暂停,搜索内存sjis字符串。比如说“椿子”。然后记住这个地址(或附近的某个),下硬断点write,重新启动游戏运行,游戏中断在这里。
0x2 解密函数观察然后顺腾摸瓜,我们能看到了解密函数,只不过这个游戏奇怪,用了eax和ecx传参(之后分析这个应该是指向了全局变量),进一步分析发现eax应该是解密后的缓冲区,ecx是sn.bin文件缓冲区。这里提取解密后的文本可以直接memdump了,其实汉化游戏我们甚至可以不管它用了什么加密,直接hook这里然后替换为其他缓冲区。但是这样就没有 ...
虚幻4(ue4)引擎加密pak解包教程(初学者向x64源码逆向)
虚幻4(ue4)引擎加密pak解包教程(初学者向x64源码逆向)1. 观察源码,寻找切入点我用的vscode,搜索关键字decrypt。我们发现FAES:: Key结构,就是加密key,去epic官网查[5]发现是aes256加密。注意游戏版本要与源码版本一致,否则源码有可能修改对不上,还有此处不讨论魔改版ue4和程序加壳等问题。
看见void DecryptData(uint8\* InData, uint32 InDataSize, FGuid InEncryptionKeyGuid)函数,右键findallreference找到相关信息,寻找切入点,我们看到文件IPlatformFilePak.cpp文件中void FPakFile::LoadIndex(FArchive\* Reader)函数有fatal error的log,这个可以成为我们的关键点(因为是fatal,一般都会保留log,其他的log可能就没有编译到程序中[1]。比如https://www.52pojie.cn/thread-907938-1-1.html中的\”No valid decryption ke ...