Защита кода

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

  1. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Столкнулся с проблемой:

    Когда я компилирую исходник, в бинарнике все названия строк легко просматриваются hex-редактором, также видны задействованные функции.

    Как можно защитить код, сделать <кашу> ?
     
  2. HoBleen

    HoBleen New Member

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

    Какой язык? Какой компилятор? Может просто дебаговый билд?
     
  3. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    MASM32

    Компилирую с /RELEASE

    Вариант с пакерами не подходит.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    тогда шифруй сам. Простейшим xor'ом можешь.
     
  5. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Как ??

    У меня строки в <db> хранятся. Т.е. нужно их XOR'ить, поместись в db, а при выполнении хоr'ить обратно?)
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    скорее всего имеется в виду импорт :P
    решение - динамический импорт с шифрованием имен функций
     
  7. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Слишком мудрено. Как бы попроще, можно и с хоr?
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    да.. можно типа db 'H' xor 1, 'e' xor 1,....
    кстате в фасме можно макрос для автоматизации этого дела сделать, а в масме хз.
     
  9. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Вроде понял))

    Пытаюсь цикл сделать....
     
  10. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    >> решение - динамический импорт с шифрованием имен функций
    изврат, проще уж юзать не имена ф-ций, а хеши от них (експорты нужных либ есессно руками парсить)

    по поводу строк - намного проще будет не шифровать каждую отдельно, а вынести их все в отдельную секцию, и криптанцть её каким нибуть tea, rc4 или каким-нибуть другим бростым блочным шифром
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    не меньший изврат :P
     
  12. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Точно изврат.

    Мне нужен простейший метод, вроде XOR
     
  13. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Great, Cr4sh, тут не про импорты, а про обычные строки. но как вариант можно жостко вшить адрес loadlib/getprocaddr под все известные системы и СП
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    а это про что тогда? в чистом виде в бинарники виден только импорт.

    ну я и грю - анксоришь строку, потом LoadLibraryA, потом GetProcAddress. Вот и весь динамический импорт с шифрованием. В экзешнике строчку хранишь проксоренную
     
  15. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    А хеши то что изврат - один раз сделал процедурку и пользуйся.
     
  16. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    светяцо в импорте.. да и какая это защита кода. бряк ставь и смотри параметры :)
     
  17. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    Красным подчеркнуто,то что нужно скрыть...

    С циклом у меня не вышло.

    Код (Text):
    1. .data
    2. db sz1 "h",0
    3. db sz2 "e",0
    4. db sz3 "l",0
    5. db sz4 "l",0
    6. db sz5 "o",0
    7.  
    8. .code
    9. start:
    10.  
    11. xor sz1,1
    12. xor sz2,1
    13. xor sz3,1
    14. xor sz4,1
    15. xor sz5,1
    16. xor sz6,1
    Как это все обьединить с одну строку??
     
  18. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    REALiSTiC
    кошмар а не код:)

    lodsb / xor / stosb рулят
     
  19. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    REALiSTiC
    ППЦ :)
    Код (Text):
    1. .data
    2. db sz1 "hello",0
    3. .code
    4. lea eax,sz1 ;загрузили адрес строки
    5. mov ebx,eax;сохранили в евх
    6. invoke lstrlen,eax;получили длинну строки
    7. @@: xor byte ptr [ebx],KEYXOR ;проксорили первый байт строки с ключем
    8. inc ebx ;переместили указатель на следующий байт
    9. dec eаx ; отняли от длинны строки 1
    10. jnz @b;цыкл
    Вобщем простейший кодец типа такого.
    Как сказал Great рульнее будет зделать через lodsb,stosb но так имхо нагляднее
     
  20. REALiSTiC

    REALiSTiC New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    33
    PaCHER
    Ппц!

    Код (Text):
    1. .data
    2. szTxt db "His Infernal Majesty",
    3.  
    4. .code
    5. start:
    6.  
    7. mov ecx, offset szTxt
    8. .WHILE BYTE PTR [ecx] != 0
    9.    xor BYTE PTR [ecx], 152
    10.    inc ecx
    11. .ENDW
    12.  
    13. <...>