使用 腾讯元宝,Kimi 辅助将C#版UnPde转换为C++版UnPdeC
算是学习C++代码了,请勿用于任何商业目的!
C++17 标准
项目属性 -> 配置属性 -> 常规 -> C++ 语言标准
改成 ISO C++17 标准 (/std:c++17)
0X1000 - 0X1FFF
使用 FastXor.html 即可验证
解密后可以观察到每个在目录中的"文件"都有一个标识?
相对位置在 0X74-0X77
在 C#版 UnPde中 TagsHash 中记录的就是这些标识?
使用 XorShiftOffset.html 输入 C7D5CC01
即可得到在不同位置下被加密的标识16进制值。
一共32个这样的标识?因为解密时读取密钥的方式是循环读取
密钥大小是 0X1000,每个"文件"都只占用0x80,所以只有32个标识?
0X60 - 0X6F
这个区域逻辑上是给名称用的
但是大多数写不到这一行
所以绝大部分(未验证)是00
但是能搜索出20W条数据😊
所以算是一个找文件信息块的特征吧
正常来说文件名后面是00的话文件名就结束了
有几处会出现00后面还有字符串?的情况
0x2000 0x4000
.anim
1FD4E37B68D9E1CFFD14C367
.lua / .occ
1EDBE37B68D9E3CFFD14C367
.tag / .dds
1ED3E37B68D9E3CFFD14C367
特殊的dds (noise3d.dds)
1DD3E37B68D9E3CFFD14C367
.dcl
1FDDE37B68D9E0CFFD14C367
.mesh
1FD0E37B68D9EACFFD14C367
.physx
1FD6E37B68D9E7CFFD14C367
.pd9
1DD5E37B68D9E1CFFD14C367
.vd9
1ED5E37B68D9E1CFFD14C367
.skel
1FD7E37B68D9E1CFFD14C367
.spr
1FDCE37B68D9E2CFFD14C367
.vfx
1FD2E37B68D9E6CFFD14C367
.fsb
5982A14F
.swf
5C86B071
.ttf
1FD0E37B6ACBE3CFFD10C347FE910AB3