2013-04-10 16 views
6

Come posso creare una finestra che è completamente visibile all'utente ma non è visibile negli screenshot. So che questo è possibile dal momento che Neo SafeKeys (una tastiera su schermo per sconfiggere i keylogger) non appare negli screenshot del software di keylogging che ho installato.C# - Finestra trasparente per sconfiggere i keylogger

Per darvi un'idea, la finestra è completamente visibile all'utente, tuttavia quando viene presa una schermata, la finestra Neo SafeKeys non appare affatto (come se non esistesse nemmeno).

Neo SafeKeys afferma di utilizzare un livello di protezione invisibile sopra la finestra per proteggersi dagli screenshot. Ho cercato su Internet per vedere come posso riprodurre questo, senza alcun risultato. Qualcuno sa come può essere eseguito (finestre visibili all'utente ma invisibili negli screenshot)?

+0

I'ts solo una supposizione, ma forse si deve prendere evento screenshot e finestra sparire a destra prima di esso? –

+0

Questo può essere fatto usando C#? O richiede una programmazione di basso livello come C? – Matthew

+0

È possibile utilizzare C# indirettamente tramite interop. –

risposta

4

Quello che puoi fare è impedire che il tasto PrtScn faccia qualcosa quando viene premuto. Dai un'occhiata a this article mentre ti mostra come farlo.

Questo articolo sta eliminando gli appunti. Quello che puoi fare invece è catturare l'immagine dello schermo e rimuovere digitalmente la tua applicazione, quindi inserire l'immagine rivista negli appunti, dando così l'effetto di rendere trasparente la tua finestra.

Inoltre, è possibile dare un'occhiata a this SO question che offre un modo alternativo per rendere la finestra semplicemente "blu", anche se non è facile da fare.

+0

Grazie per la vostra risposta. Tuttavia, cosa succede se un Registratore di tasti utilizza un altro software di acquisizione schermo invece del solito schermo? – Matthew

+3

@Matthew - Semplicemente non c'è un modo per proteggersi al 100% da questo. Anche se hai trovato una soluzione, qualcuno potrebbe sempre scattare una foto del loro monitor con una fotocamera digitale – Icemanind

+0

Grazie per la risposta. Sono pienamente consapevole del problema della fotocamera digitale. Tuttavia, mi sto concentrando esclusivamente sui keylogger che acquisiscono screenshot sul proprio computer. – Matthew

1

Nell'applicazione C# è possibile impostare un hook globale per monitorare gli eventi della tastiera. Quindi la tua applicazione diventa il gestore globale per gli schermi di stampa. Ora se un'altra schermata gestita da un'applicazione viene stampata in modo nativo, non è possibile fermarla, ma tutto ciò che passa attraverso Windows, è possibile ottenere.

L'hook WM_KEYBOARD_LL è uno dei pochi hook globali che possono essere utilizzati nel codice gestito perché non richiede l'inserimento di una DLL in ogni target.

Per qualche codice è possibile visitare qui:

Adam's Blog

Tenete a mente che queste sono ganci globali, in modo che si desidera assicurarsi che niente altro (altre applicazioni) vengono effettuate. Li ho usati in passato mentre ospitavamo mostrando un punto di forza in un'applicazione su cui abbiamo lavorato. Fondamentalmente non volevamo che l'utente invocasse alcun menu powerpoint o scorciatoie da tastiera, così abbiamo usato un hook globale. Abbiamo sempre controllato per vedere se gli utenti era in una certa area (schermo) e nella nostra applicazione, altrimenti avremmo effettuare altre funzionalità applicazioni

Microsoft Information (compreso il nostro!):

Hooks Overview

+0

Grazie per la risposta – Matthew

4

Qualcuno sa come può essere eseguito (finestre visibili all'utente ma invisibili negli screenshot)?

Utilizzare DirectX per eseguire il rendering direttamente sul dispositivo.

+0

Conosci qualche utile guida che potrebbe tornare utile? – Matthew

+0

Che tipo di app stai cercando di costruire? Disegnare una tastiera su schermo è relativamente semplice in DirectX, ma se stai cercando di creare qualcosa che assomigli ad una normale app di Windows con i controlli di WinForms (caselle di modifica, elenchi a discesa, ecc.) Potrebbe essere convoluta per ottenere ciò che desideri. – LouD

+0

Voglio creare una tastiera su schermo per essere visualizzata in un sito web. Dovrebbe essere ovviamente composto da una serie di pulsanti. Non penso che aggiungerò scatole a discesa e simili. La cosa più importante tuttavia è che è trasparente per gli screenshot. – Matthew

1

C'è questo ..... visual cryptography

esempio vivo here

Ma questo potrebbe essere facilmente codificato contro prendendo screenshot multipli e la posa overeachother e tale ...

+0

Grazie per la risposta. – Matthew

0

Se si utilizza Windows, e si può evitare che accade screenlogging , puoi implementare una bella soluzione come un desktop virtuale per incorporare il tuo processo. Quando un processo è in esecuzione all'interno di un desktop virtuale, è possibile ignorare uno strumento screenlogger che gira su A32 win32.

Dai un'occhiata a questo articolo in modo da poter dare un'occhiata a come implementare una bella soluzione per scape dal monitoraggio di schermo e tastiera.

http://www.codeproject.com/Articles/7392/Lock-Windows-Desktop?fid=62485&select=3139662&fr=101#xx0xx

+0

Probabilmente dovresti riepilogare più link in questa risposta. – michaelb958

+0

Sì, hai ragione, questo esempio si basa sul concetto di desktop virtuale, questa semplice tecnica ha la magia di dare un ambiente isolato in cui qualsiasi keylogger o screenlogger che funziona su WIN32 Api verrà bloccato e non funzionerà come previsto. Quando un processo viene eseguito su un desktop virtuale, è possibile ottenere un qualche tipo di protezione contro il tipico malware, ma cosa succede se quel malware funziona all'interno del kernel, ad esempio Elite Keylogger? Ok, la soluzione non funzionerà e sarà necessario creare, ad esempio, un messaggio Driver per crittografare i tasti premuti prima che un keylogger possa rilevare qualsiasi messaggio pulito. – user2419507

Problemi correlati