PDA

Visualizza la versione completa : [C] Modificare cella di memoria di un processo


tossam
09-12-2009, 10:30
Buongiorno.
Ho la necessitàà di fare un programmino in C che modifichi il contenuto di una cella di memoria di indirizzo xxxxxx... Questo indirizzo l'ho trovato usando cheat Engine... E l'indirizzo sarebbe P->059B495D5... Il punto è questo... P->059B495D5 penso che sia l'indirizzo relativo al processo che prendo in considerazione, ossia rispetto al datasegment (si chiama così? ) del processo.

Ora, come si può vedere il "datasegment" del processo con cheat engine? e soprattutto... Come modifico una cella di memoria con indirizzo xxxxxxx (in riferimento assoluto)?

Ringrazio in anticipo

oregon
09-12-2009, 10:44
L'indirizzo di cui parli, in Win32, è virtuale ed è relativo allo spazio di indirizzamento di un determinato processo.

Per dirla in breve, puoi accedere a quell'indirizzo solamente dall'interno del processo che lo utilizza.

Per farlo, un processo esterno deve "iniettare" del codice all'interno del processo (oppure lavorare con apposite API con cui, dati appositi permessi, è possibile scrivere e leggere nella memoria virtuale di processi esterni) in questione e questo tipo di attività sono

1) molto complesse se non si sa cosa si fa

2) in genere, bloccate dagli antivirus

3) usate per attività poco lecite (non penso che gli autori del gioco sarebbero d'accordo)

E dato che si parla di attività complesse e poco lecite, non penso che i moderatori di questo forum lascino aperto questo thread ...

tossam
09-12-2009, 11:56
Grazie oregon anche se sul 3) non mi trovo d'accordo.
Innanzitutto, perchè il mio intento è di imparare, ed inoltre non necessariamente lo scopo è illecito.

Mi chiedo quindi se esista una via in assembly per riuscire a modificare la cella di memoria... Mi ricordo che a scuola avevamo modificato una routine di sistema... ma ormai sono passati tre anni e non mi ricordo un'acca!!!!

oregon
09-12-2009, 12:01
Originariamente inviato da tossam
Grazie oregon anche se sul 3) non mi trovo d'accordo.
Innanzitutto, perchè il mio intento è di imparare, ed inoltre non necessariamente lo scopo è illecito.

Modificare un eseguibile su cui esistono diritti d'autore (come in un gioco) non è proprio lecito. Ovviamente se lo fai a casa tua è un affare, ma se ne parli in un forum pubblico, è un'altra cosa ...


Mi chiedo quindi se esista una via in assembly per riuscire a modificare la cella di memoria... Mi ricordo che a scuola avevamo modificato una routine di sistema... ma ormai sono passati tre anni e non mi ricordo un'acca!!!!

Non è una questione di assembly ... lo fai anche in C o in C# (anche in VB) ... il fatto è che lo devi fare come ti ho detto.

Non stiamo parlando di modificare una cella di memoria fisica di un'applicazione che magari gira in modalità reale (come quelle del mondo pre-WinNT per intenderci).

Loading