+ Reply to Thread
Results 1 to 5 of 5

Thread: Как вытянуть ресурсы с pdb файла

  1. #1
    sh4aa's Avatar

    Question Как вытянуть ресурсы с pdb файла

    Есть игра Archibald's Adventures в которой все ресурсы png, jpg, wav...хранятся в pdb файле.
    PDB - Palm OS файл базы или debug инфа с++, а что это за файл я так и не понял.

    Пока достаю то что достается с помощью WinHex


    На выходе получаю готовую картинку.

    Кто то видел уже подобные файлы ?
    Как можно извлечь одтуда ресурсы, если с png и jpg проблем нет в HEX можно и начало и конец увидеть, то как быть с WAV ?

    PDB файлы - pdb files.zip

  2. #2
    s.zelenyuk's Avatar

    Default Re: Как вытянуть ресурсы с pdb файла

    Структура файла схожа с описанной в википедии, но не идентична. Со смещения 0x4С начинается таблица из 8-байтовых элементов, первые 4 байта которых являются оффсетами до ресурсов в big-endian. Судя по тому, что последний оффсет в таблице указывает на последний ресурс в файле, а элементы в таблице упорядочены по возрастанию, в этой таблице есть смещения до всех ресурсов. Размер же одного ресурса можно определить, вычтя его смещение из смещения следующего ресурса, и не важно, PNG это или WAV.

    Пример:



    Смещение до ресурса 1 = 0xA28
    Размер ресурса 1 = 0x2EE8 (0x3910 - 0xA28)
    Смещение до ресурса 2 = 0x3910
    Размер ресурса 2 = 0x268 (0x3B78 - 0x3910)

    И так до конца.

  3. 2 пользователя(ей) сказали cпасибо:
    Dark Koder (22-03-2016) sh4aa (20-03-2016)
  4. #3
    sh4aa's Avatar

    Default Re: Как вытянуть ресурсы с pdb файла

    @s.zelenyuk Большое спасибо, с этим уже проще намного.
    Случайно не знаете что идет после 4F4BBD (Смещение CDF) да смещения 2693 в файле data_pc.pdb

    Дальше уже идут название файлов, в том же порядке что и сам hex нужного файла.

    Вот первые две картинки:


  5. #4
    s.zelenyuk's Avatar

    Default Re: Как вытянуть ресурсы с pdb файла




    Со смещения 0xCE8 начинается некая структура данных с заголовком длиной 0x74 (от 0xCE8 до 0xD5C), а за ней идёт таблица с элементами по 16 байт. Исходя из того, что в приведённом тобой списке насчитывается 402 названия файлов, а в этой таблице именно 402 элемента, можно предположить, что эта таблица связывает имя файла с ресурсом внутри .pdb.

    Элемент таблицы можно грубо описать так:
    Code:
    struct {
        word id_1
        word id_2
        dword unknown_1
        dword unknown_2
        dword unknown_3
    }
    id_1 всегда увеличивается на единицу, от 0 до 401.
    id_2 ведёт себя хаотично; полагаю, может означать порядок загрузки изображения.
    unknown_1 и unknown_2 для конкретного элемента одинаковы, на оффсеты не похожи, что означают - неясно.
    unknown_3 сначала ведёт себя хаотично (0xB, 0x18, 0x21, 0x2B, 0x38, 0x45), потом начинает увеличиваться на 0x11 (0x53, 0x64, 0x75, 0x86 и т.д.).

    В целом, это служебные данные, которые вряд ли нужны в данном случае для извлечения всей полезной информации.

  6. Пользователь сказал cпасибо:
    sh4aa (21-03-2016)
  7. #5
    sh4aa's Avatar

    Default Re: Как вытянуть ресурсы с pdb файла

    Кусок и правда не понятный, но вот эта часть в глаза бросилась:

+ Reply to Thread

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:23
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org