CRC расчет исполняемого кода - PullRequest
0 голосов
/ 22 мая 2018

У меня есть приложение, в котором используется некоторая процедура проверки целостности кода.Проверка целостности выглядит следующим образом:

  codemark1_start:

   <Some code>

    codemark1_end:
    AsmCrcCodeMrk((MyTinyBuff), codemark1_start, codemark1_end, 1,Procedure);

Макрос AsmCrcCodeMrk выглядит как

AsmCrcCodeMrk(DescriptorAddr, StartAddr, EndAddr, Id, BPA)  \
        AsmCrcCodeSig                                           \
        __asm mov EAX, offset DescriptorAddr                    \
        __asm mov EAX,  StartAddr                           \
        __asm mov EAX,  EndAddr                         \
        __asm mov EAX, Id\
       __asm mov EAX, BPA\

После компиляции программа была обработана дополнительным приложением, которое "тянет"вывести "фрагменты" между метками и рассчитать их CRC.Под Win32 все компилируется и работает.

Однако для X64 существуют трудности:

1) X64 не поддерживает встроенный ассемблер.Но я могу сделать макрос как функцию в отдельном файле и сделать функцию __forceinline.

2) Необходимо получить адреса меток во время компиляции.И это проблема.

Может кто-нибудь сказать мне, как получить адреса меток во время компиляции для платформы X64?

...