для строк анси я ксорю так: Код (Text): ;вход: ECX - количество байт ; [ESI] - буфер proc Crypt uses esi mov eax,CRYPT_KEY @Crypt: xor byte[esi],al add esi,1 loop @Crypt ret endp Подскажите как для юникода переделать
я бы посоветовал тебе ксорить также только не побайтово а работать с dword Код (Text): ... xor dword ptr [esi],ax inc esi inc esi ...
я на фасме пишу там не нада ptr пробовал так xor word[esi],ax inc esi inc esi loop @Crypt и так xor dword[esi],eax add esi,2 loop @Crypt ничего неработает..
Код (Text): Crypt proc mov ax,CRYPT_KEY loop1: xor [esi] ,ax inc esi inc esi loop loop1 ret Crypt endp end start masm, пашет )
потому как это юникод утебя строка "Hello" выглядит как 'H',0,'e',0,'l',0,'l',0,'o',0,0 потому как в юникоде символ весит два байта а MessageBoxA воспринимает ноль как признак конца строки. У тебя два выхода: 1) забить на юникод (в конечном счёте строки в два раза больше) 2) юзай MessageBoxW который работает с юникодом.