Rdmap Info
Парсер файлов .rdmap x86/x64 (Radialix)
-
Оффлайн
Автор темы
Звание: Ветеран
Команда сайта
Сообщений: 1010
Создано тем: 80
Рейтинг: 8
Репа:
(134|134|0)
Баллы: 2016
Был: 2025-12-20 22:05
Лайков: 222
Парсинг метаданных файлов RDMAP
RDMAP (Radialix Map) - это специальный формат данных, разработанный компанией Radialix Software для обеспечения локализации жестко-закодированных строк в приложении Radilaix. Файл формата RDMAP может быть получен с помощью плагина RDMAP к дизассемблеру IDA версий 5.2-5.7 и предоставляет информацию о типах, адресах, ссылках и размерах строк. Это позволяет средствами Radilaix локализовать жестко-закодированные строки и увеличить их длину (только при наличии ссылок).
Формат является проприетарным и ни документации, ни официального описания структуры файлов в свободном доступе найти не удалось. Пришлось разбираться на основе готовых файлов, тем не менее, ничего особо сложного в них нет. Внутреннее устройство RDMAP-файлов достаточно прозрачно: формат следует чёткой структуре.
Файл в формате RDMAP состоит из сигнатуры, заголовка, содержащего несколько полей, и собственно данных, разделенных на три секции (таблицы). Сигнатура представляет собой строку "rdmap" из 5 символов и 1 символ терминатора, за которыми следует WORD со значением 1, возможно это версия формата.Сигнатура и версия
Далее следует заголовок размером 54h, актуальный как для 32-бит, так 64-бит версий RDMAP.Заголовок
Заголовок содержит следующие поля (размером DWORD): контрольную сумму файла (СRC32 по устаревшему алгоритму), для которого создан файл rdmap, количеством функций (таблица 1), количество ссылок (таблица 2), количество строк по типам строк (таблица 3): Pascal, Pascal Wide, Pascal Short, WIDEZ и ASCIIZ.Поля в заголовке (32-бит rdmap)
Для RDMAP версии 64-бит все поля в заголовке имею другие смещения, кроме контрольной суммы.
После заголовка, по смещению 5Ch, начинаются данные, разделённые на три секции (таблицы). Таблица 1 содержит адреса функций (условно) и их размеры. Размеры полей для 32-бит версии RDMAP - DWORD, а для 64-бит - QWORDТаблица 1 - Функции
Формально таблица 1 содержит следующие пары данных:
[адрес начала функции][размер функции]
Сразу за ней следуют данные таблицы 2 - ссылки, которая содержит адреса строк и соответствующие им адреса ссылок. Размеры полей с адресами: DWORD для 32-бит версии RDMAP и QWORD для 64-бит версии RDMAP. Разделитель данных для пар адресов: 02h для 32-бит версии и 05h - 64-бит.Таблица 2 - Ссылки
Формально таблица 2 содержит следующие пары данных:
[адрес строки][адрес ссылки][разделитель]
Значение между парами данных условно названо и принято как "Разделитель". Реальное назначение этого поля выяснить не удалось.
Далее сразу следует таблица 3, в которой содержатся адреса строк и соответствующие им длины (в байтах), включая терминатор. Размеры полей с адресами строк: DWORD для 32-бит версии RDMAP и QWORD для 64-бит версии RDMAP. Таблица 3 является общей для всех поддерживаемых типов строк и порядок их размещения следующий:- Pascal (ANSI/Unicode) - строки
- Pascal Wide - "широкие" строки
- Pascal Short - "короткие" строки
- WIDEZ - Unicode строки
- ASCIIZ - ANSI строки
Таблица 3 - Адреса и размеры строк
Формально таблица 3 содержит следующие пары данных:
[адрес строки][размер строки в байтах, включая терминатор]
Формат поддерживаемых строк описан в справочной документации Radialix (см. главу Локализация файлов > Локализация файлов PE32/PE32+ > Жестко-закодированные строки > Типы поддерживаемых строк). Если какой-тип тип строк отсутствует, то и в таблице их нет. Тип строк, которые содержатся в таблице можно выяснить на основании данных из заголовка RDMAP.
Для удобства и быстрого просмотра информации из RDMAP файлов была создана программа.
rdmap_info.exe - это консольное приложение и в качестве основного параметра ему необходимо передать файл RDMAP.
В качестве дополнительного параметра можно указать ключ -v и программа выведет данные из таблиц (не более 10-ти первых записей).
Файлы RDMAP можно просто перетаскивать на файл rdmap_info.exe в проводнике Windows.Пример работы программы
Скачать архив с программой: ЯДискСмотрящий нравится это сообщение.Кто ищет, тот всегда найдет!
Вчера, 22:00 / #1 - Pascal (ANSI/Unicode) - строки
Статистика форума, пользователей онлайн: 0 (за последние 20 минут)
---
- Создано тем
- 1228
- Всего сообщений
- 16585
- Пользователей
- 18308
- Новый участник
- Muradia
Powered by Bullet Energy Forum

