2010-06-25 1 views
5

Qualcuno può spiegare in che modo un programma si aggancia e modifica il comportamento di altri programmi in Windows?Come posso collegarmi ad altri programmi in Windows?

Com'è possibile? I programmi Windows non si proteggono da altri programmi che entrano nella loro memoria, ecc.? (Non conosco gli interni come funziona quindi ho appena detto "nella loro memoria" - Scommetto che è più complesso di quello.)

Anche Windows moderno come Windows 7 lo consente ancora?

Grazie, Boda Cydo

risposta

5

Esistono diversi modi per collegare e modificare il comportamento di altri programmi.

Ad esempio, è possibile scrivere direttamente nella memoria di un altro programma (WriteProcessMemory) oppure è possibile iniettare un thread nella memoria di un altro programma (CreateRemoteThread). Questo presume che tu abbia alcuni diritti per controllare quell'altro programma.

È inoltre possibile iniettare un gancio finestra tramite SetWindowsHookEx. Questo presume che tu stia correndo nella sessione dell'utente allo stesso livello di integrità del programma in cui ti stai iniettando.

Questo è ancora consentito per diversi motivi. Senza un modo per modificare il comportamento di altri programmi non sarebbe possibile implementare un debugger. Gli hook di Windows vengono utilizzati testando programmi, programmi di accessibilità, programmi che modificano l'aspetto di Windows ecc.

+0

Puoi farlo in Linux? Penso che in Linux non puoi manipolare la memoria di altri programmi? – bodacydo

+0

Non sono un dev di linux. In che modo un debugger di Linux in modalità utente inserisce un punto di interruzione in un processo o legge lo stack di un thread? – Michael

+0

Di solito esegui il programma tramite 'gdb'. Quindi, dal momento che gdb avvia il processo figlio, in qualche modo ha accesso a quel programma, ma non ne sono sicuro, sono nuovo di tutto questo. – bodacydo

0

Immaginate un'applicazione che salva i dati in un file x.txt si può afferrare il contenuto x.txt, e tentare di trovare una differenza nella x.txt salvato contro la x corrente. txt, una volta cambiato puoi avere un evento fire sapendo che il programma X ha modificato il suo file x.txt.

È possibile eseguire questa operazione a un livello inferiore ma il concetto rimane lo stesso, (monitorare qualcosa per il cambiamento).

+0

Non è solo la manipolazione della memoria? Lo stesso concetto usato per creare Game Trainers? Pensavo che l'OP stesse parlando di hook fisici per eseguire codice (potrebbe essere la stessa cosa ...) come Steam Hooks per i tuoi giochi 3D per incorporare la sua sovrapposizione. – Aren