XOR шифрование строки в юникоде...

Тема в разделе "WASM.BEGINNERS", создана пользователем maestro-ant, 23 окт 2006.

  1. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    для строк анси я ксорю так:

    Код (Text):
    1. ;вход: ECX - количество байт
    2. ; [ESI] - буфер
    3. proc Crypt uses esi
    4.  mov eax,CRYPT_KEY
    5. @Crypt:
    6.  xor byte[esi],al
    7.  add esi,1
    8.  loop @Crypt
    9.  ret
    10. endp
    Подскажите как для юникода переделать
     
  2. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    я бы посоветовал тебе ксорить также только не побайтово а работать с dword
    Код (Text):
    1. ...
    2. xor dword ptr [esi],ax
    3. inc esi
    4. inc esi
    5. ...
     
  3. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    я тоже об этом думал, Ошибка Не сответствие размера...
     
  4. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    я на фасме пишу там не нада ptr
    пробовал так
    xor word[esi],ax
    inc esi
    inc esi
    loop @Crypt

    и так
    xor dword[esi],eax
    add esi,2
    loop @Crypt

    ничего неработает..
     
  5. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    Код (Text):
    1. Crypt   proc
    2.     mov ax,CRYPT_KEY
    3. loop1:
    4.     xor [esi] ,ax
    5.     inc esi
    6.     inc esi
    7.     loop    loop1
    8.     ret
    9. Crypt   endp
    10. end start
    masm, пашет )
     
  6. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    ..почему-то в месседжбоксе отображается только первый символ строки, что за х..
     
  7. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    всё ок! спасибо разобрался. MessageBoxW :)
     
  8. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    потому как это юникод
    утебя строка "Hello" выглядит как
    'H',0,'e',0,'l',0,'l',0,'o',0,0
    потому как в юникоде символ весит два байта
    а MessageBoxA воспринимает ноль как признак конца строки. У тебя два выхода:
    1) забить на юникод (в конечном счёте строки в два раза больше)
    2) юзай MessageBoxW который работает с юникодом.
     
  9. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    опоздал с обьяснениеМ )