X‘moe Project » 日志
【Siglus】扔上SiglusEngine ss脚本的提取代码[仅String]
2014-5-11 16:05 /
如果你想直接解析汉化组的文本(或者后期的Siglus开发的游戏),我只能告诉你,这个程序是解析不了的。
但是脚本格式是不变的。只是字符串会多一层128bit的加密。
而且这个128Bit的key经常改变233
如果要拆后期的文本,将每个wchar进行解密就行了=。=
另外,如果在一般的文本编辑器下看见的是乱码(因为没Signature),试试UTF-16LE。
但是脚本格式是不变的。只是字符串会多一层128bit的加密。
而且这个128Bit的key经常改变233
如果要拆后期的文本,将每个wchar进行解密就行了=。=
另外,如果在一般的文本编辑器下看见的是乱码(因为没Signature),试试UTF-16LE。
#include <cstdio>
//#include <cstring>
#include <windows.h>
#include <wchar.h>
#include <locale.h>
using namespace std;
typedef struct ScriptHdr
{
DWORD ScriptHdrLen;
DWORD OperationOffset;
DWORD OperationCount;
DWORD StringTableOffset;
DWORD StringTableCount;
DWORD OriginalStringOffset;
DWORD OriginalStringCount;
DWORD Var1PairOffset;
DWORD Var1PairCount;
DWORD Var2PairOffset;
DWORD Var2PairCount;
DWORD VarArray[17];
DWORD Var3PairOffset;
DWORD Var3PairCount;
DWORD Var4PairOffset;
DWORD Var4PairCount;
};
typedef struct InfoPair
{
DWORD Offset;
DWORD Count;
};
int main(int argc, char **argv)
{
setlocale( LC_CTYPE,"chs");
if(argc < 1)
{
printf("Usage : %s [ScriptFile]\n",argv[0]);
exit(1);
}
FILE *fin = fopen(argv[1],"rb");
char *FileName = new char[strlen(argv[1])+strlen("_str.txt")+1];
sprintf(FileName,"%s_str.txt",argv[1]);
WCHAR FileNameW[MAX_PATH];
memset(FileNameW,0,MAX_PATH*2);
MultiByteToWideChar(CP_UTF8,0,FileName,strlen(FileName),FileNameW,strlen(FileName)*2);
FILE *fout = _wfopen(FileNameW,L"wb");
fseek(fin,0,SEEK_END);
DWORD dwFileSize=ftell(fin);
rewind(fin);
char *pFile=new char [dwFileSize];
fread(pFile,dwFileSize,1,fin);
fclose(fin);
ScriptHdr _hdr;
DWORD iPos = 0;
memcpy(&_hdr,pFile,0x84);
printf("SiglusEngine Script Info [%s]\n",argv[1]);
/**********************************************************/
InfoPair StrList[_hdr.StringTableCount];
memcpy(&StrList,(pFile+_hdr.StringTableOffset),_hdr.StringTableCount * 8);
for(DWORD Line = 0;Line < _hdr.StringTableCount; Line++)
{
fprintf(fout,"<%08d>",Line);
WCHAR WStrBuffer[MAX_PATH];
memset(WStrBuffer,0,MAX_PATH*2);
LPWSTR StrOffset = LPWSTR (pFile+iPos);
wcsncpy(WStrBuffer,StrOffset,StrList[Line].Count);
wprintf(L"%s\n",WStrBuffer);
}
fclose(fout);
return 0;
}
#1 - 2017-2-5 12:10
qwertyuiopasdfghjklzxcvbn (Hentai Typing)