Доброе время суток! Есть некий код: Код (Text): GetProcAddress_ db "GetProcAddress", 0 LoadLibrary_ db "LoadLibrary", 0 CreateFile_ db "CreateFile", 0 ReadFile_ db "ReadFile", 0 WriteFile_ db "WriteFile", 0 SetFilePointer_ db "SetFilePointer", 0 CloseHandle_ db "CloseHandle", 0 CreateFileMapping_ db "CreateFileMapping", 0 MapViewOfFile_ db "MapViewOfFile", 0 UnmapViewOfFile_ db "UnmapViewOfFile", 0 Как эти строки можно зашифровать? интересует какой нибудь макрос
Да тут вариантов масса mysifr macro bufparam ;; - параметр на очередную строку mov edi, offset buf ; ; указатель на очередной буфер invoke lstrlen,addr buf mov ecx,eax ; ; заряжаем цикл длиной строки буфера mov al,[edi] rol al,1 ; ; крутим вправо биты символа. ; Если напишем ror тогда наоборот расшифрует rep stosb ; ; возвращаем зашифрованные символы обратно EndM
Бред но всёже, когдато фигнёй страдал Код (Text): Encrypt proc a:dword,key:dword invoke lstrlen,a mov ecx,eax mov edx,a mov eax,key nxt: xor byte ptr [edx],al add al,byte ptr [edx] inc edx loop nxt ret Encrypt endp Decrupt proc a:dword,key:dword invoke lstrlen,a mov ecx,eax dec ecx mov edx,a mov eax,key mov ah,byte ptr [edx] xor byte ptr [edx],al add al,ah inc edx jmp x nxt: add al,ah x: mov ah,byte ptr [edx] xor byte ptr [edx],al inc edx loop nxt ret Decrupt endp
изучить еще и фасм... по сабжу - пример описан в документации к фасму: Код (Text): org $ ;устанавливаем $$ ;------начало шифруемой области ($$)------------ GetProcAddress_ db "GetProcAddress", 0 ... UnmapViewOfFile_ db "UnmapViewOfFile", 0 ;------конец штфруемой области ($)------------- repeat $-$$ ;число байт load X byte from $$+(%-1) ;читаем байт скомпилированного кода Y=X xor 55h ;формула шифрования, можно использовать '%' - счетчик 1..($-$$) store byte Y at $$+(%-1) ;пишем байт скомпилированного кода end repeat как вариант - можно не только менять данные "на месте", а и перемешивать их, и т.п.
ИМХО Что-то мне подсказывает, что ты пишешь вирус и хочешь из тела убрать имена функций. Тогда шифровать ничего не нужно. Используй хеширование. Т.е. пишешь произвольный алгоритм хеширования. Например твой хэш - 4 байта 1 байт - сумма байт имени АПИшки 2 байт - длина апишки 3 байт - поксоренные байты АПИшки друг на друга 4 байт - Первый байт апишки Ну или что-то свое придумай. Во первых вирус будет меньше во вторых в теле не будет никаких палевных строк
Если байты поксорены сами на себя они разве ну будут 0? Первый байт может менятся от версий виндоус. Как вычислять длину апишки? Это извечная сложность определить конец процедуры. темболее опять же разные версии виндоус.