Pregunta

Tengo una pequeña utilidad que se escribió originalmente en VS2005.

Necesito hacer un pequeño cambio, pero el código fuente de una de las DLLs se ha perdido en algún lugar.

¿Existe una herramienta gratuita o de precio razonable para aplicar ingeniería inversa de la dll a un código C ++?

¿Fue útil?

Solución

Descompilador Hex-Rays es una gran herramienta, pero el código será bastante difícil para leer y tendrá que pasar mucho tiempo para aplicar ingeniería inversa a toda la DLL.

Otros consejos

También puede querer echar un vistazo a OllyDbg que es un depurador de análisis de nivel de ensamblador de 32 bits. Se utiliza para analizar el código binario en situaciones en las que no tiene un código fuente. Es un depurador ligero. OllyDbg es un shareware para que puedas descargar & amp; úsalo gratis .. !!

Visitar OllyDbg es la página de inicio aquí

PS: En el pasado, los crackers utilizaron SoftICE de NuMega para la depuración en un ejecutable & amp; tomar una instantánea en los valores de los registros. Softice era un depurador avanzado. Definitivamente fue la herramienta favorita para las galletas. No sé sobre el estado actual del producto. El sitio de NuMega no tenía información al respecto. Puede que lo haya pasado por alto, pero no pude encontrarlo. Recomiendo que consiga una versión heredada (4.0x) de SoftICE & amp; Aplicar el parche de Windows XP para Softice. Trabajar con SoftICE es algo así como una "experiencia".

Lectura adicional: Inversión: Secretos de la ingeniería inversa por Eldad Eilam

No conozco la situación exacta que tiene y la funcionalidad que implementa la DLL para su aplicación. Pero diría que en la mayoría de los casos sería mejor volver a escribir el archivo DLL faltante en función de la funcionalidad conocida.

Esto es especialmente cierto si tiene alguna documentación para ello.

Intentando aplicar ingeniería inversa del código binario al ensamblador, luego a C ++ y luego tratar de modificarlo para proporcionar la funcionalidad existente, en la mayoría de los casos llevará mucho tiempo, e incluso puede ser imposible.

Si su pequeño cambio es editar un texto o omitir algunas rutinas, puede usar un editor hexadecimal o un desensamblador, pero no podrá ver el código C ++ original, e incluso si encuentra una herramienta que convierte la DLL de nuevo en código, todos los nombres de las variables desaparecerían y sería un gran lío.

Dependiendo de su situación, mantendría el DLL legado / binario tal como está y escribiría un DLL envoltorio que cambiará y / o agregará cualquier comportamiento adicional.

La idea es agregar la funcionalidad antigua en una DLL nueva que importa la anterior.

Tienes que hacerlo como lo hacen los crackers de juegos y aplicaciones: utiliza un desensamblador y hackea el código del ensamblador.

No puedes devolverle la carne a un animal e incluso si pudieras, tendrías un animal muerto: P

SI se hizo en .NET, entonces, ¿por qué no usar el Reflector dotNet?

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