Шифрование строк

Тема в разделе "WASM.BEGINNERS", создана пользователем FifthAngel, 19 авг 2008.

  1. FifthAngel

    FifthAngel New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2008
    Сообщения:
    15
    Адрес:
    Russia
    Доброе время суток!
    Есть некий код:
    Код (Text):
    1.    
    2.            GetProcAddress_  db  "GetProcAddress", 0
    3.     LoadLibrary_        db  "LoadLibrary", 0
    4.     CreateFile_         db  "CreateFile", 0
    5.     ReadFile_           db  "ReadFile", 0
    6.     WriteFile_          db  "WriteFile", 0
    7.     SetFilePointer_     db  "SetFilePointer", 0
    8.     CloseHandle_        db  "CloseHandle", 0
    9.     CreateFileMapping_  db  "CreateFileMapping", 0
    10.     MapViewOfFile_      db  "MapViewOfFile", 0
    11.     UnmapViewOfFile_    db  "UnmapViewOfFile", 0
    Как эти строки можно зашифровать?
    интересует какой нибудь макрос
     
  2. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Да тут вариантов масса

    mysifr macro bufparam ;; - параметр на очередную строку

    mov edi, offset buf ; ; указатель на очередной буфер
    invoke lstrlen,addr buf
    mov ecx,eax ; ; заряжаем цикл длиной строки буфера
    mov al,[edi]
    rol al,1 ; ; крутим вправо биты символа.
    ; Если напишем ror тогда наоборот расшифрует

    rep stosb ; ; возвращаем зашифрованные символы обратно

    EndM
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Бред но всёже, когдато фигнёй страдал :lol:

    Код (Text):
    1. Encrypt proc a:dword,key:dword
    2.     invoke  lstrlen,a
    3.     mov     ecx,eax
    4.     mov     edx,a
    5.     mov     eax,key
    6. nxt:
    7.     xor     byte ptr [edx],al
    8.     add     al,byte ptr [edx]
    9.     inc     edx
    10.     loop    nxt
    11.     ret
    12. Encrypt endp
    13.  
    14. Decrupt proc a:dword,key:dword
    15.     invoke  lstrlen,a
    16.     mov     ecx,eax
    17.     dec     ecx
    18.     mov     edx,a
    19.     mov     eax,key
    20.     mov     ah,byte ptr [edx]
    21.     xor     byte ptr [edx],al
    22.     add     al,ah
    23.     inc     edx
    24.     jmp     x
    25. nxt:
    26.     add     al,ah
    27. x:
    28.     mov     ah,byte ptr [edx]
    29.     xor     byte ptr [edx],al
    30.    
    31.     inc     edx
    32.     loop    nxt
    33.     ret
    34. Decrupt endp
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    в фасме можно зашифровать во время компиляции
     
  5. FifthAngel

    FifthAngel New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2008
    Сообщения:
    15
    Адрес:
    Russia
    Всем спасибо. GoldFinch я только MASM знаю,
    подскажи, как можно это сделать в фасме
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    изучить еще и фасм...
    по сабжу - пример описан в документации к фасму:
    Код (Text):
    1. org $ ;устанавливаем $$
    2. ;------начало шифруемой области ($$)------------
    3. GetProcAddress_     db  "GetProcAddress", 0
    4. ...
    5. UnmapViewOfFile_    db  "UnmapViewOfFile", 0
    6. ;------конец штфруемой области ($)-------------
    7. repeat $-$$ ;число байт
    8. load X byte from $$+(%-1) ;читаем байт скомпилированного кода
    9. Y=X xor 55h ;формула шифрования, можно использовать '%' - счетчик 1..($-$$)
    10. store byte Y at $$+(%-1) ;пишем байт скомпилированного кода
    11. end repeat
    как вариант - можно не только менять данные "на месте", а и перемешивать их, и т.п.
     
  7. deBator

    deBator New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    11
    Например сделать что-то вроде pre-build step'а и на этой стадии обработать исходники как нужно
     
  8. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    ИМХО
    Что-то мне подсказывает, что ты пишешь вирус и хочешь из тела убрать имена функций.

    Тогда шифровать ничего не нужно.

    Используй хеширование.

    Т.е. пишешь произвольный алгоритм хеширования.

    Например твой хэш - 4 байта
    1 байт - сумма байт имени АПИшки
    2 байт - длина апишки
    3 байт - поксоренные байты АПИшки друг на друга
    4 байт - Первый байт апишки


    Ну или что-то свое придумай.

    Во первых вирус будет меньше
    во вторых в теле не будет никаких палевных строк
     
  9. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Если байты поксорены сами на себя они разве ну будут 0?
    Первый байт может менятся от версий виндоус.
    Как вычислять длину апишки? Это извечная сложность определить конец процедуры. темболее опять же разные версии виндоус.
     
  10. deBator

    deBator New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    11
    Под "длиной апишки" скорее всего имелось ввиду длина ее имени.
     
  11. FifthAngel

    FifthAngel New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2008
    Сообщения:
    15
    Адрес:
    Russia
    Magnum именно так, спасибо за описание хешей.