dove malloc() e free() memorizzano gli indirizzi allocati e le loro dimensioni (GCC Linux)? Ho letto che alcune implementazioni li memorizzano da qualche parte prima della memoria allocata, ma non ho potuto confermarlo nei miei test.Dove Store malloc()/libero() memorizza i formati e gli indirizzi?
Lo sfondo, forse qualcuno ha un altro suggerimento per questo: Sto sperimentando un po 'con l'analisi della memoria heap di un processo al fine di determinare il valore corrente di una stringa nell'altro processo. Accedere alla memoria dell'elaborazione del processo e passeggiare non è un problema. Tuttavia, poiché il valore della stringa cambia e il processo alloca una nuova parte della memoria ogni volta, l'indirizzo della stringa cambia. Poiché la stringa ha un formato fisso è ancora facile da trovare, ma dopo alcune modifiche le vecchie versioni della stringa sono ancora nella memoria heap (probabilmente liberate, ma non ancora riutilizzate/sovrascritte) e quindi non sono in grado di indica quale stringa è quella corrente.
Quindi, per trovare ancora quello corrente, voglio verificare se una stringa che trovo nella memoria è ancora utilizzata confrontando il suo indirizzo con gli indirizzi malloc/free.
Ciao, Elmar
Oltre alla mia risposta di seguito, questo potrebbe aiutare un po 'http://www.linuxforums.org/forum/linux-programming-scripting/52375-reading-memory-other-processes.html –
Si potrebbe anche voler scavare in giro nella parte di mappatura della memoria del kernel/glibc –