Me gustaría llamar a una función que reside en un .exe de terceros y obtener su resultado. parece que hay deberían ser una forma, siempre que sepa la dirección de la función, la convención de llamada, etc., pero no sé cómo.
¿Alguien sabe cómo haría esto?
Me doy cuenta de que cualquier solución sería un truco no estándar, pero hay deber ¡estar fuera!
Mi caso de uso no nefasto: estoy aplicando ingeniería inversa a un formato de archivo para mi software. Los cálculos en esta función son demasiado complejos para que mi pequeño cerebro los descubra; Pude extraer el código ensamblador directamente a mi propia DLL para probarlo, pero, por supuesto, no puedo liberarlo, ya que sería un robo. Asumiré que los usuarios ya tienen esta aplicación en particular preinstalada, por lo que mi software se ejecutará.
Desde el documentos: “LoadLibrary también se puede usar para cargar otros módulos ejecutables. Por ejemplo, la función puede especificar un archivo .exe para obtener un identificador que se puede usar en FindResource o LoadResource”. Pero tenga cuidado con el código dependiente de la posición.
– Adam Rosenfield
7 mayo 2012 a las 18:44
Vas a tener problemas cada vez que ese otro programa sea parcheado o actualizado. O si el otro proveedor se entera e intencionalmente modifica su programa para evitar que el suyo funcione. Lo que describe es teóricamente posible, pero no es una buena práctica de ingeniería.
–Raymond Chen
7 mayo 2012 a las 18:47
@Goz: eso supone que el código es independiente de la posiciónque muy probablemente no lo es.
– Adam Rosenfield
7 mayo 2012 a las 19:01
En términos generales, las prácticas de ingeniería poco sólidas tienden a no estar bien documentadas precisamente porque no lo son.
–Raymond Chen
7 mayo 2012 a las 19:50
@BlueRaja: en este caso, la “buena práctica” sería pedirle al desarrollador del software que está tratando de usar que proporcione una biblioteca que pueda analizar el formato de archivo que le interesa o alguna documentación sobre el formato de archivo . Tal vez ofrecerles algo de $$$ para licenciarlo si no lo regalan. Por supuesto, si el desarrollador ya no está en el negocio, es posible que no tenga mejores opciones.
– Adam Rosenfield
7 mayo 2012 a las 21:20