hackme2.pdf

(213 KB) Pobierz
1. Jak zamknac system, uruchomic ponownie Windows lub komputer
procedure TForm1.Button1Click(Sender: TObject);
begin
ExitWindowsEx(funkcja,0);
end;
Jako funkcji mozemy uzyc jedna z piecu dostepnych opcji:
EWX_FORCE - wyjscie bez pytania
EWX_LOGOFF - wylogowanie
EWX_POWEROFF - wylaczenie komputera
EWX_REBOOT - restat
EWX_SHUTDOWN - stan oszczednosci
2. Jak wylaczyc skróty Windows'a CTRL+ALT+DEL CTRL+ESC ALT+TAB i.t.d.
Aby to zrobic zasymulujemy uruchomienie wygaszacza ekranu, tak aby oszukac Windows.
Nie dziala na Windows NT.
var wartosc:longbool;
begin
SystemParametersInfo(97,Word(True),@wartosc,0); //Wlacza blokade
end;
begin
SystemParametersInfo(97,Word(False),@wartosc,0); //Wylacza blokade
end;
3. Jak zmienic polozenie przycisku Start - Windows'a
var Uchwyt: THandle;
begin
Uchwyt := FindWindow(PChar('Shell_TrayWnd'), nil);
SetWindowPos(Uchwyt, HWND_TOPMOST, 200, 200, 60,
10,SWP_NOSENDCHANGING or SWP_FRAMECHANGED);
end;
4. Jak pobrac nazwy wszystkich czionek dostepnych w systemie
function Fonty(var LogFont: TLogFont; var TextMetric: TTextMetric; FontType: Integer;
Data: Pointer): Integer; stdcall;
begin
Form1.Memo1.Lines.Append(LogFont.lfFaceName);
Result := 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var DC:HDC;
begin
DC:=GetDC(0);
EnumFonts(DC,nil,@Fonty,nil);
end;
5. Jak zrobic liste otwartych okien w systemie
Na formie nalezy dodac komponent Memo oraz Button
function EnumChildProc(uchwyt:Hwnd;P:pointer):boolean;stdcall;
var
winname,cname:array[0..144]of char;
begin
result:=true;
getwindowtext(uchwyt,winname,144);
getclassname(uchwyt,cname,144);
Form1.Memo1.Lines.Append('POTOMEK: TEXT:'+strpas(winname)+' KLASA:
'+strpas(cname)+' '+IntToStr(uchwyt));
end;
function EnumWindowProc(uchwyt:HWnd;P:Pointer):boolean;stdcall;
var
winname,cname:array[0..144]of char;
begin
result:=true;
getwindowtext(uchwyt,winname,144);
getclassname(uchwyt,cname,144);
Form1.Memo1.Lines.Append('OKNO: TEXT:'+strpas(winname)+' KLASA:
'+strpas(cname)+' '+IntToStr(uchwyt));
enumchildwindows(uchwyt,@enumchildproc,0);
end;
procedure TForm1.Button1Click(Sender:TObject);
begin
EnumWindows(@enumwindowproc,0);
end;
6. Jak zrobic liste plików znajdujacych sie w pamieci
uses TLHelp32;
function ListaPlikow:TStringList;
var
Uchwyt : tHandle;
Proces : tProcessEntry32;
begin
Uchwyt:=CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);
Proces.dwSize:=SizeOf(Proces);
Result:=TStringList.Create;
if Integer(Process32First(Uchwyt,Proces))<>0 then
repeat
Result.Append(IntToStr(Proces.th32ProcessID)+': '+Proces.szExeFile);
until Integer(Process32Next(Uchwyt,Proces))=0;
closehandle(Uchwyt);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items:=ListaPlikow;
end;
Do Formy nalezy dodac komponent ListBox. Pierwsza kolumna to ProcessId, a druga to
nazwa pliku
7. Jak zabic dowolny proces w systemie
function ZabijProces(ProcessId:Integer):Boolean;
var
Uchwyt:tHandle;
begin
Uchwyt:=OpenProcess(PROCESS_TERMINATE,bool(0),ProcessId);
if TerminateProcess(Uchwyt,0) then result:=true else result:=false;
CloseHandle(Uchwyt);
end;
8. Jak zawiesic system
uses ShellApi;
ShellExecute(Handle,'open','rundll32','krnl386.exe,exitkernel',nil,SW_SHOWNORMAL);
//lub
ShellExecute(Handle,'open','rundll32','user,disableoemlayer',nil,SW_SHOWNORMAL);
9. Jak pobrac ProcessID znajac uchwt
var Proces:Integer;
GetWindowThreadProcessId(Handle, @proces);
10. Jak ukryc dzialanie programu w systemie
Oto prosta fukncji, która ukryje nasz program:
function registerserviceprocess(pid,blah:longint):boolean;
stdcall; external 'kernel32.dll' name 'RegisterServiceProcess';
pocedure TForm1.FormCreate(Sender: TObject);
begin
registerserviceprocess(0,1);
end;
11. Jak ukryc program by nie byl wyswietlany na pasku zadan ?
uses Windows;
var
ExtendedStyle:Integer;
begin
ExtendedStyle:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,
ExtendedStyle or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;
12. Jak rozpoznac wersje systemu operacyjnego ?
var
OS:TOsVersionInfo;
begin
OS.dwOSVersionInfoSize:=SizeOf(os);
GetVersionEx(os);
case os.dwPlatformId of
VER_PLATFORM_WIN32s: Form1.Caption:='WIN 3.1';
VER_PLATFORM_WIN32_WINDOWS: Form1.Caption:='WIN 95\98';
VER_PLATFORM_WIN32_NT: Form1.Caption:='WIN NT';
end;
end;
13. Jak uzyskac informacje o pamieci ?
var MS:TMemoryStatus;
begin
MS.dwLength:=sizeof(ms);
GlobalMemoryStatus(ms);
with ms,listbox1.items do begin
add('Pamiec uzywana : '+inttostr(dwMemoryLoad)+' %');
add('Calkowita pamiec fizyczna : '+inttostr(dwToTalPhys)+' bajtów');
add('Wolna pamiec fizyczna : '+inttostr(dwAvailPhys)+' bajtów');
add('Calkowita pamiec stronicowana : '+inttostr(dwTotalPageFile)+' bajtów');
add('Wolna pamiec stronicowana : '+inttostr(dwAvailPageFile)+' bajtów');
add('Calkowita pamiec wirtualna : '+inttostr(dwTotalVirtual)+' bajtów');
add('Wolna pamiec wirtualna : '+inttostr(dwAvailVirtual)+' bajtów');
end;
end;
14. Jak uzyskac informacje o katalogach : Windows'a, systemu i obecnego ?
Dodaj komponent TListBox do formy
var
Sciezka:array[0..MAX_PATH] of char;
begin
GetWindowsDirectory(Sciezka,sizeof(Sciezka)); //katalog Windows'a
ListBox1.Items.Add(Sciezka);
GetSystemDirectory(Sciezka,sizeof(Sciezka)); // katalog systemowy
ListBox1.Items.Add(Sciezka);
GetCurrentDirectory(sizeof(Sciezka),Sciezka); // katalog biezacy
ListBox1.Items.Add(Sciezka);
end;
15. Jak uzyskac informacje o konfiguracji sprzetowej ?
Dodaj komponent TListBox do formy
var Sys:TSystemInfo;
begin
GetSystemInfo(Sys);
with ListBox1.Items,Sys do begin
Add('Architektura procesora : Intel');
Add('Rozmiar strony : '+inttostr(dwPageSize)+' bajtów');
Add('Min. adres aplikacji : '+StrPas(lpMinimumApplicationAddress));
Add('Max. adres aplikacji : '+StrPas(lpMaximumApplicationAddress));
Add('Liczba procesorów : '+inttostr(dwNumberOfProcessors));
Add('Granulacja przydzialu : '+inttostr(dwAllocationGranularity)+' bajtów');
case wProcessorLevel of
3: Add('Poziom procesora : 80386');
4: Add('Poziom procesora : 80486');
5: Add('Poziom procesora : Pentium');
6: Add('Poziom procesora : Pentium Pro');
else Add('Poziom procesora : '+inttostr(wProcessorLevel));
end; end; end;
16. Jak odczytac zmienne srodowiskowe ?
Dodaj komponent TListBox do formy
var Zmienne:PChar;
begin
Zmienne:=GetEnvironmentStrings;
repeat
ListBox1.Items.Add(StrPas(Zmienne));
inc(Zmienne,StrLen(Zmienne)+1);
until Zmienne^=#0;
FreeEnvironmentStrings(Zmienne);
end;
17. Jak rozpoznac czy Windows jest 16-bitowy czy 32-bitowy ?
begin
{$IFDEF WINDOWS}
Form1.Caption:='Windows 16-bitowy';
{$ENDIF}
{$IFDEF WIN32}
Form1.Caption:='Windows 32-bitowy';
{$ENDIF}
end;
18. Jak pobrac sciezki do folderów Windows'a (Fonts, Pulpit, Menu Start ....) ?
Mozna czytac z rejestru Windows'a. Lecz latwiejsza metoda jest funkcja
SHGetSpecjalFolderPath(hwndOnwer: HWND; lpszPath: PChar; nFolder: Integer; fCreate:
BOOL): BOOL; stdcall;
uses ShlObj;
function GetP(Folder: Integer): String;
var FilePath: array[0..MAX_PATH] of char;
begin
SHGetSpecialFolderPath(0, FilePath, Folder , False);
Result:=FilePath;
end;
A to wrzuc do zdarzenia np Button1Click
ListBox1.Items.Add('AutoStart '+getp(CSIDL_STARTUP));
ListBox1.Items.Add('Dane aplikacji '+getp(CSIDL_APPDATA));
ListBox1.Items.Add('Kosz'+getp(CSIDL_BITBUCKET));
ListBox1.Items.Add('Ikony dla Panelu Sterowania '+getp(CSIDL_CONTROLS));
ListBox1.Items.Add('Cookies (Internet) '+getp(CSIDL_COOKIES));
ListBox1.Items.Add('Wirtualny pulpit '+getp(CSIDL_DESKTOP));
ListBox1.Items.Add('Fizyczny pulpit '+getp(CSIDL_DESKTOPDIRECTORY));
ListBox1.Items.Add('Mój komputer '+getp(CSIDL_DRIVES));
ListBox1.Items.Add('Ulubione '+getp(CSIDL_FAVORITES));
ListBox1.Items.Add('Czcionki '+getp(CSIDL_FONTS));
ListBox1.Items.Add('Historia (Internet) '+getp(CSIDL_HISTORY));
ListBox1.Items.Add('Wirtualny internet '+getp(CSIDL_INTERNET));
ListBox1.Items.Add('Tymczasowy internet '+getp(CSIDL_INTERNET_CACHE));
ListBox1.Items.Add('Otoczenie sieciowe '+getp(CSIDL_NETHOOD));
ListBox1.Items.Add('Dokumenty '+getp(CSIDL_PERSONAL));
ListBox1.Items.Add('Drukarki '+getp(CSIDL_PRINTERS));
ListBox1.Items.Add('Programy Menu Start '+getp(CSIDL_PROGRAMS));
ListBox1.Items.Add('Ostanio uzywane dokumenty '+getp(CSIDL_RECENT));
ListBox1.Items.Add('Wyslij do... '+getp(CSIDL_SENDTO));
ListBox1.Items.Add('Opcje Menu Start '+getp(CSIDL_STARTMENU));
ListBox1.Items.Add('Wzorce dokumentów '+getp(CSIDL_TEMPLATES));
19. Jak rozpoznac wersje Windows'a ?
Napiszmy oddzielna procedure:
procedure JakiWindows;
var
System : TOsVersionInfo;
begin
System.dwOSVersionInfoSize := SizeOf(System);
GetVersionEx(System);
case System.dwPlatformId of
VER_PLATFORM_WIN32s: Form1.Caption := 'WIN 3.1';
VER_PLATFORM_WIN32_WINDOWS: Form1.Caption := 'WIN 95\98';
VER_PLATFORM_WIN32_NT: Form1.Caption := 'WIN NT';
end;
end;
begin
JakiWindows;
end;
20. Jak uniaktywnic Alt+F4 ?
Zgłoś jeśli naruszono regulamin