Zrzut ekranu z bezpiecznym pulpitem UAC

Odpowiedz Nowy wątek
2011-07-10 17:13
Shooter
0

Jak zrobić zrzut ekranu z bezpiecznym pulpitem (secure desktop) UAC w Windows 7?

Pozostało 580 znaków

2011-07-10 19:58
0

w zamierzeniu się nie da


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<

Pozostało 580 znaków

2011-07-10 20:30
Shooter
0

Da się, da. Odpal sobie TeamViewera i za jego pomocą zdalnie uruchom np. instalke lub program który odpala się poprzez UAC.
Ale teraz interesuje mnie to co jest pod maską. Więc jak ugryźć ten problem?

Pozostało 580 znaków

2011-07-10 20:47
Shooter
0

Tu są fajne przykłady jak tworzyć swoje bezpieczne pulpity: http://blog.developex.com/?p=930
Niestety jeszcze nie doszedłem jak robić zrzuty z takich pulpitów.

Pozostało 580 znaków

2011-07-10 21:26
0
Shooter napisał(a)

Da się, da. Odpal sobie TeamViewera i za jego pomocą zdalnie uruchom np. instalke lub program który odpala się poprzez UAC.
Ale teraz interesuje mnie to co jest pod maską. Więc jak ugryźć ten problem?

no teraz nie sprawdzę bo siedzę na xp
a TeamViewer pokazuje to okno czy to co jest pod spodem?


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<

Pozostało 580 znaków

2011-07-11 09:02
Shooter
0

Widać wszystko. Widać komunikat "Ten program chce wprowadzić ble ble ble...". Widać przycieminienie pulpitu i to co się pod nim znajduje, a nie jest zakryte przez komunikat.
Zastanawiam się czy mają z tym coś wspólnego funkcje OpenDesktop, OpenInputDesktop lub CreateDesktop.

Pozostało 580 znaków

2011-07-15 20:27
Shooter
0

Ma ktoś pomysł jak to ugryźć?

Pozostało 580 znaków

2011-07-19 19:03
Shooter
0

Kto wie czemu poniższy kod na Windows 7 robi czarne zrzuty ekranu?

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;
 
type
  TCopyDesk = class(TService)
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    procedure ServiceExecute(Sender: TService);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceShutdown(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
  private
    procedure CopyScreen(const Index: Integer);
  public
    function GetServiceController: TServiceController; override;
  end;
 
var
  CopyDesk: TCopyDesk;
 
implementation
 
{$R *.DFM}
 
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  CopyDesk.Controller(CtrlCode);
end;
 
procedure TCopyDesk.CopyScreen(const Index: Integer);
const
  DefaultWindowStation = 'WinSta0';
  DefaultDesktop = 'Default';
  CAPTUREBLT = $40000000;
  WINSTA_ALL_ACCESS = $0000037f;
var
  Bmp: TBitmap;
  hwinstaSave: HWINSTA;
  hdeskSave: HDESK;
  hwinstaUser: HWINSTA;
  hdeskUser: HDESK;
  dwThreadId: DWORD;
  hdcScreen : HDC;
  hdcCompatible : HDC;
  hbmScreen : HBITMAP;
begin
  hwinstaUser:= OpenWindowStation(DefaultWindowStation, FALSE, WINSTA_ALL_ACCESS);
 
  hwinstaSave:= GetProcessWindowStation;
  if hwinstaUser = 0 then
  begin
    OutputDebugString(PChar('OpenWindowStation failed' + SysErrorMessage(GetLastError)));
    exit;
  end;
 
  if not SetProcessWindowStation(hwinstaUser) then
  begin
    OutputDebugString('SetProcessWindowStation failed');
    exit;
  end;
 
//  hdeskUser:= OpenDesktop(DefaultDesktop, 0, FALSE, MAXIMUM_ALLOWED);
  hdeskUser:= OpenInputDesktop(0, False, MAXIMUM_ALLOWED);
  if hdeskUser = 0 then
  begin
    OutputDebugString('OpenDesktop failed');
    SetProcessWindowStation (hwinstaSave);
    CloseWindowStation (hwinstaUser);
    exit;
  end;
  dwThreadId:= GetCurrentThreadID;
 
  hdeskSave:= GetThreadDesktop(dwThreadId);
 
  if not SetThreadDesktop(hdeskUser) then
  begin
    OutputDebugString(PChar('SetThreadDesktop' + SysErrorMessage(GetLastError)));
    Exit;
  end;
 
  try
    hdcScreen := GetDC(0);//GetDC(GetDesktopWindow);//CreateDC('DISPLAY', nil, nil, nil);
    hdcCompatible := CreateCompatibleDC(hdcScreen);
    hbmScreen := CreateCompatibleBitmap(hdcScreen,
                         GetDeviceCaps(hdcScreen, HORZRES),
                         GetDeviceCaps(hdcScreen, VERTRES));
    SelectObject(hdcCompatible, hbmScreen);
    bmp:= TBitmap.Create;
    bmp.Handle:= hbmScreen;
    BitBlt(hdcCompatible, 0,0, bmp.Width, bmp.Height, hdcScreen, 0,0, SRCCOPY OR CAPTUREBLT);
    Bmp.SaveToFile('C:\Users\Public\Nowy folder2\' + IntToStr(Index) + '.bmp');
  finally
    DeleteDC(hdcScreen);
    DeleteDC(hdcCompatible);
    Bmp.Free;
    Bmp:= nil;
  end;
  SetThreadDesktop(hdeskSave);
  SetProcessWindowStation(hwinstaSave);
  if hwinstaUser <> 0 then
    CloseWindowStation(hwinstaUser);
  if hdeskUser <> 0 then
    CloseDesktop(hdeskUser);
end;
 
function TCopyDesk.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;
 
procedure TCopyDesk.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
  while not Terminated do
  begin
    Sleep(10);
    ServiceThread.ProcessRequests(False);
  end;
end;
 
procedure TCopyDesk.ServiceExecute(Sender: TService);
var
  Index: Integer;
begin
  Index:= 0;
  while not Terminated do
  begin
    CopyScreen(Index);
    Inc(Index);
    ServiceThread.ProcessRequests(False);
//    Sleep(1000);
//    if Index = 4 then
      DoStop;
  end;
end;
 
procedure TCopyDesk.ServicePause(Sender: TService; var Paused: Boolean);
begin
  Paused:= True;
end;
 
procedure TCopyDesk.ServiceShutdown(Sender: TService);
begin
  Status:= csStopped;
  ReportStatus();
end;
 
procedure TCopyDesk.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Started:= True;
end;
 
procedure TCopyDesk.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  Stopped:= True;
end;
end.

Pozostało 580 znaków

2011-07-19 19:47
O_o
0

Bez czytania powiem: Bo przy ekranie UAC pulpit "nieistnieje".
Wczytaj obraz wynikowy który karta graficzna podaje na ekran.


O̾..͠o

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0