Oppure

Loading
15/04/09 16:29
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 (totem.altervista.org/guida/versione2/… ) 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:
Public myProcesses as Process() = Process.GetProcessesByName("nomeprocesso") 

Nel evento:
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: cheating-x.com/…

Ringrazio in anticipo :)

EDIT: modificato i link
Ultima modifica effettuata da 15/04/09 16:36
15/04/09 17:24
lorenzo
ascolta, non è che cambiando nome del post ti cambia anche la risposta...

se qui

pierotofy.it/pages/extras/forum/6/52572-cambiare_gli_address_di_un_processo_in_esecuzione/

pierotofy.it/pages/extras/forum/69/52590-[assembler_modificare_lallocazione_degli_indirizzi_ram/

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...
aaa
15/04/09 17:29
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 ...
aaa
15/04/09 18:49
Luk3
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 15/04/09 18:58
aaa
15/04/09 19:02
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.

La funzione che cerchi si chiama ReadProcessMemory:
msdn.microsoft.com/en-us/library/…(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:
pinvoke.net/default.aspx/user32/…
pinvoke.net/default.aspx/kernel32/…
aaa
15/04/09 19:04
Luk3
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:
aaa
15/04/09 19:23
ruggy94
Postato originariamente da Luk3:

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:
aaa
16/04/09 17:49
ok, mi ci sono messo a lavoro, quello che ottengo però temo che non sia sufficente...

nel modulo:

    
    Declare Function ReadProcessMemory Lib "user32.dll" (ByVal TODO) As TODO
    Public myProcesses As Process() = Process.GetProcessesByName("processo")
    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 16/04/09 17:51