Torna indietro   Hardware Upgrade Forum > Software > Programmazione

I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers
MSI continua ad investire nel proporre schermi pensati per rispondere alle esigenze dei videogiocatori, utilizzando la quinta generazione di tecnologia QD-OLED sviluppata da Samsung. Il modello MPG 341CQR QD-OLED X36 è lpultima novità al debutto in concomitanza con il CES 2026, uno schermo curvo di ampia risoluzione pensato per i videogiocatori più esigenti
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-12-2008, 22:57   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[C#]Creare keylogger benefico

Ciao,
eccomi ritornato.
Avrei bisogno di capire come si fa un keylogger in C#.
Sottolineo il fatto che è a scopo benefico: mi piacerebbe aggiungere una semplice applicazione al portableapps scaricabile da www.portableapps.com (non renderla scaricabile eh! Non ambisco a tanto. Solo per uso proprio o quasi) che permetta di avere la stessa funzione di avvio di programmi con i tasti a scelta rapida che offre windows (in modo che se uno vuole avviare da chiavetta alcuni programmi su un pc diverso possa farlo comunque in questo modo) e poi anche per una cosa che trovo scomoda. Premetto che per quest'ultima non voglio fare un bel lavoro ma semplicemente qualcosa che mi venga utile: perchè di copia e incolla ce n'è solo uno dentro windows? Spesso mi trovo a dover copiare 2 parole allora ho pensato che se una per esempio preme il tasto ctr e contemporaneamente scrive la parola quando poi si preme alt + a (o qualcosa altro giusto per fare un esempio) la parola viene riscritta simulando la pressione di tasti su tastiera.
La cosa che non so come risolvere è il fatto che il keylogger non deve utilizzare la cpu appieno come fanno alcuni codici disponibili in rete. Su pierotofy c'è un esempio ma non lo capisco bene.
Scusate per l'italiano un po' correggiuto
ps: se non mi volete aiutare perchè trovate "la scusa" (tra virgolette perchè non lo è ) poco credibile siete liberi di non farlo
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2008, 23:12   #2
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Prova a dare un'occhiata qui.

Dimmi se funziona, al momento non ho installato l'sdk.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2008, 23:23   #3
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
devo compilarlo come console application giusto?
Comunque ho questo errore:
Errore 1 Il tipo o il nome dello spazio dei nomi 'Windows' non esiste nello spazio dei nomi 'System'; probabilmente manca un riferimento a un assembly C:\Users\Matteo\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 3 14 ConsoleApplication1
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 00:32   #4
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
scusa ma che versione del framework usi?che so io (anche se non sono per niente ferrato in c#) dalla 2.0 è così, difficile che per la 1.x non lo sia stato, incredibile se dalla 3 l'hanno cambiato!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 10:25   #5
dasdsasderterowaa
Registered User
 
Iscritto dal: Mar 2007
Messaggi: 1239
Ho provato il codice segnalato: a me funziona.

Ho le SDK 2.0 e 3.5 installate, e il codice l'ho provato direttamente da Visual C# 2008 Express.

L'errore che ti dà è dovuto al fatto che manca il riferimento "System.Windows.Form" nella soluzione creata (di tipo Console Application)

Devi fare così:
Vai nel menù "Progetto" e scegli la voce "Aggiungi riferimento"
Nella finestra che appare, nel tab ".NET", scegli "System.Windows.Form"
Quindi premi "OK".
Fatto.

Ora basta che rigeneri la soluzione per vedere all'opera il codice
dasdsasderterowaa è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 10:48   #6
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da Cloudis Guarda i messaggi
Ho provato il codice segnalato: a me funziona.

Ho le SDK 2.0 e 3.5 installate, e il codice l'ho provato direttamente da Visual C# 2008 Express.

L'errore che ti dà è dovuto al fatto che manca il riferimento "System.Windows.Form" nella soluzione creata (di tipo Console Application)

Devi fare così:
Vai nel menù "Progetto" e scegli la voce "Aggiungi riferimento"
Nella finestra che appare, nel tab ".NET", scegli "System.Windows.Form"
Quindi premi "OK".
Fatto.

Ora basta che rigeneri la soluzione per vedere all'opera il codice
tanto per sapere, la direttiva "using" non basta?!? cosa succede quando aggiungi un riferimento?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 11:57   #7
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
veramente grandioso funziona!!!!
Ora ho due domande:
effettivamente, siccome è diverso, cosa cambia da aggiungere una direttiva using o aggiungere un riferimento?
Seconda domanda: se ho capito bene il programma "scopre" i caratteri premuti prendendoli dall'lparam. Giusto? Cioè quando wparam "segnala" il fatto che è stato premuto un tasto allora il progra,mma preleva il codice ascii del tasto dall'lparam. Ho capito bene?
Detto questo arriva la parte per le anime buone: qualcuno mi può spiegare questo pezzo di codice?
Codice:
   private const int WH_KEYBOARD_LL = 13;
    private const int WM_KEYDOWN = 0x0100;
    private static LowLevelKeyboardProc _proc = HookCallback;
    private static IntPtr _hookID = IntPtr.Zero;

    public static void Main()
    {
        _hookID = SetHook(_proc);
        Application.Run();
        UnhookWindowsHookEx(_hookID);
    }

    private static IntPtr SetHook(LowLevelKeyboardProc proc)
    {
        using (Process curProcess = Process.GetCurrentProcess())
        using (ProcessModule curModule = curProcess.MainModule)
        {
            return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
                GetModuleHandle(curModule.ModuleName), 0);
        }
    }

    private delegate IntPtr LowLevelKeyboardProc(
        int nCode, IntPtr wParam, IntPtr lParam);
Inoltre in questa riga
Codice:
int vkCode = Marshal.ReadInt32(lParam);
cos'era il marshal?
Spero in qualche anima buona
Grazie infinite
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 12:14   #8
dasdsasderterowaa
Registered User
 
Iscritto dal: Mar 2007
Messaggi: 1239
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
tanto per sapere, la direttiva "using" non basta?!? cosa succede quando aggiungi un riferimento?
Quando si creano le soluzioni, "using" non è sufficiente: è necessario aggiungere il riferimento alla soluzione.

Se invece si programma direttamente su un file di testo, senza creare soluzioni, allora "using" è necessario e sufficiente.

Ad esempio: creiamo un file di testo "pippo.cs" e ci incolliamo dentro quel codice. Per compilarlo, è sufficiente il comando "csc pippo.cs" dal prompt dei comandi SDK: verrà generato l'eseguibile "pippo.exe"

@Mattyfog:
sorry, non sono un programmatore, per cui non so aiutarti.
Sono soltanto un appassionato di C#, e ogni tanto ci "gioco"

Ultima modifica di dasdsasderterowaa : 07-12-2008 alle 12:17.
dasdsasderterowaa è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 12:44   #9
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
ok grazie
Per la spiegazione del codice aspetto qualcun altro
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 14:53   #10
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
veramente grandioso funziona!!!!
Ora ho due domande:
effettivamente, siccome è diverso, cosa cambia da aggiungere una direttiva using o aggiungere un riferimento?
Seconda domanda: se ho capito bene il programma "scopre" i caratteri premuti prendendoli dall'lparam. Giusto? Cioè quando wparam "segnala" il fatto che è stato premuto un tasto allora il progra,mma preleva il codice ascii del tasto dall'lparam. Ho capito bene?
Detto questo arriva la parte per le anime buone: qualcuno mi può spiegare questo pezzo di codice?
Codice:
   private const int WH_KEYBOARD_LL = 13;
    private const int WM_KEYDOWN = 0x0100;
    private static LowLevelKeyboardProc _proc = HookCallback;
    private static IntPtr _hookID = IntPtr.Zero;

    public static void Main()
    {
        _hookID = SetHook(_proc);
        Application.Run();
        UnhookWindowsHookEx(_hookID);
    }

    private static IntPtr SetHook(LowLevelKeyboardProc proc)
    {
        using (Process curProcess = Process.GetCurrentProcess())
        using (ProcessModule curModule = curProcess.MainModule)
        {
            return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
                GetModuleHandle(curModule.ModuleName), 0);
        }
    }

    private delegate IntPtr LowLevelKeyboardProc(
        int nCode, IntPtr wParam, IntPtr lParam);
Inoltre in questa riga
Codice:
int vkCode = Marshal.ReadInt32(lParam);
cos'era il marshal?
Spero in qualche anima buona
Grazie infinite
Hook è un meccanismo che consente di agganciarsi(hook = gancio, aggancio) al flusso dei messaggi tra il sistema operativo e l'applicazione.
Bisogna creare una funzione hook(nel tuo caso è HookCallback) e agganciarla al flusso dei messaggi. Esistono due tipi di funzioni hook:

1) funzioni di sistema.
2) funzioni specifiche del programma.

Le prime consentono di intercettare tutti i messaggi che entrano nel sistema, le seconde solo i messaggi diretti all'applicazione.
Con una funzione hook specifica del programma, è possibile selezionare il tipo di messaggi che si vogliono ricevere.
Per esempio, ed è il caso del tuo codice, si può scegliere di intercettare solo i messaggi generati dalla tastiera.

Per installare una funzione hook, si utilizza la funzione API SetWindowsHookEx che utilizza quattro parametri:

1) il tipo di hook
2) un puntatore alla funzione hook che gestirà i messaggi catturati
3) un handle d'istanza del processo
4) l'id del thread da tenere sotto controllo(se NULL la funzione hook controlla tutti i thread).


Ultima modifica di Vincenzo1968 : 07-12-2008 alle 15:01.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 16:32   #11
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Ringrazio anch'io Cloudis e Vincenzo1968 per le spiegazioni.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 17:09   #12
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
Ringrazio anch'io Cloudis e Vincenzo1968 per le spiegazioni.


aggiungo il link a MSDN dove si possono trovare tutti i dettagli tecnici e un bell'esempio in C.

Gli hook generalmente vengono utilizzati dai debugger che hanno bisogno di catturare i messaggi indirizzati dal sistema a un'applicazione. Ma possono servire anche a fare qualche scherzetto agli amici.
Tempo fa ne ho scritto uno per un mio collega: ogni volta che apriva MS-Word e dava il comando File->Nuovo, invece di creare un nuovo file, Word mostrava una message box col messaggio "No, oggi non ho voglia di creare alcunché, mi dispiace".
Per controllare, dalla propria applicazione, i messaggi inviati ad altre applicazioni, è necessario piazzare la hook procedure in una dll e iniettare quest'ultima nello spazio di indirizzamento del processo esterno.
Il tutto è magistralmente spiegato nel bel libro di Jeffrey Richter:

Windows via C/C++


Ultima modifica di Vincenzo1968 : 07-12-2008 alle 18:06. Motivo: corretto errore grammaticale
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 17:24   #13
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Grazie!Aggiunti tra i bookmarks!

E' noto che non si finisce mai di imparare, ma qui sono miliardi le cose che dovrei/vorrei ancora sapere!!!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2008, 18:12   #14
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
grazie di cuore
ora mi sa che aprirò un altro topic tra poco per chiedere altre info
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
La Russia prosegue lo sviluppo di reatto...
Roscosmos: da quest'anno ci potrà...
Amazon, tutte le offerte e qualche novit...
Sedie gaming in offerta su Amazon: desig...
Scope elettriche in offerta Amazon: mode...
Ricarica EV fino a 22 kW spendendo poco:...
Costa solo 139€ ma fa tutto: Lefant M330...
Amazon Haul spinge sul risparmio: sconti...
Oral-B iO in offerta su Amazon: maxi sco...
I cosmonauti avrebbero riparato tutte le...
Artemis II: la NASA conferma il lancio d...
Il CEO di Embrak Studios difende l'uso d...
Il Trump Phone è sempre più un mistero: ...
OPPO ha svelato la serie Reno 15 "global...
Poste ID diventa a pagamento: l'identità...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v