Как поксорить с помощью макроса?

Тема в разделе "FASM", создана пользователем solvitz, 18 фев 2012.

  1. solvitz

    solvitz Member

    Публикаций:
    0
    Регистрация:
    28 авг 2010
    Сообщения:
    86
    Код (Text):
    1. section '.data' data readable writeable
    2. @1:
    3.    db 'string1',0
    4.    db 'string2',0
    5.    db 'string3',0
    6. @2:
    7. BUFFLEN = @2 - @1
    Дайте пожалуйста пример макроса для ксора данных между @1 и @2, чтобы в скомпилированный файл попали поксоренные данные. Код для расшифровки:
    Код (Text):
    1.     mov esi, @1
    2.     mov edi, esi
    3.     mov ecx, BUFFLEN
    4.     mov bl, 0x99
    5. @loop:
    6.     lodsb
    7.     xor al, bl
    8.     stosb
    9.     loop @loop
    Макрос нужен для FASM.
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    solvitz
    Код (Text):
    1. macro encodebegin key*
    2. {
    3.     local startof.code
    4.     startof.code = $
    5.  
    6.     purge encodeend
    7.     macro encodeend
    8.     \{
    9.         repeat $-startof.code
    10.             load buf byte from startof.code+%-1
    11.             store byte buf xor key at startof.code+%-1
    12.         end repeat
    13.     \}
    14.     macro encodeend
    15.     \{
    16.         encodeend
    17.         purge encodeend
    18.         purge org
    19.     \}
    20.     macro org arg
    21.     \{
    22.         encodeend
    23.         org arg
    24.         encodebegin
    25.     \}
    26. }
    27.  
    28. section '.data' data readable writeable
    29. encodebegin 0x99
    30.    db 'string1',0
    31.    db 'string2',0
    32.    db 'string3',0
    33. encodeend
     
  3. solvitz

    solvitz Member

    Публикаций:
    0
    Регистрация:
    28 авг 2010
    Сообщения:
    86
    l_inc
    Спасибо за помощь!
     
  4. teXture

    teXture New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2011
    Сообщения:
    17
    А может есть у кого-нибудь аналог этого макроса только на MASM.