回复:《东方永夜抄》中文汉化版 下载
翠梦想的文件格式。。。。。几个小时前试了一下,刚看到资源文件的文件头的解码部分,下面是这几个小时的成果
int FileHeaderDecode(HANDLE hFile, BYTE *FileHeadData)
{
//下面这段就是th075.exe中的文件头解码部分
/*
0041D3A6 |. C645 E7 64 MOV BYTE PTR SS:[EBP-19],64
0041D3AA |. C645 F3 64 MOV BYTE PTR SS:[EBP-D],64
0041D3AE |. C745 F4 000000>MOV DWORD PTR SS:[EBP-C],0
0041D3B5 |. EB 09 JMP SHORT th075.0041D3C0
0041D3B7 |> 8B45 F4 /MOV EAX,DWORD PTR SS:[EBP-C]
0041D3BA |. 83C0 01 |ADD EAX,1
0041D3BD |. 8945 F4 |MOV DWORD PTR SS:[EBP-C],EAX
0041D3C0 |> 0FB74D EC MOVZX ECX,WORD PTR SS:[EBP-14]
0041D3C4 |. 6BC9 6C |IMUL ECX,ECX,6C
0041D3C7 |. 394D F4 |CMP DWORD PTR SS:[EBP-C],ECX
0041D3CA |. 73 30 |JNB SHORT th075.0041D3FC
0041D3CC |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
0041D3CF |. 0355 F4 |ADD EDX,DWORD PTR SS:[EBP-C]
0041D3D2 |. 0FB602 |MOVZX EAX,BYTE PTR DS:[EDX]
0041D3D5 |. 0FB64D E7 |MOVZX ECX,BYTE PTR SS:[EBP-19]
0041D3D9 |. 33C1 |XOR EAX,ECX
0041D3DB |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
0041D3DE |. 0355 F4 |ADD EDX,DWORD PTR SS:[EBP-C]
0041D3E1 |. 8802 |MOV BYTE PTR DS:[EDX],AL
0041D3E3 |. 0FB645 F3 |MOVZX EAX,BYTE PTR SS:[EBP-D]
0041D3E7 |. 0FB64D E7 |MOVZX ECX,BYTE PTR SS:[EBP-19]
0041D3EB |. 03C8 |ADD ECX,EAX
0041D3ED |. 884D E7 |MOV BYTE PTR SS:[EBP-19],CL
0041D3F0 |. 0FB655 F3 |MOVZX EDX,BYTE PTR SS:[EBP-D]
0041D3F4 |. 83C2 4D |ADD EDX,4D
0041D3F7 |. 8855 F3 |MOV BYTE PTR SS:[EBP-D],DL
0041D3FA |.^EB BB \JMP SHORT th075.0041D3B7
*/
int i;
BYTE HeadLenBuf[2];
BYTE DecodeByte19 = 0x64;
BYTE DecodeByteD = 0x64;
DWORD HeadLen;
DWORD dwByte;
if(hFile == NULL)
return 0;
ReadFile(hFile, HeadLenBuf, 2, &dwByte, NULL);//文件的前两个字节记录了文件头的长度
HeadLen = HeadLenBuf[0] + HeadLenBuf[1] * 256;
HeadLen *= 0x6c;
if(FileHeadData == NULL)
return HeadLen;
ReadFile(hFile, FileHeadData, HeadLen, &dwByte, NULL);
for(i=0; i<HeadLen; i++)
{
FileHeadData ^= DecodeByte19;
DecodeByte19 += DecodeByteD;
DecodeByteD += 0x4D;
}
return HeadLen;
}
解出来后可以看见文件包里的路径和文件名,后面的其他字节估计是文件长度什么的,还没弄出来。
还有,第一次用OllyDbg,虽然有时候会出现点问题,但总体上感觉很好用。
KCDDP KR/KAG区值班室常驻义务值班员
现在在KCDDP的论坛也已经开始潜水了Orz
但是QQ群还是长期在线的