Загрузка...

Один из вариантов обфускации кода (c++)

Тема в разделе C/C++ создана пользователем Maximazzz 2 фев 2017. 1251 просмотр

Загрузка...
  1. Maximazzz
    Maximazzz Автор темы 2 фев 2017 3 24 янв 2017
    Привет всем , сегодня я расскажу как можно сделать неочевидным исполняемый код , без отладки ( в случае если у вас имеется хорошая защита от дебагга , то этот метод будет для вас эффективным )
    допустим есть у нас класс , который мы хотим запутать и будет он вида :
    Код

    class cProtect
    {
    public:
    void AntiDbg( )
    { }
    void EraseHeaders( )
    { }
    }Protect;
    В случае если вы , захотите ее вызвать ее , то в исполняемом коде она будет вида
    call Адрес_функции
    Наша задача не дать найти адрес функции . Для этого я предлагаю создать абстрактный класс за место того что есть .
    пример
    Код

    class Dummy_Protect
    {
    public:
    virtual void AntiDbg( )=0;
    virtual void EraseHeaders( )=0;
    }* vProtect;

    Dummy_Protect::Dummy_Protect()
    {vProtect=&Protect; };

    Dummy_Protect::~Dummy_Protect()
    { delete vProtect; };
    необходимо добавить наследование в наш исходный класс
    для тех кто в танке =)
    Код

    class cProtect:public Dummy_Protect
    {
    public:
    void AntiOllyDbg( )
    { }
    void EraseHeaders( )
    { }
    }Protect;
    !Важно : добавлять функции в абстрактный класс нужно строго в той последовательности в какой они у вас записаны в исходном классе .
    Итого : при вызове функции в исполняемом коде будет исполнены примерно такие команды
    mov регистр , Адрес_абстрактного_класса
    call [регистр+смещение_функции]
    то есть фактически адрес обфусицированной функции мы не даем , но а если уж дебажить то при вызове этой функции мы вызываем конструктор , где мы присваиваем абстрактному классу ссылку на искомый ) выполняем исходную функцию вызываем деконструктор ( где удаляем ссылку) а потом возвращаемся в первый уровень кода

    Минусы : громоздкость , возможность найти конструктор класса , при более детальном просмотре кода , но как вариант можно запихать присвоение ссылки на класс в мутекс , который будет находится в какой-то жопе .

    Плюсы : можно усложнить жизнь неопытным взломщикам =)
     
Top