Криптование програмного кода с определенной метки =)

Тема в разделе "WASM.BEGINNERS", создана пользователем calidus, 6 окт 2007.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Интересует вот такой момент, идет секция кода и данных, далее при запуске программы мне надо чтобы стартовал код и допустим проверял условие и если условие выполнено то раскриптовал весь код ...если же нет просто выход. Секцию данных шифровать я не хочу , только секцию кода , всю , кроме начальных данных. Возможнр ли это , и если да то как ?? Смысл в том что не хочется поверх файла накладывать криптор, и хотелось бы при компиляции кодировать код , значит нуден крипто макрос.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    крипто-макрос - бред.
     
  3. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    что тогда ? ))) и не бред , сумасшедшие мысли управляют миром
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    n0name
    Почему бред? На фасме реально.
     
  5. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Вот и пример.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    чорт. я про с думал. тогда вполне возможно
     
  7. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    8) спасибо за пример ...я помню как n0name мне советы ценные давал ...а тут уж чуть не растроился еще в 89 году часто использовали такой вид .. да и на масме возможно. Я просто думаю может кто этим занимался ..нигде тем не видел
     
  8. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Да, на форуме фасма есть макросы для шифрования по XOR,AES,RSA и м.б. ещё как-то
     
  9. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Сорри за флуд. KeSqueer класный пример!!! Так вот в Масме так же сделать примерно а потом при компиляции закриптовать , а распаковщик по условию запускать. И будет еще удобне ФСГ жать . Млин я не спец в криптографии кто еще что знает ???
     
  10. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    twgt 8) уау а ссулку не дашь ..??? может под рукой . Пойду смотреть , хотя фасм полная ж... ))) потому что я в нем не оч. а разбираться влом
     
  11. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    calidus
    http://board.flatassembler.net/topic.php?t=3835
    http://board.flatassembler.net/topic.php?t=2126
    http://board.flatassembler.net/topic.php?t=3839
     
  12. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Код (Text):
    1. ; XOR crypting macro
    2. macro crypt start,length,key {
    3.   local x,y,key_size,key_pos
    4.   virtual at 0
    5.     db key
    6.     key_size = $
    7.   end virtual
    8.   key_pos = 0
    9.   repeat length
    10.     load x from start+%-1
    11.     virtual at 0
    12.       db key
    13.       load y from key_pos
    14.     end virtual
    15.     x = x xor y
    16.     store x at start+%-1
    17.     key_pos = key_pos + 1
    18.     if key_pos >= key_size
    19.       key_pos = 0
    20.     end if
    21.   end repeat
    22. }
    23.  
    24. ; data goes here... (tip: use file directive)
    25. db 'Hello world!',13,10,'How are you?'
    26. ; encrypt
    27. crypt 0,$,'testkey'
    28. ; decrypt
    29. ;crypt 0,$,'testkey'
    сложновато ((((( не понимаю фасм

    Код (Text):
    1. format PE CONSOLE
    2. entry start
    3.  
    4. include '%fasminc%\win32a.inc'
    5.  
    6. macro begincrypt name
    7. {
    8.   name#.begin:
    9. }
    10.  
    11. macro endcrypt name, key
    12. {
    13.    name#.end:  
    14.    count = (rva name#.end - rva name#.begin)  
    15.    repeat count - 1    
    16.      load b byte from name#.begin+%-1  
    17.      b = (b xor key)  
    18.      store byte b at name#.begin+%-1
    19.    end repeat
    20. }
    21.  
    22. section '.text' code readable executable writeable
    23. start:
    24.    mov edi, layer.begin
    25.    mov ecx, layer.end - layer.begin -1
    26.  @@:
    27.     mov al, byte [edi]
    28.     xor al, 0x11
    29.     stosb
    30.     sub ecx, 1
    31.     jne @b
    32.  
    33.    begincrypt layer
    34.     invoke FindWindow, 0, szTitle
    35.     push eax
    36.     push edi
    37.     mov edi, layer2.begin
    38.     mov ecx, layer2.end - layer2.begin - 1
    39.    @@:
    40.       mov al, byte [edi]
    41.       xor al, 0x05
    42.       stosb
    43.       sub ecx, 1
    44.       jne @b
    45.     pop edi
    46.  
    47.     begincrypt layer2
    48.       pop eax
    49.       invoke SetWindowText, eax, szMessage
    50.     endcrypt layer2, 0x05  
    51.     invoke ExitProcess, 0
    52.    endcrypt layer, 0x11
    53.  
    54.    nop ; for visual purpose
    55.    nop
    56.  
    57. section '.data' data readable writeable
    58.   szMessage db 'Hello world!',0
    59.   szTitle db 'flat assembler 1.56',0
    60.  
    61. section '.idata' import data readable writeable
    62.   library kernel32,'kernel32.dll',\
    63.           user32,'user32.dll'
    64.   import kernel32,\
    65.          ExitProcess,'ExitProcess'
    66.   import user32,\
    67.          FindWindow,'FindWindowA',\
    68.          SetWindowText,'SetWindowTextA'
    некоторые примеры я так понял по криптоке текста в дате .но это я и так умею. А вот секцию кода ..
     
  13. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    вот допустим код для МАСМА , во вложении я указываю блок для кодирования ...
    Код (Text):
    1.     call    MAGENTA_InitSbox        ;init sbox.. constant 256 bytes
    2.  
    3.     push    offset key
    4.     call    MAGENTA_SetKey          ;set the password
    5.  
    6.     push    offset plain            ;offset of block of data to encrypt
    7.     push    offset cipher           ;offset of buffer for encrypted block
    8.     call    MAGENTA_Encrypt
    9.  
    10.     push    offset cipher           ;offset of block of encrypted data
    11.     push    offset cipher           ;offset of buffer for decrypted block
    12.     call    MAGENTA_Decrypt
    13.  
    14.     call    MAGENTA_Clear           ;clear internal data
    15.  
    16.     call    MAGENTA_DestroySbox     ;clear sbox
    в данном сдучае тут нету места до какой степени кодировать до какой метки , что такое Sbox ? я так понял это просто буфер для криптования ? или это и есть размер криптовки?
     
  14. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Файл млин не прекрипился
     
  15. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Код (Text):
    1. format pe gui 4.0
    2. entry  start
    3. include 'win32wxp.inc'
    4.  
    5. section '.text' code readable writeable executable
    6.  
    7. begin:  invoke  MessageBox, 0, szHello, szHello, 0
    8.     invoke  ExitProcess, 0
    9.  
    10.     szHello du "Hello, World!", 0
    11. _end:
    12.  
    13.     c1 = 10110111b
    14.     load c2 byte from begin
    15.     c2 = c2 xor c1 xor 0xC3
    16.  
    17.     repeat  $-begin
    18.         load a byte from begin+%-1
    19.         store byte a xor c1 at begin+%-1
    20.     end repeat
    21.  
    22.  
    23. start:  mov eax, [fs:0x18]
    24.     mov eax, [eax+0x30]
    25.     mov al, byte [eax+2]
    26.     dec al
    27.     and al, c1-c2
    28.     add al, c2
    29.  
    30.     mov ecx, _end-begin
    31.     @@: xor byte [begin+ecx-1], al
    32.     loop    @B
    33.     jmp begin
    34.  
    35.  
    36. section '.idata' import data readable
    37.     library kernel32, 'kernel32', \
    38.         user32, 'user32'
    39.  
    40.     import  kernel32, \
    41.         ExitProcess, 'ExitProcess'
    42.  
    43.     import  user32, \
    44.         MessageBox, 'MessageBoxW'
    Переведите этот код ПЛЗ на MASM :rolleyes:
     
  16. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    calidus
    Проще, переходи на FASM!
     
  17. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    поимаеш
    выполняет препроцессор фасма, в масме нет такого

    load загружает байт
    store его сохранет
     
  18. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    MASM:
    Код (Text):
    1. ; Определяем Макрос
    2. ; который берет целую строку, как аргумент
    3. EncryptText MACRO text:req
    4.   LOCAL cipherByte
    5.   cipherByte = 0AAh
    6. ; Пройдите через каждый байт строки
    7.   FORC plainByte, <&text>
    8. ; Зашифровать их
    9.   cipherByte = cipherByte xor '&plainByte'
    10. ; И демпировать результат как байт данных
    11.   db cipherByte
    12.  ENDM
    13. db 0
    14. ENDM
     
  19. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    GMax
    А код как? Никак.
     
  20. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Да я тут тоже так думаю

    Я так примерно и понял ..но альтернатива хоть другая должна быть

    Честно сказать я не хочу бегать постоянно беготня какая то и фасм не оч нравится.

    А что с кодом на МАСМ ..там ктонить глянул пост номер 13 ?