ekran belleğinin alınmasının önlenmesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
ekran belleğinin alınmasının önlenmesi
arkadaşlar mrb,
yerel ağda bulunan makinaların neler yaptığını izleyen programları yanıltmak amacıyla, ekranın görüntüsünün yerine sabit bir resim ya da görüntüyü yollamak mümkün olabilecek bir prg yazılabilirimi?
yerel ağda bulunan makinaların neler yaptığını izleyen programları yanıltmak amacıyla, ekranın görüntüsünün yerine sabit bir resim ya da görüntüyü yollamak mümkün olabilecek bir prg yazılabilirimi?
- Diğer bir başlıkta PrtScrn tuşunu (clipboard'a ekranın bir resmini çekip kopyalar) takip ederek iptal edip - edememek üzerine konuşmuştuk. Arkadaşımız programındaki formların resminin çekilmesini engellemek istiyordu. Ref: viewtopic.php?t=19230#110339
- Seninki de benzer bir konu.
- Orada bunun mümkün olmadığını söylemiştim ama şimdi aklıma bir fikir geldi. Her iki başlığa da aynı fikri yazmaktansa buraya cevabı yazıp oraya bu linki refere etmek en doğrusu sanırım...
- Yapacağımız şey Clipboard'a yakalanan bir Bitmap var mıyı takibe almak... Bunun için WM_ mesajlarını kullanıcaz... Bu metodu daha önce DivXTurk projemde web sayfasındaki film afişinin resmini sağ mouse ile kopyala deyince yakalamak için kullanmıştım..
Unutmadan Uses ClipBrd;
Projemizin her tarafından erişebileceğimiz Global nitelikte iki tane değişkenimiz var.
- Screen Capture yapıldığında ekran yerine gönderilecek fake ekran
Ne zaman clipboard'a bir Bitmap kopyalansa silinerek yerine bizim istediğimiz resmimiz eklenecek.

- Hepsi bu afiyet olsun..
- Seninki de benzer bir konu.
- Orada bunun mümkün olmadığını söylemiştim ama şimdi aklıma bir fikir geldi. Her iki başlığa da aynı fikri yazmaktansa buraya cevabı yazıp oraya bu linki refere etmek en doğrusu sanırım...
- Yapacağımız şey Clipboard'a yakalanan bir Bitmap var mıyı takibe almak... Bunun için WM_ mesajlarını kullanıcaz... Bu metodu daha önce DivXTurk projemde web sayfasındaki film afişinin resmini sağ mouse ile kopyala deyince yakalamak için kullanmıştım..
Unutmadan Uses ClipBrd;
Kod: Tümünü seç
private
{ Private declarations }
procedure WMDrawClipboard(var Msg: TMessage);
message WM_DRAWCLIPBOARD;
procedure WMChangeCBChain(var Msg: TMessage);
message WM_CHANGECBCHAIN;
Kod: Tümünü seç
Var
xBizimKontrolumuz : Boolean = False;
xClipBoard : THandle;

Kod: Tümünü seç
Procedure SuprizYap();
Var
Resim : TBitmap;
Clip : TClipBoard;
Mesaj : String;
begin
Mesaj := 'Ekran Görüntüsü Almak Yasaktır...!';
Resim := TBitmap.Create;
Resim.Width := 1024;
Resim.Height := 768;
Resim.Canvas.Brush.Color := clBlue;
Resim.Canvas.Font.Color := clYellow;
Resim.Canvas.Font.Name := 'Times New Roman';
Resim.Canvas.Font.Size := 48;
Resim.Canvas.TextOut( (Resim.Width-Resim.Canvas.TextWidth(Mesaj)) div 2 , (Resim.Height- Resim.Canvas.TextHeight(Mesaj)) div 2, Mesaj);
Clip := TClipBoard.Create;
Clip.Assign( Resim );
Clip.Free;
Resim.Free;
end;
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := True;
FormStyle := fsStayOnTop;
xClipBoard := SetClipboardViewer(Handle);
end;
Kod: Tümünü seç
procedure TForm1.FormDestroy(Sender: TObject);
begin
ChangeClipboardChain(Handle, xClipBoard);
end;
Kod: Tümünü seç
procedure TForm1.WMChangeCBChain(var Msg: TMessage);
var
Remove, Next: THandle;
begin
Remove := Msg.WParam;
Next := Msg.LParam;
with Msg do
if xClipBoard = Remove
then xClipBoard := Next
else if xClipBoard <> 0
then SendMessage(xClipBoard, WM_ChangeCBChain, Remove, Next)
end;
Kod: Tümünü seç
procedure TForm1.WMDrawClipboard(var Msg: TMessage);
begin
If xBizimKontrolumuz then Exit;
// Uses Clipbrd;
if Clipboard.HasFormat(CF_BITMAP ) then begin
xBizimKontrolumuz := True;
Caption := Format('Yakaladik %s', [DateTimeToStr(Now)]);;
SuprizYap();
xBizimKontrolumuz := False;
end else
end;



- Hepsi bu afiyet olsun..
mkysoft arkadaşında dediği gibi en iyi çözüm 2 ekran kartı kullanmak olabilir.
Terminal izleme programlarının ekran görüntüsü almak için print screen tuşunu kullandıklarını bende düşünmüyorum.
Ya da ekran kartının özelliklerini kullanarak birden fazla ekran şeklinde kurulum yaparak bu durumu çözebilirmiyiz.
Terminal izleme programlarının ekran görüntüsü almak için print screen tuşunu kullandıklarını bende düşünmüyorum.
Ya da ekran kartının özelliklerini kullanarak birden fazla ekran şeklinde kurulum yaparak bu durumu çözebilirmiyiz.
Birden fazla ekran olayı sanaldır windowsta. Sanırım bu işide NVIDA sürücleri yapıyordu. 2 çıkışlı bir ekran kartına yada 2. bir ekran kartına ihtiyacınız olabilir. Programı kapatmayı neden düşünmüyorsunuz? Eğer programı kapatmanız sorun oluyorsa şunları yapmayı deneyin.
1. TCP/IP paketlerini loglayan programlar var. Screenshot programı hangi portu kullanıyorsa onu loglayın. Sonra kendiniz bir program yazın. Şu veri gelirle şu veriyi gönder gibi.
2. Reserve engeniring den anlıyorsanız şöyle birşey yapabilirsiniz. Program screenshot yaptından sonra bunu stream olarak belleğe kaydediyordur. Kaydettiği bu adresi bularak bir loader yardımıyla programı yüklemeyi ve o adrese hep aynı resmi koymayı deneyebilirsiniz.
Bu işi çözmenin en güzel tekniği iş değiştirmektir kanımca. İşi yokuşa sürmeye gerek yok. CV'leri güncel tutalım yeter.
(Daha benzer bişi yapmıştım)
1. TCP/IP paketlerini loglayan programlar var. Screenshot programı hangi portu kullanıyorsa onu loglayın. Sonra kendiniz bir program yazın. Şu veri gelirle şu veriyi gönder gibi.

2. Reserve engeniring den anlıyorsanız şöyle birşey yapabilirsiniz. Program screenshot yaptından sonra bunu stream olarak belleğe kaydediyordur. Kaydettiği bu adresi bularak bir loader yardımıyla programı yüklemeyi ve o adrese hep aynı resmi koymayı deneyebilirsiniz.
Bu işi çözmenin en güzel tekniği iş değiştirmektir kanımca. İşi yokuşa sürmeye gerek yok. CV'leri güncel tutalım yeter.
(Daha benzer bişi yapmıştım)