Page 1 of 1

GNU Map file

Posted: Mon Jul 19, 2010 1:43 pm
by vektor
Здравствуйте!
VMProtect не читает имена функций из MAP-файла, созданного MinGW (по флагу Wl,-Map,file.map). При комплиляции в MSVC всё в порядке.
Формат Map-файлов у MSVC и GNU отличается, видимо, проблема в том, что VMProtect пока не поддерживает формат GNU. Действительно ли это так и возможно как-то решить данную проблему, например, преобразовав Map-файл, полученный в MinGW?

Re: GNU Map file

Posted: Tue Jul 20, 2010 2:59 am
by Admin
MinGW генерит ужасный МАР файл, который изнутри выглядит как куча совершенно бессвязного мусора - совершенно непонятно как это парсить.

Re: GNU Map file

Posted: Tue Jul 20, 2010 7:30 am
by vektor
Ну, GDB как-то читает :) После слов "Memory configuration" идут вполне читаемые строки формата: "имя секции", "адрес, размер, имя обектного файла" и список пар "адрес - имя функции". Например, у меня это выглядит примерно так

Code: Select all

Name             Origin             Length             Attributes
*default*        0x00000000         0xffffffff

Linker script and memory map

                0x69fc0000                __image_base__ = 0x69fc0000
                0x00000000                __dll__ = 0x0
                0x69fc0000                ___ImageBase = 0x69fc0000
                0x00001000                __section_alignment__ = 0x1000

.text           0x69fc1000    0x36a00
 *(.init)
 *(.text)
 .text          0x69fc1000      0x170 d:/qt/2009.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../dllcrt2.o
                0x69fc1110                atexit
                0x69fc1140                _onexit
                0x69fc1060                DllMainCRTStartup@12
 .text          0x69fc1170       0xd0 d:/qt/2009.05/mingw/bin/../lib/gcc/mingw32/4.4.0/crtbegin.o
                0x69fc1170                __gcc_register_frame
                0x69fc11fc                __gcc_deregister_frame
 .text          0x69fc1240      0x2cc ./release\coreplugin.o
                0x69fc13a0                Core::Internal::CorePlugin::CorePlugin()
                0x69fc12c4                Core::Internal::CorePlugin::~CorePlugin()
                0x69fc1404                qt_plugin_instance
                0x69fc1264                Core::Internal::CorePlugin::extensionsInitialized()
                0x69fc1240                qt_plugin_query_verification_data
                0x69fc127c                Core::Internal::CorePlugin::initialize(QStringList const&, QString*)
 .text          0x69fc150c      0x1a0 ./release\coreimpl.o
                0x69fc150c                Core::ICore::instance()
                0x69fc1534                Core::Internal::CoreImpl::settings() const
                0x69fc1678                Core::Internal::CoreImpl::CoreImpl(Core::Internal::MainWindow*)
                0x69fc1518                Core::Internal::CoreImpl::mainWindow() const
                0x69fc1614                Core::Internal::CoreImpl::~CoreImpl()
                0x69fc1644                Core::Internal::CoreImpl::CoreImpl(Core::Internal::MainWindow*)
                0x69fc1544                Core::Internal::CoreImpl::updateContext()
И по указанным адресам в VMProtect я вижу именно то, что и должен видеть...

Re: GNU Map file

Posted: Tue Jul 20, 2010 8:05 am
by Admin
Присылайте тестовый проект с реальным МАР файлом - посмотрим что можно сделать.