Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-02-2010, 00:15   #1
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
[ Vb.Net 2008 ] Indirizzi di Memoria - Genymus

Salve, ho la necessità di creare un'applicazione che mi consenta di ottenere, leggere e scrive su indirizzi di memoria di un certo programma.
Esempio:
Voglio visualizzare tutti gli indirizzi di memoria utilizzati dal calc.exe, dopodichè li volgio leggere e sucessivamente modificare.
L'applicazione dovrà quindi crearmi una lista dove compaiano gli indirizzi utilizzati, tipo così:
Codice:
AF23F4
A1321D
22FF00
13F503
Successivamente io prendo una di queste stringhe e le vado a leggere e sucessivamente modificare.
Su un tutorial ho letto che posso utilizzarre le api:
Codice:
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer

Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer

Public Declare Function ReadProcessMemory 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 Integer
Il problema è che comunque non riesco ad ottenere la lista degli indirizzi usati.
Oltre a questo non ho capito bene un'altra cosa:
Dopo essermi "attaccato" al processo usando quest'altro pezzo di codice:
Codice:
Dim ProcessName As Process() = Process.GetProcessesByName("calc")
HProcess = OpenProcess(&H1F0FFF, 0, ProcessName(0).Id)
dovrei utilizzare le seguenti chiamate per leggere e scrivere sulla memoria...
Codice:
ReadProcessMemory(HProcess, Address, Variable, 4, Nothing)
WriteProcessMemory(HProcess, Address, Value, 4, Nothing)
da quello che ho capito, il 4 sta per i byte, rispettosamente, letti o scritti... cosa significa? Quanti byte posso usare? Sono sempre e solo 4? Cambia se sviluppo l'applicazione a 64 bit al posto di 32?

Grazie
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 09:59   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Scusa, ma : utilità di tutto ciò ?!
A parte che andare a scrivere a casaccio nella memoria occupata da un processo non mi pare molto costruttivo, potrebbe avere risultati indesiderati, produrre crash, e/o non essere proprio consentito...

Nel caso specifico, l'uso esterno di calc da VB.NET è possibile ( e per inciso, superfluo ), senza un approccio così cruento, ad esempio come viene spiegato qui da un Mod di MSDN Forums :
http://social.msdn.microsoft.com/For...c-d26798e831ae
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 16:35   #3
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
il mio era solo un'esempio, la mia applicazione dovrà andare a modificare gli indirizzi di memoria di altre applicazioni.
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 16:36   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Genymus Guarda i messaggi
il mio era solo un'esempio, la mia applicazione dovrà andare a modificare gli indirizzi di memoria di altre applicazioni.
Ovviamente il sistema operativo non te lo permettera'.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 18:40   #5
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ovviamente il sistema operativo non te lo permettera'.
Come mai?
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 18:50   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Genymus Guarda i messaggi
Come mai?
Se il sistema operativo permettesse a qualunque processo (come il tuo) di scrivere quello che vuole sul processo di chiunque altro, sul nostro computer avremmo piu' virus di quelli che gia' ci sono, addirittura piu' virus che programmi.

Potrai usare questo comando su qualunque processo dal tuo iniziato (te stesso o un altro processo figlio del tuo processo), oppure il tuo processo dovra' avere un paio di privilegi su quello target.
Forse con le detours si puo' fare qualcosa, ma tanto... sono destinate a morire (Se non le aggiornano o non le hanno gia' aggiornate).
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 21:00   #7
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
Quindi è una cosa destinata a fallire?
Ma il funzionamento dei trainer e dei debugger non è identificare e modificare i vari indirizzi di memoria?

Quote:
Originariamente inviato da gugoXX Guarda i messaggi
...Potrai usare questo comando su qualunque processo dal tuo iniziato (te stesso o un altro processo figlio del tuo processo)...
Se avviassi io il programma aprendo il processo, automaticamente non ho il controllo su di esso?

Non è questo il comando?
Codice:
HProcess = OpenProcess(&H1F0FFF, 0, ProcessName(0).Id)
Ps: Il comando lo ho ripreso dal primo post.

Grazie
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 07-02-2010, 21:07   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Provaci, i pezzi della ricetta sono quelli.
Se funziona sono 2 chiamate
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2010, 14:17   #9
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
ok ci proverò, comunque prima devo trovare gli indirizzi di memoria... proverò facendo il debug dell'applicazione in questione.
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2010, 19:13   #10
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
Non riesco a capire come scansionare la memoria... qualche suggerimento?
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2010, 20:23   #11
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
dimentica tutti i post precedenti: la tua é una domanda ben precisa con una risposta altrettanto precisa, che si chiama VirtualQueryEx: http://msdn.microsoft.com/en-us/libr...07(VS.85).aspx

buon lavoro
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2010, 21:25   #12
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
ma questa funzione cosa fa? è compatibile con vb.net?
Devo richiamarla dalla Libreria "kernel32.dll" così:
Codice:
Public Declare Function VirtualQueryEx Lib "kernel32" (ByVal hProcess As Integer, ByVal lpAddress As Integer, ByVal lpBuffer As Integer, ByVal dwLength As Bytes) As Integer
?

Il valore di ritorno cos'è? Un array di indirizzi utilizzati?
Posso scansionare la memoria con questa funzione?

Grazie
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2010, 00:22   #13
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da Genymus Guarda i messaggi
ma questa funzione cosa fa?
permette di enumerare le "regioni" che partizionano lo spazio di indirizzamento del processo di cui specifichi l'handle.

i Remarks della documentazione definiscono il concetto di regione: si tratta di una sequenza di pagine contigue di memoria virtuale caratterizzate dalle seguenti caratteristiche:
1) hanno tutte lo stesso stato di allocazione (flags MEM_XXX, a te interessano tutte le regioni tranne quelle in stato MEM_RESERVE e MEM_FREE);
2) a meno che lo stato di allocazione non sia MEM_FREE, tale stato é stato provocato da un'unica chiamata VirtualAlloc(Ex) o simili (questo significa che due regioni contigue con gli stessi flags vengono enumerate indipendentemente se sono state allocate con due diverse chiamate VirtualAlloc(Ex) o simili);
3) hanno tutte lo stesso tipo di accesso (lettura, scrittura, esecuzione, ecc.).



Quote:
è compatibile con vb.net?
boh, dovrebbe; non lo so perché non uso Visual Basic e non uso le API Win32 in .NET.



Quote:
Il valore di ritorno cos'è? Un array di indirizzi utilizzati?
quoto la documentazione: "The return value is the actual number of bytes returned in the information buffer."



Quote:
Posso scansionare la memoria con questa funzione?
enumerando le regioni che partizionano lo spazio di indirizzamento virtuale del processo puoi costruire l'intera "mappa"* di tale spazio di indirizzamento, che é quello che vuoi fare; le regioni marcate con MEM_RESERVE o MEM_FREE non ti interessano perché sono le pagine non allocate, quindi non é memoria che il programma sta usando, mentre tu vuoi sapere quella che sta usando.

*tale "mappa" ti permette di sapere quali indirizzi sono allocati, quali no, quali sono solo riservati, quali sono usati per memorizzare moduli eseguibili (EXE o DLL), quali sono in realtá memory-mapped files, quali sono leggibili/scrivibili/eseguibili, quali sono in protezione copy-on-write e persino su quali é stato impostato un page guard; direi piu o meno tutto.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2010, 13:24   #14
Genymus
Senior Member
 
L'Avatar di Genymus
 
Iscritto dal: Oct 2007
Messaggi: 364
Bestia... se funziona mi hai salvato la vita
__________________
Genymus!!!
"Che cosa vorreste far incidere sulla vostra tomba?". "Torno fra 5 minuti."
"Lucido" è quando credi soltanto a metà di ciò che ti dicono. "Brillante" è quando sai a quale metà credere.
"Pensa, ogni volta che respiro muore un uomo." "Hai provato a fare qualcosa per l'alito?"

Aforismieaforismi.it
Genymus è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
Il satellite spia russo Kosmos 2612 si t...
Blue Origin continua l'espansione: nuove...
Intel prepara un SoC da 700 TOPS: Razor ...
I nuovi Xreal 1 Pro+ arrivano in Europa ...
La GeForce RTX 5090 non è morta: ...
HONOR Win2 si mostra online: potenza da ...
Clamoroso dietrofront di Sony: cancellat...
GeForce NOW, tante novità con l'u...
Il mercato smartphone rallenta nel Q3 20...
Addio al Valve Index: fine della produzi...
Seggiolini auto i-Size da 0 a 12 anni in...
Amazon determina i prezzi di tutto il we...
Robot aspirapolvere ECOVACS in offerta s...
Bodywel F20PRO o DEEPOWER A5? Due fat bi...
Gli agenti AI non diventano pazzi, sono ...
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: 22:10.


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