Windows: cómo crear cuñas de encargo AppCompat (Solicitud de puntos de referencia)?

StackOverflow https://stackoverflow.com/questions/1711665

  •  19-09-2019
  •  | 
  •  

Pregunta

Windows tiene la capacidad de aplicar cuñas a aplicaciones mis-comportándose . Las cuñas se utilizan para interceptar llamadas a la API y cambiarlo. Por ejemplo, las cuñas se pueden utilizar para:

  • cambiar los parametros de entrada
  • mentira acerca de los valores de retorno
  • cambiar para llamar a algo más

El de compatibilidad de aplicaciones Tookit tiene bastantes le cuñas existentes se puede aplicar a su propia aplicación mal comportamiento. He aquí un ejemplo de uno que hace caso omiso de su llamada a la API y en su lugar llama a una API completamente diferente en su lugar:

alt text

necesito una cuña que no es uno de los cientos de cuñas Microsoft ya escribió. necesito una cuña de encargo .

En mi caso quiero para interceptar las llamadas a:

GetSystemMetrics(0x1000)

para que vuelva 0. No puedo encontrar ninguna información sobre cómo dar mi propia DLL de Windows que tendrá la solución Necesito. Ni siquiera sé si puede crear cuñas personalizados.

¿Tiene cuñas personalizados de soporte de Windows?

¿Fue útil?

Solución

No estoy al tanto de ninguna manera de alguien que no sea Microsoft implementación de una cuña appcompat.

Es posible que desee investigar desvíos , que podría proporcionar la funcionalidad que desee.

Otros consejos

Hay que pensar en esto desde el punto de vista de Raymond Chen. Imagínese si fuera posible que alguien que no sea Microsoft para escribir cuñas de compatibilidad. Entonces cada vez que Microsoft hace un cambio importante, además de todos sus otros trabajos compatibilidad sino que también tendrá que escribir cuñas para las cuñas de 3 ª parte que hizo las cosas mal. Se mantiene la compatibilidad hacia atrás es lo suficientemente difícil como es.

Es posible, pero requiere algo de trabajo.

desovar la aplicación con su propio programa de lanzadores que se aplicará la cuña. Para ello, dejar que su lanzador crear el proceso con privilegios suficientes para modificar su memoria. La mayoría de las funciones de la API comienzan con un nop de dos bytes precedido por más NOP. Se puede cambiar el nop de dos bytes en un salto corto y los NOP precedentes a un salto de longitud donde cada vez que desea ir.

Una solución alternativa que he utilizado en el pasado es cargar el archivo ejecutable como un archivo DLL, pero que puede causar más trabajo ya que dependiendo de cómo meticuloso es la aplicación. En mi situación tenía que cargar el archivo ejecutable como un archivo DLL sólo de datos y hacer todas mis propias importaciones, pero por desgracia la solución anterior no era una opción para mí.

También he escrito una vez un DLL de enganche que utiliza principios similares, pero eso es sólo una opción si usted puede modificar el código fuente para cargar el archivo DLL o si el proceso es compatible con DLL plug-ins.

siempre se puede utilizar la ingeniería inversa para solucionarlo :), que me haga saber si necesita alguna ayuda con ella

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