Макросы для обфускации кода на С/С++

Тема в разделе "LANGS.C", создана пользователем JCronuz, 17 июн 2010.

  1. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Существуют в природе такие?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    JCronuz
    типа
    mysumm = mystart + myend;
    в типа этого
    йцу5у4цй64у = 32ке6цек + к32еку;
    ?
    только причём тогда макросы
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Зачем компилируемому языку обфускация?
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _DEN_
    да он про сорцы наверно
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    wsd

    Ты не понял. Зачем обфусцировать код, если для работоспособности программы не нужно поставлять сорцы?
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _DEN_
    типа сорец есть, но чёрт ногу сломит)
     
  7. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Да, мне для сорца необходимо, пример кода:

    Код (Text):
    1. int a, b, c;
    2. a = b = c = 0;
    3.  
    4.         while (a != 4)
    5.         {
    6.             if (a == 0 || b == c)
    7.             {
    8.                 b++;
    9.                 c+=b; a++;
    10.  
    11.                 printf("%d,%d,%d",a,b,c);
    12.             }
    13.  
    14.             if (a == 1)
    15.             {
    16.                 b++;
    17.                 c+=b; a++;
    18.  
    19.                 printf("%d,%d,%d",a,b,c);
    20.             }
    21.  
    22.             b++;
    23.             c+=b; a++;
    24.  
    25.             if (a == 5)
    26.             {
    27.                 break;
    28.             }
    29.  
    30.         }
    31.     getchar();
    Вот цикл выше превратился в


    Код (Text):
    1. 0040B7DF  |.  8B45 F4       mov eax, dword ptr ss:[ebp-C]
    2. 0040B7E2  |.  8945 F8       mov dword ptr ss:[ebp-8], eax
    3. 0040B7E5  |.  8B4D F8       mov ecx, dword ptr ss:[ebp-8]
    4. 0040B7E8  |.  894D FC       mov dword ptr ss:[ebp-4], ecx
    5. 0040B7EB  |>  837D FC 04    /cmp dword ptr ss:[ebp-4], 4
    6. 0040B7EF  |.  0F84 A4000000 |je 0040B899                             ;  kg.0040B899
    7. 0040B7F5  |.  837D FC 00    |cmp dword ptr ss:[ebp-4], 0
    8. 0040B7F9  |.  74 08         |je short 0040B803                       ;  kg.0040B803
    9. 0040B7FB  |.  8B55 F8       |mov edx, dword ptr ss:[ebp-8]
    10. 0040B7FE  |.  3B55 F4       |cmp edx, dword ptr ss:[ebp-C]
    11. 0040B801  |.  75 34         |jnz short 0040B837                      ;  kg.0040B837
    12. 0040B803  |>  8B45 F8       |mov eax, dword ptr ss:[ebp-8]
    13. 0040B806  |.  83C0 01       |add eax, 1
    14. 0040B809  |.  8945 F8       |mov dword ptr ss:[ebp-8], eax
    15. 0040B80C  |.  8B4D F4       |mov ecx, dword ptr ss:[ebp-C]
    16. 0040B80F  |.  034D F8       |add ecx, dword ptr ss:[ebp-8]
    17. 0040B812  |.  894D F4       |mov dword ptr ss:[ebp-C], ecx
    18. 0040B815  |.  8B55 FC       |mov edx, dword ptr ss:[ebp-4]
    19. 0040B818  |.  83C2 01       |add edx, 1
    20. 0040B81B  |.  8955 FC       |mov dword ptr ss:[ebp-4], edx
    21. 0040B81E  |.  8B45 F4       |mov eax, dword ptr ss:[ebp-C]
    22. 0040B821  |.  50            |push eax                                ; /<%d>
    23. 0040B822  |.  8B4D F8       |mov ecx, dword ptr ss:[ebp-8]           ; |
    24. 0040B825  |.  51            |push ecx                                ; |<%d>
    25. 0040B826  |.  8B55 FC       |mov edx, dword ptr ss:[ebp-4]           ; |
    26. 0040B829  |.  52            |push edx                                ; |<%d>
    27. 0040B82A  |.  68 50FE4100   |push 41FE50                             ; |format = "%d,%d,%d"
    28. 0040B82F  |.  E8 0CFFFFFF   |call 0040B740                           ; \printf
    29. 0040B834  |.  83C4 10       |add esp, 10
    30. 0040B837  |>  837D FC 01    |cmp dword ptr ss:[ebp-4], 1
    31. 0040B83B  |.  75 34         |jnz short 0040B871                      ;  kg.0040B871
    32. 0040B83D  |.  8B45 F8       |mov eax, dword ptr ss:[ebp-8]
    33. 0040B840  |.  83C0 01       |add eax, 1
    34. 0040B843  |.  8945 F8       |mov dword ptr ss:[ebp-8], eax
    35. 0040B846  |.  8B4D F4       |mov ecx, dword ptr ss:[ebp-C]
    36. 0040B849  |.  034D F8       |add ecx, dword ptr ss:[ebp-8]
    37. 0040B84C  |.  894D F4       |mov dword ptr ss:[ebp-C], ecx
    38. 0040B84F  |.  8B55 FC       |mov edx, dword ptr ss:[ebp-4]
    39. 0040B852  |.  83C2 01       |add edx, 1
    40. 0040B855  |.  8955 FC       |mov dword ptr ss:[ebp-4], edx
    41. 0040B858  |.  8B45 F4       |mov eax, dword ptr ss:[ebp-C]
    42. 0040B85B  |.  50            |push eax                                ; /<%d>
    43. 0040B85C  |.  8B4D F8       |mov ecx, dword ptr ss:[ebp-8]           ; |
    44. 0040B85F  |.  51            |push ecx                                ; |<%d>
    45. 0040B860  |.  8B55 FC       |mov edx, dword ptr ss:[ebp-4]           ; |
    46. 0040B863  |.  52            |push edx                                ; |<%d>
    47. 0040B864  |.  68 50FE4100   |push 41FE50                             ; |format = "%d,%d,%d"
    48. 0040B869  |.  E8 D2FEFFFF   |call 0040B740                           ; \printf
    49. 0040B86E  |.  83C4 10       |add esp, 10
    50. 0040B871  |>  8B45 F8       |mov eax, dword ptr ss:[ebp-8]
    51. 0040B874  |.  83C0 01       |add eax, 1
    52. 0040B877  |.  8945 F8       |mov dword ptr ss:[ebp-8], eax
    53. 0040B87A  |.  8B4D F4       |mov ecx, dword ptr ss:[ebp-C]
    54. 0040B87D  |.  034D F8       |add ecx, dword ptr ss:[ebp-8]
    55. 0040B880  |.  894D F4       |mov dword ptr ss:[ebp-C], ecx
    56. 0040B883  |.  8B55 FC       |mov edx, dword ptr ss:[ebp-4]
    57. 0040B886  |.  83C2 01       |add edx, 1
    58. 0040B889  |.  8955 FC       |mov dword ptr ss:[ebp-4], edx
    59. 0040B88C  |.  837D FC 05    |cmp dword ptr ss:[ebp-4], 5
    60. 0040B890  |.  75 02         |jnz short 0040B894                      ;  kg.0040B894
    61. 0040B892  |.  EB 05         |jmp short 0040B899                      ;  kg.0040B899
    62. 0040B894  |>^ E9 52FFFFFF   \jmp 0040B7EB                            ;  kg.0040B7EB
    Возможно есть макросы которые добавят мусора в код?
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _DEN_
    ждём автора
     
  9. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    JCronuz
    а ты вон про что
    это наверно компилером соптимизируется
     
  10. wasm_test

    wasm_test wasm test user

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

    что значит макросы которые добавляют мусор? бред какой-то) пишите свой морфер если хотите
     
  11. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    В точку :)

    Да морфер, но тока для сорца, укажите путь, я буду писать :)
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Не понял, что тут указывать? Садись и пиши. Не вижу проблемы
     
  13. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Код (Text):
    1.      /*
    2.       * Program to compute an approximation of pi
    3.       *  by Brian Westley, 1988
    4.       */
    5.  
    6. /* Браян Вестли, вычисление Пи, 22 года назад.*/
    7.  
    8.      #define _ -F<00||--F-OO--;
    9.      int F=00,OO=00;
    10.      main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
    11.      {
    12.                  _-_-_-_
    13.             _-_-_-_-_-_-_-_-_
    14.          _-_-_-_-_-_-_-_-_-_-_-_
    15.        _-_-_-_-_-_-_-_-_-_-_-_-_-_
    16.       _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    17.       _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    18.      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    19.      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    20.      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    21.      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    22.       _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    23.       _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
    24.        _-_-_-_-_-_-_-_-_-_-_-_-_-_
    25.          _-_-_-_-_-_-_-_-_-_-_-_
    26.              _-_-_-_-_-_-_-_
    27.                  _-_-_-_
    28.      }
    29.    Note that this program works by computing its own area.  For more
    30.    digits, write a bigger program.  See also {hello, world}.
    31. Учтите, производится вычисление площади функции. Для большей точности напишите побольше. См. также {мама, я родился!}/{hello, world}.
    (enu)http://manybooks.net/titles/raymondericetext02jarg422.html
     
  14. jabocrack

    jabocrack New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
    Не доводилось встречать. Но если подумать, обфускация кода на уровне исходников невозможна или трудноосуществима. Для начала исходник надо перевести в более доступные для программного анализа структуры. Это означает создание фротенда для С/C++. На данный момент самый многообещающий проект - это LLVM/clang. Например, может компилировать Boost и имеет открытую для внешних приложений архитектуру.
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    наличием префикса "reverse" в нике сразу говорит что Вы не "горе программеров" )
    Вы не считает, что Вы отличаетесь от "горе программеров" наличием скаченной книги?
    может что-то другое закрыть?
     
  16. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    jabocrack
    хм, а как же например вот или вот ?
     
  17. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Guru_of_Zen
    не "обфускация исходников", а "обфускация кода на уровне исходников"
    feel the difference
     
  18. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Great Ты имеешь в виду морфер это - уже для бинарного файла?

    GoldFinch в точку
     
  19. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    GoldFinch

    почувствовал
    понял
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    JCronuz
    Для скрипта.