Дата: Понедельник, 23.01.2012, 23:46 | Сообщение # 2
Был не раз
Зарегистрирован: 19.01.2012
Группа: Пользователи
Сообщений: 11
Статус: Offline
Вот другой способ тоже работает на семерке
Code
var reg: tregistry;
begin
if chk1.Checked=True then
begin
reg := tregistry.create;
reg.rootkey := HKEY_CURRENT_USER ;
reg.lazywrite := false;
reg.openkey('software\microsoft\windows\currentversion\run', false);
reg.writestring(Application.Title, application.exename);
reg.closekey;
reg.free;
end
Сообщение отредактировал jaygen - Понедельник, 23.01.2012, 23:46
Кстати, забыли библиотечку освободить, чтоб уж совсем красивый код был.
Замечу что таким образом можно запустить любой файл, пробовал даже ави открывает и при входе начинает фильм проигрываться Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
Кстати, забыли библиотечку освободить, чтоб уж совсем красивый код был.
Хотел число переменных к минимуму свести)
Quote (dolphin)
Замечу что таким образом можно запустить любой файл, пробовал даже ави открывает и при входе начинает фильм проигрываться
Потому что запускается так:
explorer [filename]
Так можно и в реестре сделать) TheDeduction
Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
Нашел вот такое описание всевозможных значений параметров
Код
uses ShlObj;
const
{
// Следующие идентификаторы имеются в модуле ShlObj:
CSIDL_DESKTOP = $0000;
// Виртуальный каталог, представляющий Рабочий стол. (Корень в проводнике)
CSIDL_INTERNET = $0001;
// Виртуальный каталог для Internet Explorer.
CSIDL_PROGRAMS = $0002;
// Меню Пуск -> Программы
CSIDL_CONTROLS = $0003;
// Виртуальный каталог, содержащий иконки пунктов панели управления
CSIDL_PRINTERS = $0004;
// Виртуальный каталог, содержащий установленные принтеры
CSIDL_PERSONAL = $0005;
// Виртуальный каталог, представляющий папку "Мои документы"
// До Vista ссылался на какталог "Мои документы" на жёстком диске
CSIDL_FAVORITES = $0006;
// Избранное. (обычно C:\Documents and Settings\username\Favorites)
CSIDL_STARTUP = $0007;
// Пуск -> Программы -> Автозагрузка
CSIDL_RECENT = $0008;
// Недавние документы (обычно C:\Documents and Settings\username\My Recent Documents
// Для добавления ссылки документа используйте SHAddToRecentDocs
CSIDL_SENDTO = $0009;
// Папка, содержащая ярлыки меню "Отправить" (Sent to...) (обычно C:\Documents and Settings\username\SendTo)
CSIDL_BITBUCKET = $000a;
// Виртуальный каталог, содержащий файлы в корзине текущего пользователя
CSIDL_STARTMENU = $000b;
// Элементы меню Пуск текущего пользователя (обычно C:\Documents and Settings\username\Start Menu)
CSIDL_DESKTOPDIRECTORY = $0010;
// Рабочий стол текущего пользователя (обычно C:\Documents and Settings\username\Desktop)
CSIDL_DRIVES = $0011;
// Виртуальный каталог, представляющий папку "Мой компьютер"
CSIDL_NETWORK = $0012;
// Виртуальный каталог, представляющий "Сетевое окружение"
CSIDL_NETHOOD = $0013;
// Папка "My Nethood Places" (обычно C:\Documents and Settings\username\NetHood)
// В неё ссылки на избранные расшаренные ресурсы
CSIDL_FONTS = $0014;
// Папка, содержащая установленные шрифты. (обычно C:\Windows\Fonts)
CSIDL_TEMPLATES = $0015;
// Шаблоны документов. (Обычно Settings\username\Templates)
CSIDL_COMMON_STARTMENU = $0016;
// Элементы меню Пуск для всех пользователей. (обычно C:\Documents and Settings\All Users\Start Menu)
// Константы, начинающиеся на CSIDL_COMMON_ существуют только в NT версиях
CSIDL_COMMON_PROGRAMS = $0017;
// Меню Пуск -> программы для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs)
CSIDL_COMMON_STARTUP = $0018;
// Меню Пуск -> Программы -> Автозагрузка для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs\Startup)
CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
// Элементы Рабочего стола для всех пользователей (обычно C:\Documents and Settings\All Users\Desktop)
CSIDL_APPDATA = $001a;
// Папка, в которой рограммы должны хранить свои данные(C:\Documents and Settings\username\Application Data)
CSIDL_PRINTHOOD = $001b;
// Установленные принтеры. (обычно C:\Documents and Settings\username\PrintHood)
CSIDL_ALTSTARTUP = $001d; // DBCS
// user's nonlocalized Startup program group. Устарело.
CSIDL_COMMON_ALTSTARTUP = $001e; // DBCS
// Устарело
CSIDL_COMMON_FAVORITES = $001f;
// Ссылки "Избранное" для всех пользователей
CSIDL_INTERNET_CACHE = $0020;
// Временные Internet файлы (обычно C:\Documents and Settings\username\Local Settings\Temporary Internet Files)
CSIDL_COOKIES = $0021;
// Папка для хранения Cookies (обычно C:\Documents and Settings\username\Cookies)
CSIDL_HISTORY = $0022;
// Хранит ссылки интернет истории IE
}
// Следующих идентификаторов нет в ShlObj:
CSIDL_ADMINTOOLS = $30;
// Административные инструменты текущего пользователя (например консоль MMC). Win2000+
CSIDL_CDBURN_AREA = $3b;
// Папка для файлов, подготовленных к записи на CD/DVD
// (Обычно C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning)
CSIDL_COMMON_TEMPLATES = $2d;
// Папка шаблонов документов для всех пользователей (Обычно C:\Documents and Settings\All Users\Templates)
CSIDL_COMMON_MUSIC = $35;
// Папка "Моя музыка" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Music)
CSIDL_COMMON_PICTURES = $36;
// Папка "Мои рисунки" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Pictures)
CSIDL_COMMON_VIDEO = $37;
// Папка "Моё видео" для всех пользователей (C:\Documents and Settings\All Users\Documents\My Videos)
CSIDL_COMPUTERSNEARME = $3d;
// Виртуальная папка, представляет список компьютеров в вашей рабочей группе
CSIDL_CONNECTIONS = $31;
// Виртуальная папка, представляет список сетевых подключений
CSIDL_LOCAL_APPDATA = $1c;
// AppData для приложений, которые не переносятся на другой компьютер (обычно C:\Documents and Settings\username\Local Settings\Application Data)
CSIDL_PROFILE = $28;
// Папка пользователя (обычно C:\Documents and Settings\username)
CSIDL_PROGRAM_FILES = $26;
// Папка Program Files (обычно C:\Program Files)
CSIDL_PROGRAM_FILESX86 = $2a;
CSIDL_PROGRAM_FILES_COMMON = $2b;
// Папка Program Files\Common (обычно C:\Program Files\Common)
CSIDL_PROGRAM_FILES_COMMONX86 = $2c;
CSIDL_RESOURCES = $38;
// Папка для ресерсов. Vista и выше (обычно C:\Windows\Resources)
CSIDL_RESOURCES_LOCALIZED = $39;
CSIDL_SYSTEM = $25;
// Папака System (обычно C:\Windows\System32 или C:\Windows\System)
CSIDL_SYSTEMX86 = $29;
CSIDL_WINDOWS = $24;
// Папка Windows. Она же %windir% или %SYSTEMROOT% (обычно C:\Windows)
function GetSpecialPath(CSIDL: word): string;
var s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
then s := GetSpecialPath(CSIDL_APPDATA);
result := PChar(s);
end;
Дата: Воскресенье, 12.02.2012, 00:55 | Сообщение # 7
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
Товарищи, а что если попробовать вклиниться в какой-нить легально автозапускающийся файл и чуть его модифицировать, чтоб он запускал троя??? Можно ли вообще изменить уже запущенный экзешник??? Где-то на wasm.ru видел как читать из занятого системой файла, а вот как записать и что именно... Вот это интересней... Давайте подумаем на эту тему вместе.
Дата: Воскресенье, 12.02.2012, 11:46 | Сообщение # 8
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Quote
Можно ли вообще изменить уже запущенный экзешник???
Изменить можно только его память. И после того, как он закроется все изменения пропадут. Проще будет пропатчить в exe шнике что-нить чтоб запускал троян. Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Воскресенье, 12.02.2012, 11:47
sk0rpi0n, C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Автозагрузка
обычно этот путь такой Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
ну например можно поискать некоторые другие способы решения тех же задач но уже с использованием каких либо функций напрямую, я же например решил проблему добавления нового юзера через API функции, теперь антивири не реагируют, попробуй поискать, те что не проверяются антивирусным софтом, думаю можно что то найти...
Дата: Понедельник, 16.04.2012, 05:14 | Сообщение # 14
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 253
Статус: Offline
Зарегистрировался чтобы только просмотреть этот код
К сожалению он будет обнаруживаться многими антивирусами, т.к. исходной файл совпадает с копируемым байт в байт, антивирусы тут же это обрубают. Так что функция CopyFile тут слишком устаревшая.
На данный момент проактивная защита антивирусов очень мощная, и обойти ее крайне сложно. Но было бы очень интересно увидеть новые варианты внедрений в автозагрузку. Например если кто помнит в Windows 98/ME в файле win.ini вверху была строчка Run=
Вот что пропишешь после этой строчки - то и запустится.
Дата: Понедельник, 16.04.2012, 12:06 | Сообщение # 15
Администратор
Сообщений: 904
Статус: Offline
Цитата (Don_Diego)
К сожалению он будет обнаруживаться многими антивирусами, т.к. исходной файл совпадает с копируемым байт в байт, антивирусы тут же это обрубают. Так что функция CopyFile тут слишком устаревшая.
Дата: Понедельник, 16.04.2012, 15:37 | Сообщение # 17
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 253
Статус: Offline
Quote (dolphin)
Можно написать свою, когда то так и делал в червях
Способ конечно хорош, но если честно он по функциональности ничем не отличается от CopyFile. Хотя действительно, он более гибкий в настройках, но его нужно немного модифицировать, например дописать вконец файла какие-то строки, функциональность ведь не изменится, а размер - да
Ведь проактивная защита смотрит не по сигнатурам что у нас написано: CopyFile или C (в данном случае), а смотрит на действия нашей программы. Вообще была у меня идея замаскировать по функциональности под обычную программу, но к сожалению до конца ее так и не довел...
Дата: Воскресенье, 22.04.2012, 19:55 | Сообщение # 18
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
опять же можно попробовать воспользоваться не базовыми функциями а более обширными, которые используют в написании нового софта, ведь на них антивири не ругаются, типа API функций или ими подобных..,к сожалению я не вкуррррсе какие именно, но думаю антивири успокоются, а так да, идея хорошая
Сообщение отредактировал xXxSh@dowxXx - Воскресенье, 22.04.2012, 19:56
Дата: Понедельник, 23.04.2012, 22:53 | Сообщение # 19
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Одно дело обмануть сигнатурный сканер и эвристеку, а другое дело эмулятор. Ему по барабану как заменить функцию. Факт копирование он установит. И он будет учтён...
Дата: Понедельник, 23.04.2012, 23:16 | Сообщение # 20
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Но ведь на сегодняшний день не все способы копирования палит евристика, более сложные методы они просто не берут в расчет, разве не так?
по крайней мере мне как то попадался софт который использовал (возможно даже свой собственный) методы копирования не палящиеся антивирями..,тут опять же зависит от того как намудрить с кодом, я имею ввиду не с точки зрения мусора а с точки зрения методов и функционала...
капец много слов, мало дела, пошел кодить дальше
готовый код обещаю выложить
function RegAdd(Root: HKEY; KeyPath: PChar; Key_Type: cardinal; KeyName, Value: PChar): Boolean;
var
Key: HKEY;
begin
RegAdd:=false;
if RegOpenKeyEx(Root, KeyPath, 0, $0004 or $0002, Key)=0 then
begin
if RegSetValueEx(Key, KeyName, 0, Key_Type, Value,
lstrlen(PChar(Value))+Length(Value))>0 then
Result:=true;
RegCloseKey(Key);
end;
end;
function RegGetValue(RKey: HKey; Key, N: PChar; var Res: string): integer;
var
HK: HKey;
DT, DS: DWORD;
begin
Result:=0;
if RegOpenKeyEx(RKey, Key, 0, $0001, HK)<>0 then exit;
if (RegQueryValueEx(HK, N, nil, @DT, nil, @DS)<>0)or(DT<>1) then
begin
RegCloseKey(HK);
Exit;
end;
SetString(RES, nil, (DS-1));
RegQueryValueEx(HK, N, nil, @DT, (PByte(@RES[1])), @DS);
RegCloseKey(HK);
Result:=(length(RES));
end;
function RegDel(Root: HKEY; Key: PChar): Boolean;
begin
RegDel:=false;
if RegDeleteKey(Root, Key)>0 then
Result:=true;
end;
P.S Выдрал из своего проекта.
Сообщение отредактировал Волк-1024 - Вторник, 24.04.2012, 17:28
Я конечно прошу прощения, что прерываю Вашу беседу, НО есть такие программы типа: Uninstall Tool, CCleaner, etc, есть в конце концов "msconfig" и во всех этих программах есть вкладки "Автозагрузка"! Ваши решения помогают скрыть эту информацию или где?