sony09090 发表于 2019-4-25 12:16:40

[源码开源] DOF 的 PVF文件的、解密、解包、原理分析(请大家继续完善)

本帖最后由 sony09090 于 2019-4-25 12:19 编辑




源码下载地址
链接: https://pan.baidu.com/s/1RcPMXmDq8lZmYL_uTxhgBw


链接: https://pan.baidu.com/s/1RcPMXmDq8lZmYL_uTxhgBw 提取码: 8sh3


==============易源码====================



.版本 2
.支持库 spec
.支持库 EThread


.子程序 取树列表
.参数 文本型, 文本型
.局部变量 文件长度
.局部变量 目录树_数据, 字节集


_启动窗口.标题 = “解密中请耐心等待”


文件 = 文本型
文件号 = 打开文件 (文件, 1, )
' 文件长度 = 取文件长度 (文件号)


读入数据 (文件号, 头信息.GUID长度)
头信息.GUID = 读入字节集 (文件号, 头信息.GUID长度)
读入数据 (文件号, 头信息.文件版本)
读入数据 (文件号, 头信息.目录树长度)
读入数据 (文件号, 头信息.目录树效验)
读入数据 (文件号, 头信息.总文件数量)


' 调试输出 (“PVF文件长度”, 文件长度)
调试输出 (“GUID长度”, 头信息.GUID长度)
调试输出 (“GUID”, 头信息.GUID)
调试输出 (“文件版本”, 头信息.文件版本)
调试输出 (“目录树长度”, 头信息.目录树长度)
调试输出 (“目录树效验”, 头信息.目录树效验)
调试输出 (“总文件数量”, 头信息.总文件数量)


目录树_数据 = 读入字节集 (文件号, 头信息.目录树长度)
api_decryptTreeBlock (目录树_数据, 头信息.目录树长度, 头信息.总文件数量, 头信息.目录树效验, 头信息.目录树效验) 'C源码实现(继续往下看有源码)


关闭文件 (文件号)


文件号 = 打开内存文件 ()
写出字节集 (文件号, 目录树_数据)
移到文件首 (文件号)
启动线程 (&处理树数据, 文件号, )


==============C源码====================



int PvfPlayer::_decryptTreeBlock(unsigned char* buf, unsigned int bufLen, int numberOfFiles, int checkSumCheck, int checksumUse)
{
unsigned int bufLenv5; // ebx@1
unsigned char *bufv6; // esi@1
int result; // eax@2
unsigned char * bufEnd; // edx@3
unsigned int v9; // eax@3
unsigned char * i; // ecx@3
unsigned int v11; // esi@4
unsigned int v12; // eax@4
unsigned int v13; // eax@4
unsigned int v14; // eax@4
unsigned int v15; // @3




bufLenv5 = bufLen;
bufv6 = buf;
if (bufLen & 3) // bufLen shall be fold of 4
{
result = 0;
}
else
{
this->_sub_311820(v15);
bufEnd = bufv6 + 4 * (bufLenv5 >> 2); // >>2 then * 4, this is truncation
v9 = ~numberOfFiles;
for (i = bufv6; i != bufEnd; i += 4)
{
v11 = __ROR4__(checksumUse ^ *(unsigned int *)i ^ 0x81A79011, 6);
*(unsigned int *)i = v11;
v12 = v15[(unsigned char)v9 ^ *(unsigned char *)i] ^ (v9 >> 8);
v13 = v15[(unsigned char)v12 ^ *(unsigned char *)(i + 1)] ^ (v12 >> 8);
v14 = v15[(unsigned char)v13 ^ *(unsigned char *)(i + 2)] ^ (v13 >> 8);
v9 = v15[(unsigned char)v14 ^ *(unsigned char *)(i + 3)] ^ (v14 >> 8);
}
result = ~v9 == checkSumCheck;
}
return result;
}


unsigned int PvfPlayer::_sub_311820(unsigned int *a1)
{
unsigned int v1; // ecx@1
unsigned int v2; // esi@1
unsigned int result; // eax@2
unsigned int *v4; // edx@2




v1 = 1;
*a1 = 0;
v2 = 128;
do
{
v1 = ((v1 & 1) != 0 ? 0xEDB88320 : 0) ^ (v1 >> 1);
result = 0;
v4 = &a1;
do
{
*v4 = v1 ^ a1;
result += 2 * v2;
v4 += 2 * v2;
} while (result <= 0xFF);
v2 >>= 1;
} while (v2);
return result;
}
}

mys611 发表于 2019-4-25 12:17:31

什么东东

zl942036 发表于 2019-4-25 12:25:49

看看!~:

鹤舞九天 发表于 2019-4-25 12:36:21

谢谢分享

8402529 发表于 2019-4-25 12:41:19


谢谢分享

fnp902003 发表于 2019-4-25 12:41:29

这个就厉害了,word哥~

风花雪月雨未来 发表于 2019-4-25 12:53:28

谢谢分享

xijue120 发表于 2019-4-25 12:59:42

看看怎么样

雷勐 发表于 2019-4-25 13:00:30

ggggggggggggggggggggggggggggggggggggg

xioq 发表于 2019-4-25 13:00:40

支持源码,看看

yuechen0543 发表于 2019-4-25 13:06:36

是国服的吗

tomatoshixihong 发表于 2019-4-25 13:07:37

源码开源] DOF 的 PVF文件的、解密、解包、原理分析(请大家继续完善) [修改]

HH山东兵团 发表于 2019-4-25 13:13:16

顶顶顶顶顶顶顶顶

bbs563 发表于 2019-4-25 13:14:13

DOF 的 PVF文件的、解密、解包、原理分析 看看这个怎么样,完整吗、

sony09090 发表于 2019-4-25 13:28:23

yuechen0543 发表于 2019-4-25 13:06
是国服的吗

如果是国服,TX会不管吗?国服的密钥几天就变一次,会反编译的可以自取

2239339595 发表于 2019-4-25 13:36:27

看看能干什么

ch64806865 发表于 2019-4-25 13:41:36

。惊!看看。

fenghanqidu 发表于 2019-4-25 13:45:51

这个是好东西值得学校

Tcdii 发表于 2019-4-25 14:00:53

这个是好东西值得学习

太子酆 发表于 2019-4-25 14:02:04

[源码开源] DOF 的 PVF文件的、解密、解包、原理分析(请大家继续完善) [修改]
高级模式
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [源码开源] DOF 的 PVF文件的、解密、解包、原理分析(请大家继续完善)

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明