Pregunta

Tengo una aplicación, que muestra me algunos datos. Necesito conectar con el proceso de esta aplicación, encontrar los datos que necesito en la memoria (un solo número, en realidad), y guardarlo en algún lugar. no parece que esta aplicación para utilizar los controles estándar de Windows, así que las cosas no van a ser tan simple como leer datos utilizando controles AutoIt o algo similar.

Actualmente soy un tipo de base de datos auto-alumno y tener un conocimiento bastante profundo sobre aplicaciones de Windows de depuración. Ni siquiera está seguro de si le pregunté a mi pregunta correctamente suficiente.

Así que, ¿me puede dar algunas pautas de arrancador sobre, digamos, lo que debería leer primero, y las instrucciones generales que debe trabajar en?

Gracias.

¿Fue útil?

Solución

Mi consejo principal es: tratar de encontrar cualquier otro método de integración que esto. Incluso si tienes éxito, podrás rehén de ningún tipo de cambios en el proceso de destino, y posiblemente en el de Windows O / S. Lo que usted está describiendo es un comportamiento mayoría de los escáneres de virus debe bandera y posteriores: si no es ahora, entonces en el futuro.

Dicho esto, se puede echar un vistazo a DLL inyección. Sin embargo, suena como si usted va a tener que depurar a los diablos del proceso de destino en el nivel de desmontaje: de lo contrario, ¿cómo vas a saber qué dirección de memoria para leer?

Otros consejos

Para leer la memoria de otra aplicación que se necesita para abrir el proceso con respecto a OpenProcess con al menos derechos de acceso PROCESS_VM_READ y luego usar ReadProcessMemory leer cualquier dirección de memoria del proceso. Si es un administrador o tener privilegios de depuración usted será capaz de abrir cualquier proceso con derechos de acceso máxima, sólo se necesita habilitar SeDebugPrivilege antes (véase, por ejemplo, http://support.microsoft.com/kb/131065 ).

Si usted no sabe mucho acerca de la memoria del proceso de destino sólo se puede enumerar los bloques de memoria con respecto a VirtualQueryEx (ver ¿Cómo se puede hacer uso VirtualAllocEx hacer espacio para una cueva código? como un ejemplo en el que examino el código del programa. los datos del programa se puede examinar de la misma manera ).

El problema más práctico que veo es que le pida a su pregunta en forma demasiado general. Si usted explica más qué tipo de los datos que busca Probablemente podría sugerir una mejor manera. Por ejemplo, si usted podría ver los datos en algún lugar que podría examinar las ventanas y los controles correspondientes con respecto a Spy ++ (una parte de Visual Studio Tools). Los más importantes son la clase de ventanas (o controles) y los mensajes que será enviada en el momento en que se visualiza la ventana más interesante. También puede utilizar Process Monitor para rastrear todos los archivos de registro y el acceso a el momento en el que se mostrarán las ventanas con la información interesante. Al menos al principio que debe examinar la memoria del proceso con ReadProcessMemory en el momento en el que los datos que usted está buscando se muestran en la ventana.

Si usted no tendrá éxito en sus investigaciones le recomiendo que inserte en su pregunta más información.

Yo conocía a las ventanas de depuración de la API pero ha perdido mucha memoria. ¿Y si uso OllyDbg:

http://www.ollydbg.de/

y controlar que tanto con la escritura y OllyDbg autoit?

suena interesante ... pero muy difícil. Desde que decir que esto es un 'one-off', ¿qué pasa con algo como esto en su lugar?

  • Tome una captura de pantalla de esta aplicación.
  • Ejecutar la pantalla a través de un programa de OCR
  • Si usted es capaz de leer el texto que busca de una manera predecible, que está a mitad de camino!

Así que ahora si se puede leer una pantalla OCR'd de su aplicación, se trata de una simple cuestión de escribir un programa que hace lo siguiente:

  • Scripts los pasos para obtener los datos en la pantalla
  • Crea una captura de pantalla de los datos en cuestión
  • Se ejecuta a través de un programa de OCR como Microsoft Office Document Imaging
  • Extrae el texto relevante y hace 'lo que sea' con ella.

he hecho algo como esto antes con resultados bastante buenos, pero yo diría que es una solución frágil. Si la aplicación cambia, deja de funcionar. Si el OCR no puede leer el texto, deja de funcionar. Si el OCR lee el texto incorrecto, que podría hacer cosas peores que dejan de funcionar ...

Como los otros críticos han dicho, buscando en la memoria y sacando datos es un tema bastante avanzado ... felicitaciones a usted si se puede encontrar una manera de hacerlo!

Sé que esto puede no ser una respuesta popular, debido a la naturaleza de lo que este software se utiliza para, pero programas como CheatEngine y ArtMoney le permite buscar a través de toda la memoria reservada por un proceso para un valor dado, a continuación, refinar los resultados hasta encontrar la dirección del valor que está buscando.

he aprendido este principio al tratar de aprender cómo proteger mejor a mis juegos después de encontrarse con un entrenador para uno de ellos, pero han encontrado la técnica ocasionalmente útil para depurar.

Aquí está un ejemplo de la técnica descrita anteriormente en uso: https: // www. youtube.com/watch?v=Nv04gYx2jMw&t=265

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top