Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Classe process
Forum - C# / VB.NET - Classe process

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve, ho già dato conferma della mia ignoranza in materia nella sezione VB6, ora la riconfermerò qui :)

Premetto di aver guardato la guida sul sito di altervista de Il Totem (che è fatto DAVVERO bene, complimenti :)) nella sezione (http://totem.altervista.org/guida/versione2/C22.php ) sui processi e la classe process. Ho imparato a ottenere la lista dei processi (e ne sono entusiasta :)), però ho un obiettivo: Imparare a leggere il contenuto degli indirizzi di memoria che usa un processo ed eventualmente modificarli. Ho fatto un infinità di tentativi, ho perso 4 giorni per analizzare del codice e tentato almeno una cinquantina di volte varie alternative che mi riportavano a dei risultati errati (fatto il debug con TSearch e i miei risultati non erano come dovevano essere...). Il codice "più vicino" che sono riuscito a creare è

Nel modulo:
Codice sorgente - presumibilmente C# / VB.NET

  1. Public myProcesses as Process() = Process.GetProcessesByName("nomeprocesso")


Nel evento:
Codice sorgente - presumibilmente Plain Text

  1. TextBox1.Text = OpenProcess(TextBox2.Text, 0, myProcesses(0).Id)



non vi sono errori, ma l'output risulta inesatto (e tende ad aumentare col tempo). Inoltre l'indirizzo della cella di memoria è in esadecimale, mentre la funzione OpenProcess è gestibile in decimali...

Per chiarezza:

Il programma dovrebbe andare a vedere il contenuto della cella 01CF06BC utilizzata dal programma X (ed eventualmente modificarla).

Codice da cui ho preso spunto: http://www.cheating-x.com/modulo-vb-modificare-leggere-la- ...

Ringrazio in anticipo :)

EDIT: modificato i link

Ultima modifica effettuata da il 15/04/2009 alle 18:36
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:24
Mercoledì, 15/04/2009
ascolta, non è che cambiando nome del post ti cambia anche la risposta...

se qui

http://www.pierotofy.it/pages/extras/forum/6/52572-cambiar ...

http://www.pierotofy.it/pages/extras/forum/69/52590-[assem ...

ti hanno risposto in quel modo, perché devi riprovare cambiando linguaggio e cambiando titolo?

Mi sembra che in questi due post siano statipiù che chiari...

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:29
Mercoledì, 15/04/2009
Usare VB.NET per chiamare delle API di Windows che accedono alla memoria di un processo, non e' una cosa saggia ne' efficiente.

In ogni caso, mi sembra che tutte le API siano abbondantemente documentate su MSDN.

Ti ripeto che la cosa andrebbe fatta in C/C++ (non perche' obbligatoria, ma perche' piu' semplice ed efficiente), ma data la finalita' "inutile" e senza alcun fine didattico per te (a cui non interessa programmare ma solamente superare le difficolta' del gioco con un trucco), non posso darti altri suggerimenti ...

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 20:49
Mercoledì, 15/04/2009
Testo quotato

Postato originariamente da theprogrammer:

Usare VB.NET per chiamare delle API di Windows che accedono alla memoria di un processo, non e' una cosa saggia ne' efficiente.

In ogni caso, mi sembra che tutte le API siano abbondantemente documentate su MSDN.

Ti ripeto che la cosa andrebbe fatta in C/C++ (non perche' obbligatoria, ma perche' piu' semplice ed efficiente), ma data la finalita' "inutile" e senza alcun fine didattico per te (a cui non interessa programmare ma solamente superare le difficolta' del gioco con un trucco), non posso darti altri suggerimenti ...




Non è possibile continuare a vedere le tue risposte -.-
Ma se ve lo chiede non potete rispondere alla sua domanda? O dovete per forza fare osservazioni etniche-morali-bigotte?

Comunque, non conosco la soluzione al tuo problema.
Ricordo di aver trovato dei tutorial, in C++ però..
Potresti cercare nei vari siti di hacking(videogames)/cheating :yup:

Ultima modifica effettuata da Luk3 il 15/04/2009 alle 20:58
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 21:02
Mercoledì, 15/04/2009
Per una volta sono d'accordo con Luke3. Eppoi bisogna dire che Iohoilpotere, al contrario di molti altri, ha almeno un po' di buona volontà per fare quello che vuole e non gli costa usare anche tre linguaggi diversi per arrivare allo scopo.

La funzione che cerchi si chiama ReadProcessMemory:
http://msdn.microsoft.com/en-us/library/ms680553(VS.85).aspx
Devi passare in ingresso i parametri specificati: l'handle lo ottieni direttamente dall'oggetto process (myProcess.Handle). BaseAdress è l'indirizzo a cui vuoi leggere. Se lo conosci già, bene, altrimenti ottieni l'indirizzo di base del processo con myProcess.MainModule.BaseAddress. Per la dichiarazione, guarda qui:
http://pinvoke.net/default.aspx/user32/ReadProcessMemory.html
http://pinvoke.net/default.aspx/kernel32/ReadProcessMemory ...

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 21:04
Mercoledì, 15/04/2009
Testo quotato

Postato originariamente da Il Totem:

Per una volta sono d'accordo con Luke3. Eppoi bisogna dire che Iohoilpotere, al contrario di molti altri, ha almeno un po' di buona volontà per fare quello che vuole e non gli costa usare anche tre linguaggi diversi per arrivare allo scopo.



A differenza mia :rotfl:

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 21:23
Mercoledì, 15/04/2009
Testo quotato

Postato originariamente da Luk3:

Testo quotato

Postato originariamente da Il Totem:

Per una volta sono d'accordo con Luke3. Eppoi bisogna dire che Iohoilpotere, al contrario di molti altri, ha almeno un po' di buona volontà per fare quello che vuole e non gli costa usare anche tre linguaggi diversi per arrivare allo scopo.



A differenza mia :rotfl:



:rotfl::rotfl: che non ne vuoi usare neanche uno :rotfl:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 19:49
Giovedì, 16/04/2009
ok, mi ci sono messo a lavoro, quello che ottengo però temo che non sia sufficente...

nel modulo:

Codice sorgente - presumibilmente VB.NET

  1. Declare Function ReadProcessMemory Lib "user32.dll" (ByVal TODO) As TODO
  2.     Public myProcesses As Process() = Process.GetProcessesByName("processo")
  3.     Public Declare Function Leggi Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Boolean



solo che (ovviamente) mi genera l'errore "tipo TODO non definito". Essendo la prima volta che vedo questo tipo sono andato a documentarmi su internet, ma con scarsi risultati (o mi trova siti in spagnolo, o me lo spezza in to do, e anche sul sito si msdn non ho riscontri per il tipo TODO...), ho dato un occhiata anche al sito di totem e l'unico todo che mi trova è il meTODO .___.

Per gli eventi non ne parliamo che mi sto ancora documentando sugli handle... il mio campo sarebbe l'informatica gestionale, di tutto ciò son digiuno... ma se ho intenzione di diventare un programmatore (serio) devo imparare anche queste cose... (per imparare non intendo avere il codice, ma imparare funzione per funzione a cosa serve!).


Ultima modifica effettuata da il 16/04/2009 alle 19:51
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:13
Giovedì, 16/04/2009
:rotfl:, TODO non è un tipo, è una locuzione inglese che indica le cose da fare (things to do), e viene messe dove c'è del lavoro o del codice da completare. In quel caso, la signature del metodo non era ancora stata scritta. Ma non vedo comunque il problema dato che hai dichiarato Leggi nel modo corretto.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo