Pregunta

estoy frente a un problema bastante grande. Tengo que arreglar un ejecutable para modificar su comportamiento. El programa está escrito en C y hasta ahora he estado utilizando AIF para editarlo, pero de esa manera no podría, por ejemplo, reemplazar las funciones enteras etc. Parece que para mí la forma más sencilla de hacerlo es crear una especie de cargador que va a cargar el programa y el parche antes de que se ejecute. Me sería ahorrar mucho tiempo y toda la edición sería mucho más fácil.

El problema es que no puedo encontrar ningún artículo sobre cómo hacerlo. Podría alguno de ustedes explicar cómo debería manejar este proceso? El cargador podría estar escrito en C / C ++.

¿Fue útil?

Solución

Es completamente aconventional para tratar ese proceso.

  • ¿Por qué no te recompilando con los cambios?
    • Fuente no disponible es la razón habitual.
  • ¿Es un programa de código cerrado?
    • Si es así, es probable que esté violando los términos de la licencia por tratar.
  • se pierde la fuente?
    • ¿Qué pasó con el control de las copias de seguridad y la versión?
  • ¿Está basada en el código clave en bibliotecas compartidas?
    • Si es así, usted puede mirar para reemplazar las bibliotecas compartidas con la nueva funcionalidad?
  • ¿Se puede utilizar LD_PRELOAD para alcanzar sus objetivos?

Debido a la 'fuente está disponible' filosofía de UNIX, no hay muchas herramientas para ayudar en la aplicación de parches de binarios - clásicamente, la herramienta de elección era un programa llamado adb - un depurador (la séptima edición manual de UNIX dijo 'adb - depurador'). Permitió que le permite editar el archivo binario.

Sin embargo, la gente rara vez se hacen cambios importantes ya que suena como que quiere hacer, sobre todo porque es un trabajo muy duro y es mucho más simple y más fiable para hacerlo volviendo a compilar la fuente original.

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