24.11.2005, 16:21
fa3,Среда, 23 Ноября 2005, 20:31 Написал:Как тогда при помощи hexworkshop-а сделать, чтоб работало?Не знаю, можно ли при помощи hexworkshop-а это сделать, но можно написать программу, которая сумеет распаковать и запаковать эти файлы.
[right][snapback]36232[/snapback][/right]
Формат файлов следующий:
первый DWORD - Количество записей в файле, дальше идут сами записи
каждая запись представляет из себя структуру вида
Код:
{
DWORD dwNameSize
char szName[dwSize]
DWORD dwParentNameSize
char szParentName[dwParentNameSize]
}
Вот код, при помощи которого я экспортировал эти данные в табличный вид:

pData - указывает на адрес файла загруженного в память.
nSize - размер файла в памяти.
остальные переменные испоьлзуются для вывода служебных значений в таблицу.
Код:
void DumpLnk(LPVOID pData, int nSize, char szName[], fstream &fs1, fstream &fs2, int &n1, int &n2, int &n3)
{
PBYTE pbData = (PBYTE)pData;
int nCount = *(int *)pbData;
pbData += sizeof(nCount);
char buf[MAX_PATH];
fs1 << ++n2 << "," << n1 << "," << szName << "," << nCount << "," << nSize << std::endl;
for(int i=0;i<nCount;i++)
{
fs2 << ++n3 << "," << n2 << ",";
for(int j=0;j<2;j++)
{
int nLen = *(int *)pbData;
pbData += sizeof(nCount);
CopyMemory(buf, pbData, nLen);
buf[nLen] = 'x0';
fs2 << buf;
if (j==0 && nLen)
fs2 << ",";
pbData += nLen;
}
fs2 << endl;
}
}