Domanda

Ho una domanda, che mi mostra alcuni dati. Ho bisogno di allegare al processo di questa applicazione, trovare i dati di cui ho bisogno in memoria (un numero unico, in realtà), e salvarlo da qualche parte. Questa applicazione non sembra utilizzare i controlli standard di Windows, quindi le cose non stanno andando per essere semplice come la lettura dei dati controlli utilizzando AutoIt o qualcosa di simile.

Al momento io sono un database di tipo auto-discente e hanno molto poco profonda conoscenza di applicazioni Windows di debug. Non sono nemmeno sicuro se ho chiesto alla mia domanda abbastanza correttamente.

Quindi, mi puoi dare alcune linee guida di avviamento circa, ad esempio, che cosa devo leggere prima, e le direzioni generali che dovrebbe lavorare su?

Grazie.

È stato utile?

Soluzione

Il mio consiglio principale è: cercare di trovare qualsiasi altro metodo di integrazione di questo. Anche se si riuscisse, sarete in ostaggio di qualsiasi tipo di cambiamenti nel processo di destinazione, e possibilmente in Windows O / S. Quello che si sta descrivendo è un comportamento maggior parte dei programmi antivirus dovrebbe bandiera e Hinder: se non ora, quindi in futuro.

Detto questo, è possibile dare un'occhiata a DLL iniezione . Tuttavia, sembra come se si sta andando ad avere per eseguire il debug il heck fuori del processo di destinazione a livello di smontaggio: in caso contrario, come hai intenzione di sapere che cosa indirizzo di memoria da leggere?

Altri suggerimenti

Per leggere la memoria di altre applicazioni è necessario aprire il processo nei confronti di OpenProcess con almeno i diritti di accesso PROCESS_VM_READ e quindi utilizzare ReadProcessMemory di leggere qualsiasi indirizzo di memoria dal processo. Se sei un amministratore o avere il debug privilegio si sarà in grado di aprire qualsiasi processo con diritti di accesso massimo, è necessario solo per consentire SeDebugPrivilege prima (vedi ad esempio http://support.microsoft.com/kb/131065 ).

Se non si conosce un molto della memoria del processo di destinazione si può solo enumerare i blocchi di memoria rispetto di VirtualQueryEx (vedi come si fa uso VirtualAllocEx fare fare spazio per una grotta codice? come un esempio in cui esamino il codice del programma. I dati del programma è possibile esaminare nello stesso modo ).

Il problema più pratico che vedo è che si chiede la domanda nella troppo generica modo. Se spieghi di più che tipo di dati che si sta cercando probabilmente potrei suggerire un modo migliore. Per esempio, se si poteva vedere i dati da qualche parte si potrebbe esaminare le finestre e controlli corrispondenti rispetto di Spy ++ (una parte di Visual Studio Tools). I più importanti sono la classe di finestre (o controlli) ei messaggi che saranno inviati nel momento in cui vengono visualizzate la finestra più interessante. È inoltre possibile utilizzare Process Monitor per rintracciare tutti i file e Registro di sistema di accesso al il momento in cui verranno visualizzate le finestre con le informazioni interessanti. Almeno all'inizio si dovrebbe esaminare la memoria del processo con ReadProcessMemory nel momento in cui i dati che si sta cercando sono visualizzate nella finestra.

Se non avrete successo nei vostri indagini vi consiglio di inserire nella sua domanda ulteriori informazioni.

Ho usato per conoscere le finestre di debug API, ma è lungo perso la memoria. Come sull'utilizzo OllyDbg:

http://www.ollydbg.de/

E controllare che sia con lo script OllyDbg e autoit?

Suoni interessante ... ma molto difficile. Dal momento che si dice che questo è un 'one-off', che dire qualcosa di simile, invece?

  • Fate uno screenshot di questa applicazione.
  • Esegui screenshot attraverso un programma OCR
  • Se si è in grado di leggere il testo che si sta cercando in un modo prevedibile, sei a metà strada!

Così ora se si può leggere un dall'OCR screenshot della vostra applicazione, si tratta di una semplice questione di scrivere un programma che fa il seguente:

  • Scripts i passi per ottenere i dati sullo schermo
  • Crea uno screenshot dei dati in questione
  • la gestisce attraverso un programma OCR come Microsoft Office Document Imaging
  • Estrae il testo in questione e fa 'ciò che' con esso.

Ho fatto qualcosa di simile prima, con risultati abbastanza buono, ma direi che è una soluzione fragile. Se l'applicazione cambia, smette di funzionare. Se l'OCR non è in grado di leggere il testo, esso smette di funzionare. Se l'OCR legge il testo sbagliato, si potrebbe fare le cose peggiori di smettere di lavorare ...

In quanto altri utenti hanno detto, raggiungendo in memoria e tirando fuori i dati è un argomento abbastanza avanzato ... complimenti a voi se si può trovare un modo per farlo!

So che questo non può essere una risposta popolare, a causa della natura di ciò che questo software è usato per, ma programmi come cheat engine e ArtMoney ti permette di cercare attraverso tutta la memoria riservata da un processo per un dato valore, allora raffinare i risultati fino a trovare l'indirizzo del valore che stai cercando.

Ho imparato questo inizialmente durante il tentativo di imparare a proteggere meglio i miei giochi dopo imbattersi in un allenatore per uno di loro, ma hanno trovato la tecnica di tanto in tanto utile durante il debug.

Ecco un esempio della tecnica sopra descritta in uso: https: // www. youtube.com/watch?v=Nv04gYx2jMw&t=265

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top