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

Вниз

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

 
Shadow-UA   (2004-11-12 18:33) [0]

Как по простому перехватить комбинацию Ctrl+Alt+Del в Windows 2000, XP ?


 
kaZaNoVa ©   (2004-11-12 18:44) [1]

длл в винлогоне


 
Shadow-UA   (2004-11-12 18:49) [2]

--->
а по другому никак ?


 
DeadMeat ©   (2004-11-12 18:51) [3]

По простому?... Ну в WinXP при включенном Use welcome screen можно использовать низкоуровневый хук. В других случаях не могу сказать. Подозреваю, что только драйвером...

---
...Death Is Only The Begining...


 
DeadMeat ©   (2004-11-12 18:52) [4]

А вообще лучше пройдись поиском по этому сайту... Эта тема поднималась уже не раз...

---
...Death Is Only The Begining...


 
kaZaNoVa ©   (2004-11-12 19:04) [5]

длл в Winlogon - разве сложно ?
;))


 
Shadow-UA   (2004-11-12 19:07) [6]

--->
А ловушка через SetWindowsHookEx не пройдет ?
---> Shadow


 
kaZaNoVa ©   (2004-11-12 19:31) [7]

Shadow-UA   (12.11.04 19:07) [6]
выложить пример с DLL & Winlogon  ?


 
Shadow-UA   (2004-11-12 19:39) [8]

--->
kaZaNoVa ©   (12.11.04 19:31) [7] - пример с DLL & Winlogon
Можно!
---> Shadow


 
kaZaNoVa ©   (2004-11-12 19:52) [9]

Shadow-UA   (12.11.04 19:39) [8]
ок


 
kaZaNoVa ©   (2004-11-12 19:53) [10]

Dll
library Project1;

uses
 Windows,Messages;

Var
SavedProc: pointer;
ThreadID,id:cardinal;
ready:boolean;

function GethWnd: HWND;
begin
result:= FindWindow(Pchar("SAS Window class"),Pchar("SAS window") );
end;

function MyWndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
ready:=false;
  if  msg=WM_HOTKEY then  begin
// Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
if( MAKELONG( MOD_CONTROL or MOD_ALT, VK_DELETE ) = lParam )then
begin
MessageBoxEx(0,"Ctrl + Alt + Del","FIGA1", MB_DEFAULT_DESKTOP_ONLY, 0 );
result:= 0;
ready:=True;
end;

if( MAKELONG( MOD_CONTROL or  MOD_SHIFT, VK_ESCAPE ) = lParam ) then
begin
MessageBoxEx(0,"Ctrl + Shift + Esc","FIGA2", MB_DEFAULT_DESKTOP_ONLY, 0 );
result:= 0;
ready:=True;
end;
if not ready then result:= CallWindowProc(SavedProc, hWnd, Msg, wParam, lParam);
                            end
else  result:= CallWindowProc(SavedProc, hWnd, Msg, wParam, lParam);

end;

procedure SetWndProc(hWnd: HWND);
begin
SavedProc:= pointer(SetWindowLong(hWnd, GWL_WNDPROC, cardinal(@myWndProc)));
end;

procedure UnSetWndProc(hWnd: HWND);
begin
SavedProc:= pointer(SetWindowLong(hWnd, GWL_WNDPROC, cardinal(SavedProc)));
end;

function thread:integer; stdcall;
begin
SetWndProc(GethWnd);
sleep(60*1000);

//PostMessage(HWND_BROADCAST,WM_HOTKEY,0, MAKELONG(MOD_CONTROL or MOD_ALT, VK_DELETE ) ); //CAD

UnSetWndProc(GethWnd);
sleep(10);
thread:=0;
CreateThread(nil,0,GetProcAddress(GetModuleHandle("kernel32"),"FreeLibrary"),pointer(hInstance),0,id);
end;

begin
CreateThread(nil,0,@Thread,nil,0,ThreadID);
end.


Loader

program loader;
uses
 Windows,Tlhelp32;

function SetDebugPriv: Boolean;
var
Token: THandle;
tkp: TTokenPrivileges;
begin
Result := false;
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
begin
 if LookupPrivilegeValue(nil, PChar("SeDebugPrivilege"), tkp.Privileges[0].Luid) then
 begin
   tkp.PrivilegeCount := 1;
   tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   Result := AdjustTokenPrivileges(Token, false, tkp, 0, PTokenPrivileges(nil)^, PDWord(nil)^);
 end;
end;
end;

function Start(ProcessID: Cardinal; DllFileName: string): Boolean;
var
hProcess, hTh: THandle;
BytesWritten, ThreadID, DllNameLen: Cardinal;
LoadLibraryProc, MemPtr: Pointer;
ExitCode: DWord;
begin
Result := false;

SetDebugPriv();

hProcess := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or PROCESS_VM_WRITE,true, ProcessID);

if hProcess <> 0 then
begin
 DllNameLen := Length(DllFileName) + 1;
 
 MemPtr := VirtualAllocEx(hProcess, nil, DllNameLen, MEM_COMMIT, PAGE_READWRITE);

 if MemPtr <> nil then
 begin
   if WriteProcessMemory(hProcess, MemPtr, PChar(DllFileName), DllNameLen, BytesWritten) then
   begin
     LoadLibraryProc := GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");

     hTh := CreateRemoteThread(hProcess, nil, 0, LoadLibraryProc, MemPtr, 0, ThreadID);

     if hTh <> 0 then
     begin
       if (WaitForSingleObject(hTh, INFINITE) = WAIT_OBJECT_0) and
         GetExitCodeThread(hTh, ExitCode) then
         Result := ExitCode <> 0;

       CloseHandle(hTh);
     end;
   end;

   VirtualFreeEx(hProcess, MemPtr, 0, MEM_RELEASE);
 end;

 CloseHandle(hProcess);
end;

end;

function UpperCase(const S: string): string;
var I : Integer;
begin
 Result := S;
 for I := 1 to Length( S ) do
   if Result[ I ] in [ "a".."z" ] then
      Dec( Result[ I ], 32 );
end;
               

var
ProcessID: Cardinal;
DllName,ppp: string;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
ProcessID:=0;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);

ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
 begin
ppp:=FProcessEntry32.szExeFile;
if (pos("WINLOGON",UpperCase(ppp))>0) then  ProcessID:=FProcessEntry32.th32ProcessID;
ContinueLoop := Process32Next(FSnapshotHandle,  FProcessEntry32);
 end;
CloseHandle(FSnapshotHandle);

DllName:="A:\Test.dll";

if ProcessID <> 0 then Start(ProcessID, DllName);

end.


 
kaZaNoVa ©   (2004-11-12 19:54) [11]

Dll разместить на дискете под именем Test.dll
этот код блокирует CAD на 1 минуту


 
kaZaNoVa ©   (2004-11-12 19:55) [12]

потом длл самовыгружается  :))
:))))))))))))))))


 
kaZaNoVa ©   (2004-11-12 20:07) [13]

Shadow-UA
ну, как, работает ?
;)))


 
Shadow-UA   (2004-11-12 20:10) [14]

--->
kaZaNoVa ©   (12.11.04 19:55) [12]
спасибо, повтыкаю!
---> Shadow


 
kaZaNoVa ©   (2004-11-12 20:21) [15]

Shadow-UA   (12.11.04 20:10) [14]
и  драйвер нафиг не нужен :)))
только права админа нужны .. ;)


 
Shadow-UA   (2004-11-12 20:30) [16]

--->
kaZaNoVa ©   (12.11.04 20:21) [15]
А откуда ты взял this -> : (;; "SAS Window class", "SAS window" ;;)

только права админа нужны .. ;)
Права админа - фигня, я пишу под себя, типа с-му защиты ..;)
---> Shadow


 
kaZaNoVa ©   (2004-11-12 20:36) [17]

Shadow-UA   (12.11.04 20:30) [16]
да, фигня, забей, главное работает ;)))

а если серьёзно - нашёл на одном хак-сайте ;)))


 
Игорь Шевченко ©   (2004-11-12 21:22) [18]

Хочу еще раз напомнить, что сайт называется "Мастера Delphi", а не "Молодые западлостроители".



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

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

Наверх




Память: 0.51 MB
Время: 0.041 c
1-1102796522
Mega Mike
2004-12-11 23:22
2004.12.26
Рабоат функции или процедуры в фоновом режиме...


1-1102692366
hgd
2004-12-10 18:26
2004.12.26
Скажите про GPS


1-1102502874
mefisto
2004-12-08 13:47
2004.12.26
Вставка в ячейку DBGrid иконки 16х16 или Bitmap


1-1102849985
speed
2004-12-12 14:13
2004.12.26
select ... listbox


1-1102580428
Dysan
2004-12-09 11:20
2004.12.26
обратиться к процедуре зная только название в текстовом формате!