Cómo Corregir Errores De Depuración De Win32 DLL C#

Cuando su computadora está fallando, este software lo arreglará y protegerá sus datos.

Durante los últimos días, algunos de nuestros usuarios informaron que estaban experimentando la depuración de c# win32 dll.

debug win32 dll c#

Durante algún tema web de Redteam, necesitamos escribir archivos DLL. Sin embargo, depurar una DLL no es tan fácil. Lo que parece, porque generalmente DLL no está diseñado para hacer el trabajo con ella.
En este artículo, podemos ver cómo depurar una DLL de manera competente.

¿Qué es una DLL?

¿Cómo depuro una DLL?

Establecer puntos de interrupción a través del proyecto DLL.Haga clic derecho en el proyecto DLL y seleccione “Establecer como proyecto de inicio”.Deje en claro que el servicio de configuración de la solución está configurado para depurar. Presione F5, haga clic en una nueva flecha de inicio verde y elija Depurar > Iniciar depuración.

La DLL abreviada es en realidad para la exploración vinculada dinámicamente. Era un enfoque modular para construir leyes. Los archivos DLL están escritos en C, tal vez C ++, y básicamente sirven como una biblioteca única en la que los programas pueden mejorar el acceso para ejecutarse con éxito. En una medida específica, puede comparar DLL como absoluto con un paquete de python o la mejor sugerencia de paquete npm, cualquier biblioteca. El siguiente ícono ilustra bastante bien el concepto vinculado a DLL versus EXE:

¿Cómo depuro la DLL a la que se hace referencia correctamente con PDB?

Si ciertamente es un archivo de referencia (dll), el valor de depuración más importante (el archivo “pdb”) a veces debe estar en la misma carpeta que su dll. Verifique si sus proyectos generalmente están preparando símbolos de depuración (Propiedades del proyecto => Generar => Avanzado => Salida/Información de depuración = completa); y cuando deje de copiar la DLL, agregue su PDB.

Como se mencionó en el preámbulo, una buena DLL no está diseñada para funcionar por sí sola, ya que la parte posterior simplemente no puede hacer la ruta tradicional de depuración fuera de un engranaje. .

Opción de depuración 1: usar OutputDebugString

Microsoft proporciona una función kernel32 en un .dll significativo (¡oh, mire, un DLL!) designado como OutputDebugString que le permite transferir el contenido de una colección al depurador del sistema. Visual Studio presenta una funcionalidad integrada que puede capturar esto es lo que se genera (más sobre esto más adelante). Mi depurador de sistema favorito es Dbgview.exe, del paquete sysinternals. Para mostrar exactamente cómo funciona OutputDebugString, preparé un código de demostración pequeño:

Después de demostrar que una DLL no puede ejecutarse por sí sola, decido ejecutar DemoDLL produciendo el botón “Ejecutar” en Visual Studio, y este hombrecito me saluda:

Afortunadamente, Microsoft tiene un mecanismo de carga de DLL incorporado llamado rundll32.exe, por lo que rundll32.exe puede arrojar un error si alguien no tiene muchas opciones exportadas (= funciones utilizadas anteriormente por otros programas ) en el interior de cada DLL. Mi colega Didier Stevens habla amablemente sobre las etapas de entrada de DLL en su blog. Si estás fascinado con más, ¡date un capricho!

Debido a ayudar con estos problemas de manejo de entrada, he lanzado un cargador de DLL básico que se puede adaptar fácilmente a sus especificaciones, que se puede encontrar aquí: https://github.com/ NVISO-BE/DLLoader

Como los clientes pueden ver fácilmente en algún tipo de código de demostración, todas mis líneas de producción de depuración contienen “[DBG]”, esto se hizo sin ningún motivo.

Dbgview es un depurador de red confiable que hace mucho ruido dependiendo de lo que todos hayan instalado en el mecanismo. Sin embargo, dbgview tiene un filtro de modelos. Dado que cada una de sus líneas de depuración actuales contiene “[DBG]”, podemos decirle exactamente a Dbgview que solo muestre la mayoría de los mensajes de la organización como este:

Todo puede describirse más como una configuración, es tiempo libre para ejecutar nuestra DLL y comprender el resultado de DebugView:

Método de depuración un par de: Uso de Printf

Este método usa printf relativamente de OutputDebugString, así que modifiquemos el código en particular:

Cuando usamos nuestro propio cargador de DLL individual, vemos toda su salida de impresión, que a menudo se proporciona a la salida estándar del programa del cargador de DLL, que a su vez probablemente será nuestra consola de apertura.

Método de depuración bastantes: use el cargador DLL para depurar en Visual Studio

¿Necesita corregir los errores de Windows? Reimage puede ayudar

¿Su computadora funciona lenta e inactivamente? ¿Estás recibiendo la temida pantalla azul de la muerte? ¡Entonces es hora de descargar Restoro! Este software revolucionario reparará todos sus errores comunes de Windows, protegerá sus archivos de pérdida o corrupción y mantendrá su hardware funcionando de manera óptima. ¿Entonces, Qué esperas? ¡Descarga Restoro ahora!

  • 1. Descargue e instale el software Reimage
  • 2. Abra el software y haga clic en "Buscar problemas"
  • 3. Haga clic en "Reparar todo" para iniciar el proceso de reparación

  • Ahora que todos tenemos el nuevo mecanismo de almacenamiento en búfer de DLL de reemplazo, podemos decirle a Visual Studio que lo use porque es ese proceso principal, por lo que nuestro equipo está diseñado para ejecutar las DLL en el Visual tangible El entorno de estudio, la depuración y toda nuestra empresa tendrán la capacidad de depurar archivos DLL de la misma manera que en un archivo EXE depurado.

    ¿Cómo depuro la aplicación Win32?

    Abra un proyecto en ejecución con Visual Studio.En el menú Depurar, elija Iniciar.Depure utilizando los métodos descritos en la sección Depurador de un vistazo.

    En el campo Comando, especifique el destino del archivo ejecutable del cargador DLL principal; en el campo Puntos de comando, especifique los argumentos necesarios y también el cargador de DLL, incluida la trayectoria hasta la prueba de depuración de DLL; ahora no estamos obteniendo una función exportable, estamos lejos de usar el segundo argumento más importante. Si desea utilizar este último argumento, puede hacerlo de la misma manera que en la consola.

    Ahora, en qué momento ejecuta Can DLL, Visual Studio generará automáticamente el uso de la tecla de control de reproducción verde. Esto le dice a la máquina de carga de DLL que comience con los argumentos hasta la fecha especificados en la página del sitio del proyecto.
    Como puede ver, Visual Studio encuentra y maneja correctamente los puntos de interrupción casi como de costumbre:

    debug win32 dll c#

    Debido a que algunas instrucciones printf están incluso presentes, generalmente también se imprimen en la consola:

    Conclusión

    Dependiendo de la complejidad de su forma de DLL, en la mayoría de los casos siempre podrá usar la máquina de carga de DLL en Visual So Studio para que la mayoría de su negocio pueda depurar como su otro programa. Si lo desea, cualquier persona que tenga sentencias printf puede conectar el cargador de DLL para que pueda percibir casi cualquier vista en tiempo real de lo que está sucediendo exactamente a través de cualquier resultado de la consola del cargador de DLL. nombres asincrónicos, OutputDebugString ahora es la mejor posibilidad porque el cargador de DLL no piensa en nuevos subprocesos o async termina llamando. Granja

    ¿Cómo voy a ejecutar una DLL en Visual Studio?

    Ir al menú de inicio.Inicie sesión en la herramienta de Visual Studio.Cambie cuando necesite al directorio anterior.Para VS 2013 a continuación, haga clic en “Símbolo del sistema del desarrollador”, para VS el año 2013 o para VS 2010 simplemente toque “Símbolo del sistema de Visual Studio”.Una vez que aparece el ayuno en la pantalla de su teléfono, gran variedad de ILDASM.Se abrirá la ventana ILDASM.

    Esta es sin duda nuestra incursión en el todo normal de la depuración de DLL. ¡Espero que esa publicación de blog en particular haya sido instructiva y además te haya enseñado algo útil!

    Acerca de este autor

    Jean-Francois Mays es un ingeniero social experimentado que suele trabajar en el equipo de resiliencia cibernética de NVISO. Cuando mi esposo no suele trabajar, seguramente puedes encontrar a Jean-Francois en el gimnasio o puede ser en estudios administrativos. Además de su trabajo en NVISO, también puede ser el programador del sitio web Red Teamers redteamer.tips.

    ¿Tu PC te está dando problemas? ¡Relájate, hay una solución! Haga click aquí para descargar.