Саморасшифровывающиеся функции в DLL

Тема в разделе "WASM.RESEARCH", создана пользователем track82, 22 июн 2005.

  1. track82

    track82 New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    1
    Адрес:
    Россия
    Задача следующая: написать DLL, функции в которой при вызове сами расшифровывались. Делал ли кто-нибудь такое и есть ли статьи на данную тему?
     
  2. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    track82

    > Делал ли кто-нибудь такое и есть ли статьи на данную

    > тему?

    делал. единственная сложность - необходимость

    обрабатывать fixup'ы иначе получится черт знает что.

    только это не сильно усложняет взлом.

    ну разве что использовать принцип матрещки:

    достустим, мы имеем 10 расшифровщиков, которые

    отрабатывают один за другим, причем в каждом из

    них расположено 10% кода зашифрованной фукнкци.

    т.е. функция расшифровывается как бы порциями,

    но никогда не расшифровывается целиком.

    это ломается сложнее, но и сложнее программируется.
     
  3. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    можно предложить так сделать

    криптор добавляет секцию в которую помещает функциЮ(и)

    {

    расшифровать

    выполнить

    зашифровать обратно

    вернуть результат

    }

    потом шифрует настоящие функции

    и устанавливает точки входа на новые функции



    ключом шифрования можно сделать какую - то функцию от

    образа зашифрованной секции





    проблемы -

    1)релоки

    2)это всё всё равно отламывае тся. и довольно просто



    уж лучше прога такая , которая преобразует в p-cod

    функции не помню как называется. в инструментах была, кажись
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Если dll делать целиком на ассемблере, то от релоков можно совсем избавиться, оставив один левый, что бы загрузчик загружал. Расшифровщик можно поставить на SEH и в начале зашифрованых ф-ций ставить, например, int3.

    IMHO на системе нереального времени (виндос) смысла в таком мало, если очень нужно, можно вручную расшифровать функции и выкинуть раскриптовку.





    kaspersky >




    Да, такая неломаемая защита была ещё во времена спектрума, штук 200 расшифровок =)
     
  5. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    S_T_A_S_

    > Если dll делать целиком на ассемблере, то от релоков

    > можно совсем избавиться,

    ну это понятно,

    но dll на асме это какая-то маааленькая dll будет

    в ней очень просто разобраться. а вот если перекомпилить

    MFC, да еще и слегка пропадчить начало функций, то вот

    это по настоящему кранты. флирт не работает, а дизасмить

    библиотечные функции можно очень долго, особенно если

    поверх них навешана шифровка...



    > оставив один левый, что бы загрузчик загружал.

    dll без релоков грузится, если про флаг стрипанья

    не забывать, или я что-то путаю?



    > Расшифровщик можно поставить на SEH и в начале

    > зашифрованых ф-ций ставить, например, int3.

    а пофиг.

    если это асмовский расшифровщик, тожно навять

    скрипт в иде который все это будет расшифровывать.

    так что расшифровщик должен быть сложным, это раз.

    не должно быть возможности выдрать расшифровщик

    из программы, чтобы расшифровывать его руками,

    это два...



    > IMHO на системе нереального времени (виндос) смысла в

    > таком мало, если очень нужно, можно вручную

    > расшифровать функции и выкинуть раскриптовку.

    полностью согласен.

    но смысл в шифровке все-таки есть,

    без ее совсем элементарно отламывается

    просто надо не переусрдстовать с ней ;)



    > Да, такая неломаемая защита была ещё во времена

    > спектрума, штук 200 расшифровок =)

    кстати, шифровку легко автоматизировать ;)

    а вот обратно - сложно.



    P.S. не так давно ломал программу, в которой

    ключевой модуль был на форте. порадовался возможности

    вспомнить форт ;) и хотя быстро написал декопилятор,

    возился все-таки долго...
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    kaspersky >




    Это если адрес загрузки совпадает с IMAGE BASE. Иначе загрузчик начнёт ругаться.



    >




    А зачем его выдирать для расшифровки? Пусть себе расшифровывает кусочки сам. Так можно подампить их по очереди =)
     
  7. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    S_T_A_S_

    Игра Hronos от Bill Gilbert'а была так запакована 16 раз :)

    Но взлом дал только "бесконечный" лазер, а формат музона я так и не понял