Ir al contenido



Foto

Ejecutar funciones de una DLL desde Delphi, Ingeniería inversa

Delphi dll windows api

  • Por favor identifícate para responder
4 respuestas en este tema

#1 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 524 mensajes
  • LocationCali, Colombia

Escrito 10 marzo 2020 - 04:58

Buenos días amigos.

 

Se me ha presentado esta situación,  existe un sistema de hardware ya algo antiguo y lo único que tenemos para manejarlo es una dll que ejecuta los llamados al puerto USB.   Sin embargo no existe documentación, ni el código fuente del mismo.  La Dll fue realizada en C++ de embarcadero.   Al realizar un análisis de la dll, con el software PE Explores,  el cual realiza una decompilación del dll. me arrojó lo siguiente.

 

// @MedCabinets@$bctr$qv Unmangled Borland C++ Function: qualified constructor MedCabinets::MedCabinets()
 
// @MedCabinets@GetAPIVersion$qpc Unmangled Borland C++ Function: qualified function MedCabinets::GetAPIVersion(char *)
 
 
Alguien me puede dar luces de como se podrían realizar llamados a esta dll?  
 
Gracias.
 

  • 0

#2 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.915 mensajes
  • LocationMadrid - España

Escrito 10 marzo 2020 - 06:40

En este enlace encontrarás una herramienta que escribí para localizar las funciones exportadas por una dll. El problema no es sólo conocerlas sino saber los parámetros que usa, sus tipos y como los maneja en la pila. Eso puede requerir un análisis en asm de cada función y ser un trabajo duro y largo si exporta muchas funciones que se precisan usar.

 

Otra cosa es conocer qué hacen las funciones y que utilidad tienen para nosotros.

 

Si exporta una clase, se precisa la definición de la misma y posiblemente se precise escribir el código con C++ en este caso concreto. Si exporta una API plana, además de una o más clases, facilita el uso desde delphi, incluso parta diseñar su uso bajo POO.

 

 

Saludos.


  • 0

#3 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 524 mensajes
  • LocationCali, Colombia

Escrito 11 marzo 2020 - 07:33

Muchas gracias escafandra. al menos tengo una luz sobre esto.

 

Saludos.


  • 0

#4 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.915 mensajes
  • LocationMadrid - España

Escrito 11 marzo 2020 - 08:49

Muchas gracias escafandra. al menos tengo una luz sobre esto.

 

Saludos.

Quizás encuentres en la Red las definiciones de las funciones y clases exportadas. :)

 

Saludos


  • 0

#5 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 524 mensajes
  • LocationCali, Colombia

Escrito 12 marzo 2020 - 07:04

Hola, El problema es que esta fue una dll desarrollada para esta aplicación especificamente, en el año 2012,  el código fuente y la documentación se perdió,  la dll es un driver que maneja una tarjeta USB,  ahora necesitamos actualizar el software pero no conocemos el protocolo de comunicación a la tarjeta.


  • 0





Etiquetado también con una o más de estas palabras: Delphi, dll, windows, api