Conectar una API * no exportada *

3

Quiero saber ¿hay alguna forma de enganchar (en línea) una API no exportada de un PE? Tengo este binario (PE de 32 bits) que no utiliza ningún archivo DLL (un binario estáticamente vinculado) y me gustaría saber cuál debería ser el enfoque para enganchar una función en este binario (en la memoria).

Lo siguiente es un pensamiento mío, pero ¿no sabes qué tan práctico es? Por favor, hágame saber sus pensamientos. Además, avíseme si tiene una solución mejor.

  1. Inyecte DLL al binario en ejecución
  2. La DLL inyectada debe encontrar la dirección de la API que se va a enganchar:
    • busque la secuencia de bytes en la sección de texto (el código de la API se enganchará)
  3. Agregue el gancho (instrucción JMP)

Si la forma anterior es la única manera de hacerlo. ¿Qué tan práctico es? Por favor, hágame saber sus pensamientos. Gracias por adelantado.

    
pregunta aMa 29.05.2015 - 10:32
fuente

1 respuesta

2
  

El siguiente es un pensamiento mío, pero ¿no sabes qué tan práctico es?

Si no tiene acceso al código fuente del programa, tiene que hacer muchas suposiciones sobre el formato de los argumentos, etc. Y debe emular el comportamiento original de la función de una manera que no rompe el programa, o salta de nuevo a (el resto de) la función original después de emular la parte de la función que sobrescribe con la instrucción JMP.

Es posible que también tenga que cambiar la protección de la página, ya que el código del programa generalmente no se puede escribir de forma predeterminada.

Los programas que toman ciertos tipos de medidas contra la ingeniería inversa serán difíciles de parchear de esta manera, porque verifican su código de programa de vez en cuando.

Pero, para un binario simple sin protección, esto puede funcionar (con el esfuerzo requerido).

    
respondido por el Atsby 29.05.2015 - 12:15
fuente

Lea otras preguntas en las etiquetas