Estoy tratando de obtener el nombre del módulo para cada hilo en un proceso. Process Explorer muestra el nombre del módulo asociado con cada hilo sin problema. Puedo enumerar todos los módulos y todos los hilos en mi proceso actual sin problemas, y obtener datos relacionados con ellos. Mi método actual de deducir el módulo asociado es el siguiente:Obtener el nombre del módulo a partir de la información del hilo
if(module.BaseAddress < thread.StartAddress && (module.BaseAddress + module.BaseMemorySize) > thread.StartAddress)
{
// this is our module ;)
}
Por desgracia, eso no parece ser una forma concreta de hacerlo. El módulo xfire_toucan.dll muestra in fine procexp:
1972 : xfire_toucan.dll!ToucanSendGamestatsConsoleLine_V1+0x80
En la lista de módulos, se muestra con un addr base del 0x10000000
y un tamaño de 0x26b000
, que nos da una addr memoria máxima de 0x1026b000
. Sin embargo, la dirección de inicio de subproceso asociada es 0x775e2ca0
, que es parte de un bloque de memoria asignado en el proceso fuera del rango de memoria principal del módulo.
¿Alguna idea de cómo obtener el módulo como ProcExp?
sé C y C#, así que o bien está muy bien, pero mi proyecto es C# así que eso es preferible:]
¿Cómo sería confiable caminar sobre la pila? No hay compensación de pila establecida para la función del hilo. Tampoco hay un conjunto definido de llamadas antes de la función de subproceso: http://stackoverflow.pastebin.com/e1TLxwuj – Polynomial
Mejor descripción de lo que estoy hablando: http://stackoverflow.pastebin.com/cFNjueAq – Polynomial
En realidad, hay es. Para hacer un recorrido de pila, necesita el archivo .pdb asociado con el módulo. Este archivo contiene el tamaño de cada marco de pila, entre otras cosas. –