首页
社区
课程
招聘
7
[原创]仙劍奇俠傳,文件加密解密算法.放出來喏~!
发表于: 2010-6-28 20:54 10467

[原创]仙劍奇俠傳,文件加密解密算法.放出來喏~!

2010-6-28 20:54
10467
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// RSTEncDec.h: interface for the CRSTEncDec class.
//
//////////////////////////////////////////////////////////////////////
 
#if !defined(AFX_RSTENCDEC_H__20112A8E_16B6_4E06_9829_9CB5FC1F209C__INCLUDED_)
#define AFX_RSTENCDEC_H__20112A8E_16B6_4E06_9829_9CB5FC1F209C__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
#include "DBDecEnc.h"
 
//-------------------------------------------------------------------------------------------------------------
typedef struct  _PACKFILE_HEADER_INFO{
    DWORD   _01dwLogon; //0x1A545352 "RST"
    DWORD   _02dwUnk  ; //04
    DWORD   _03dwIndexSeek  ; //08
    DWORD   _04dwDataSeek   ; //0C
    DWORD   _05dwLenSub  ; //10
    DWORD   _06dwFileNum ; //14
    DWORD   _07dwUnk  ; //18
    DWORD   _08dwUnk  ; //1C
    DWORD   _09dwUnk  ; //20
    DWORD   _0AdwUnk  ; //24
    DWORD   _0BdwUnk  ; //28
    DWORD   _0CdwFileSize  ; //2C
    DWORD   _10dwUnk[0x14] ; //30
}_HEADER_INFO,_HEADERINFO;
 
 
class CPALFile
{
public:
    CPALFile();
    virtual ~CPALFile();
public:
    HANDLE  hOpen;
    HANDLE  hWrite;
    DWORD   m_dwCpkRead;
public:
    int       GetSize();
public:
    HANDLE    PalOpen(LPCTSTR strOpen);
    HANDLE    PalOpen(LPCTSTR strOpen,DWORD dwAccess,DWORD  dwShare,LPSECURITY_ATTRIBUTES lpSAttributes,
                      DWORD dwMode,DWORD dwFlag,HANDLE  hTemp);
    HANDLE    PalCreate(LPCTSTR strCreate);
    int       PalRead  (HANDLE hFile, LPVOID pbuf, DWORD dwlen);
    int       PalRead  (HANDLE hFile, DWORD dwSeek,LPVOID pbuf, DWORD dwlen);
    int       PalWrite (HANDLE hFile, LPVOID pbuf, DWORD dwlen);
    int       PalWrite (HANDLE hFile, DWORD dwSeek,LPVOID pbuf, DWORD dwlen);
    void      PalClose (HANDLE hFile) { ::CloseHandle(hFile); hFile=NULL; }
};
 
//-------------------------------------------------------------------------------------------------------------
typedef struct  _RST_DATA_INDEXLIST{
    DWORD   _01dwUnk;
    DWORD   _02dwUnk;
    DWORD   _03dwUnk;
    DWORD   _04dwSeek;     //文件位置
    DWORD   _05dwLenght1;  //加密后长度
    DWORD   _06dwLenght2;  //解密后长度
    DWORD   _07dwNumber;
    DWORD   _08dwEnd;
}_DATA_LIST;
 
class CRSTEncDec 
{
public:
    CRSTEncDec();
    virtual ~CRSTEncDec();
private:
    char      DecKey[0x0100];
public:
    char      m_chrData[0x02][0x1000];
public:
    int       RSTLoadKey(char *key1=NULL,char *key2=NULL,char *key3=NULL);
    int       RSTDecrpyt(LPVOID pdat,DWORD  dwnum,LPVOID pkey=NULL);
    int       RSTDecIndex(LPVOID pbuf,DWORD len);
};
 
 
class CCPKFile : public CRSTEncDec,public CDBDecEnc
{
public:
    CCPKFile();
    virtual ~CCPKFile();
public:
    CPALFile        file;
    _HEADERINFO     _hdi;
    _DATA_LIST     *_plist;
    int            m_iListNum;
    DWORD           dwFileSize;
    LPBYTE          pData;
public:
    _DATA_LIST*   GetIndexList()
    {
        return (_DATA_LIST*)pData;
    }
public:
    int   DecCPKFile(LPCTSTR strOpen,LPCTSTR strSave);
    int   DecCPKIndex(LPCTSTR strOpen);
    int   WriteData(LPCTSTR strpath);
    char* GetDecType(LPVOID pheader);
 
public:
    int   DecData (char *pdat,int len,LPCTSTR strpath);
    int   SaveFile(int num,char *pdat,int len,LPCTSTR strpath,LPCTSTR strname);
};
 
class CSMPFile : public CRSTEncDec
{
public:
    CSMPFile();
    virtual ~CSMPFile();
public:
    CPALFile        file;
    _HEADERINFO     _hdi;
    _DATA_LIST     *_plist;
    int            m_iListNum;
    DWORD           dwFileSize;
    LPBYTE          pData;
public:
    _DATA_LIST*   GetIndexList()
    {
        return (_DATA_LIST*)pData;
    }
public:
    int   DecSMPFile(LPCTSTR strOpen,LPCTSTR strSave,LPCTSTR name=NULL);
    int   DecSMPIndex(LPCTSTR strOpen);
    int   WriteData(LPCTSTR strpath,LPCTSTR name);
    char* GetDecType(LPVOID pheader);
public:
    int   SaveFile(int num,char *name);
};
 
#endif // !defined(AFX_RSTENCDEC_H__20112A8E_16B6_4E06_9829_9CB5FC1F209C__INCLUDED_)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞 7
支持
分享
赞赏记录
参与人
雪币
留言
时间
Youlor
为你点赞~
2024-5-31 02:50
伟叔叔
为你点赞~
2024-2-6 03:19
QinBeast
为你点赞~
2024-1-15 02:34
shinratensei
为你点赞~
2024-1-8 04:29
心游尘世外
为你点赞~
2023-12-20 00:14
飘零丶
为你点赞~
2023-12-8 00:29
PLEBFE
为你点赞~
2023-3-19 02:33
最新回复 (12)
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这是仙剑几啊
2010-6-28 23:23
0
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
拜女牛人。。。。
2010-6-29 10:05
0
雪    币: 252
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个... 呃,游戏汉化人员爱捣鼓的东西.不过这个游戏是中文的.
2010-6-29 10:12
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哪个版本的仙剑?仙剑95?
2010-6-30 11:31
0
雪    币: 101
活跃值: (154)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
顶下楼主MM
2010-6-30 15:47
0
雪    币: 1291
活跃值: (1478)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
怎么可以 顶lzmm呢?
要支持嘛
2010-7-1 02:47
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
顶下楼主支持
2010-7-2 15:51
0
雪    币: 1402
活跃值: (341)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我是来顶楼主的。。。。
2010-7-2 17:39
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
纯属支持!

绝无恶意!
2010-7-2 18:16
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
轻轻顶下楼主MM
2010-7-3 07:02
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我也要顶,也绝无恶意
2010-7-3 23:06
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
先回答问题,各位没看代码吧。这样应该是PAL4(PAL4_DEC)
呵呵,一定支持。不顶了。
2010-7-3 23:19
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册
// // 统计代码