(fasm) расширение синтаксиса

Тема в разделе "WASM.ASSEMBLER", создана пользователем GoldFinch, 24 сен 2008.

  1. l0tw

    l0tw New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2011
    Сообщения:
    8
    Нашел, что не так. Нашел, и не нашел.

    Макрос FASM:
    macro code2ascii from,size,to {
    _fr = from
    _to = to
    repeat size
    load b byte from _fr
    ;Здесь операции, в которых байт шифруется, результат в ворд.
    ;Не привожу, так как не работает и в таком виде. Данный макрос
    ;просто должен разбивать каждый байт кода в слово.
    store word b at _to
    _to = _to + 1
    _fr = _fr + 2
    end repeat
    }

    _encs:
    db _ce-_cs dup ?
    _cs:
    ;Здесь валидный код, который работает, если убрать вызов макроса,
    ;и вставить на него jmp
    _ce:
    code2ascii _cs, _ce-_cs, _encs

    Пробовал так пошифровать, но этот макрос портит смещения, причем только когда format PE GUI 4.0 DLL, екзешник работает (расшифровывает нормально, с оригинальными смещениями).

    Каким образом портит?
    Видимо, прообраз кода сперва перемещается к метке _encs с помощью макроса, после этого пересчитываются смещения, а только затем - код пишется в выходной файл.

    Как указать препроцессору работать с бинарным кодом? Можно, конечно, написать внешнюю программу, которая все это дело переместит сама, но некрасиво.
     
  2. l0tw

    l0tw New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2011
    Сообщения:
    8
    Не объявлена ф-ция UCanvas.DrawTextTTFToCanvas

    PROTO UCanvas::lol: rawTextTTFToCanvas() name '?DrawTextTTFToCanvas@UCanvas@@QAEHHHPBGPBVFontDrawInfo@@EHHPBV?$TArray@PAVFontDrawInfoSection@@@@@Z' from ENGINE.DLL

    Это MASM? Может, так: PROTO UCanvas.Dra ... ?
    - - - -

    Нет примера макроса, который бы изменял данные, но не "переделывал" смещения?