![]() |
eXeL@B —› Вопросы новичков —› Ether saga online распаковка архивов |
Посл.ответ | Сообщение |
|
Создано: 13 апреля 2009 08:49 · Поправил: ilyuha · Личное сообщение · #1 Всем привет. Возникла потребность в распаковке архивов данной игры, которые имеют расширение pck. Просматривая файл наткнулся на строку "Angelica File Package, Perfect World Co. Ltd. 2002~2008. All Rights Reserved". Нашел на форумах распаковщик для Perfect world но он не распаковывает. В той же папке с архивами лежит packdll.dll, который судя по всему является библиотекой для запаковки/распаковки. Просмотрев его прогой fileinfo видно что есть точки входа DecompressFile, AddFileToPack. Кто нибудь может подсказать что делать дальше и как воспользоваться библиотекой? ![]() |
|
Создано: 13 апреля 2009 09:25 · Личное сообщение · #2 ilyuhaПопробуй ![]() ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 13 апреля 2009 09:37 · Личное сообщение · #3 |
|
Создано: 14 апреля 2009 15:53 · Поправил: ilyuha · Личное сообщение · #4 Загрузил библиотеку в olly в точке где начинается процедура распаковки файла такой код 10001270 SUB ESP,328 10001276 MOV EDX,DWORD PTR SS:[ESP+32C] 1000127D PUSH EBX 1000127E PUSH EBP 1000127F PUSH ESI 10001280 PUSH EDI 10001281 LEA EAX,DWORD PTR SS:[ESP+13] 10001285 MOV ESI,DWORD PTR DS:[<&KERNEL32.WideCha>; kernel32.WideCharToMultiByte 1000128B PUSH 0 ; /pDefaultCharUsed = NULL 1000128D PUSH EAX ; |pDefaultChar 1000128E LEA ECX,DWORD PTR SS:[ESP+1B0] ; | 10001295 PUSH 190 ; |MultiByteCount = 190 (400.) 1000129A PUSH ECX ; |MultiByteStr 1000129B PUSH -1 ; |WideCharCount = FFFFFFFF (-1.) 1000129D PUSH EDX ; |WideCharStr 1000129E PUSH 0 ; |Options = 0 100012A0 PUSH 3A8 ; |CodePage = 3A8 100012A5 MOV BYTE PTR SS:[ESP+33],20 ; | 100012AA CALL ESI ; \WideCharToMultiByte 100012AC MOV EDX,DWORD PTR SS:[ESP+340] 100012B3 LEA EAX,DWORD PTR SS:[ESP+13] 100012B7 PUSH 0 ; /pDefaultCharUsed = NULL 100012B9 PUSH EAX ; |pDefaultChar 100012BA LEA ECX,DWORD PTR SS:[ESP+20] ; | 100012BE PUSH 190 ; |MultiByteCount = 190 (400.) 100012C3 PUSH ECX ; |MultiByteStr 100012C4 PUSH -1 ; |WideCharCount = FFFFFFFF (-1.) 100012C6 PUSH EDX ; |WideCharStr 100012C7 PUSH 0 ; |Options = 0 100012C9 PUSH 3A8 ; |CodePage = 3A8 100012CE CALL ESI ; \WideCharToMultiByte 100012D0 LEA EAX,DWORD PTR SS:[ESP+18] 100012D4 PUSH 80 ; /FileAttributes = NORMAL 100012D9 PUSH EAX ; |FileName 100012DA CALL DWORD PTR DS:[<&KERNEL32.SetFileAtt>; \SetFileAttributesA 100012E0 LEA ECX,DWORD PTR SS:[ESP+1A8] 100012E7 PUSH ECX 100012E8 CALL packdll.10001060 100012ED MOV EDI,EAX 100012EF ADD ESP,4 100012F2 CMP EDI,-1 100012F5 JNZ SHORT packdll.10001304 100012F7 POP EDI 100012F8 POP ESI 100012F9 POP EBP 100012FA XOR AL,AL 100012FC POP EBX 100012FD ADD ESP,328 10001303 RETN 10001304 LEA EDX,DWORD PTR SS:[ESP+1A8] 1000130B PUSH packdll.1000F2EC ; /mode = "rb" 10001310 PUSH EDX ; |path 10001311 CALL DWORD PTR DS:[<&MSVCRT.fopen>] ; \fopen Не понятно что делает WideCharTomultiByte, на мсдн сижу читаю про нее, если прогонять пошагово то при установке атрибута файла появляется ошибка неверное имя файла, те как то надо задать имя. P.s. как красиво скинуть листинг а то он странно тут выглядит? ![]() |
|
Создано: 14 апреля 2009 16:50 · Поправил: progopis · Личное сообщение · #5 |
![]() |
eXeL@B —› Вопросы новичков —› Ether saga online распаковка архивов |