Comment Leur Permettre De Corriger Les Erreurs De Débogage Win32 DLL C#

Lorsque votre ordinateur fait des siennes, ce logiciel le réparera et protégera vos données.

Au cours des derniers mois, certains de nos utilisateurs ont indiqué qu’ils rencontraient le débogage de dll c# win32.

debug win32 dll c#

Lors de certaines missions Redteam, certains d’entre nous ont besoin d’écrire des DLL. Cependant, le débogage d’une DLL n’est pas facile. Celui-ci semble-t-il, car la DLL n’est pas conçue pour fonctionner avec elle.
Dans cet article, nous commencerons à voir comment déboguer efficacement une DLL définie.

Qu’est-ce qu’une DLL ?

Comment puis-je déboguer cette DLL ?

Définissez des points d’arrêt via le projet DLL.Faites un clic droit sur le projet DLL et choisissez “Définir comme projet de démarrage”.Assurez-vous qu’un nouveau service de configuration de solution est défini comme moyen de débogage. Appuyez sur F5, cliquez sur la flèche de démarrage normale et choisissez Déboguer > Démarrer le débogage.

La DLL abrégée est à exploration liée dynamiquement. C’est toute approche modulaire des codes du bâtiment. Les DLL sont écrites en C ou C++ et servent essentiellement de choix auxquels les programmes peuvent à leur tour se connecter pour s’exécuter avec succès. À une certaine plage, vous pouvez comparer DLL a dans un package python ou une sorte de suggestion de package npm, n’importe quelle bibliothèque. L’icône d’utilisation illustre assez bien le concept de DLL par rapport à EXE :

Comment déboguer une DLL évoquée avec PDB ?

S’il s’agit de n’importe quel fichier de référence (dll), le fichier de débogage (le fichier “pdb”) doit se trouver dans le même dossier que la dll. Vérifiez si vos projets trouvent des symboles de débogage (Project Properties => Build => Advanced => Output/Debug Info is equal to complete); et lorsque vous finissez de copier la DLL, ajoutez-la PDB.

Comme mentionné dans le préambule, une DLL n’est pas conçue pour fonctionner toujours seule, car le backbone ne peut pas faire de manière traditionnelle avec un débogage en dehors d’un package.

Option de débogage 1 : Utiliser OutputDebugString

Microsoft offre une fonction kernel32 dans cette .dll (oh regardez, une DLL !) appelée OutputDebugString qui vous permet d’imprimer le type de contenu d’une collection au débogueur système réel. Visual Studio produit des fonctionnalités intégrées qui peuvent capturer cette source (pplus à ce sujet plus tard). Mon débogueur de système de choix est Dbgview.exe de tous les packages sysinternals. Pour montrer comment fonctionne OutputDebugString, j’ai préparé un petit code d’affichage :

Après avoir prouvé qu’une DLL ne peut toujours pas s’exécuter seule, j’arrive à la conclusion d’exécuter la DemoDLL à l’aide de votre bouton “Exécuter” actuel dans Visual Studio. Je suis donc accueilli par ce tout petit homme :

Heureusement, Microsoft dispose d’un mécanisme de lancement de DLL intégré appelé rundll32.exe, mais rundll32.exe générera très probablement une erreur si vous n’avez tout simplement pas beaucoup de fonctions exportées (= fonctions dans les versions antérieures fois utilisés par d’autres programmes) dans chacun d’eux DLL. Mon collègue Didier Stevens parle des points d’entrée des DLL directement sur son blog. Si vous êtes intéressé par plus, faites-vous plaisir!

En raison de vos problèmes de gestion des entrées, j’ai créé tout type de chargeur de DLL squelette qui peut être plus facilement adapté à vos besoins, qui se trouve malheureusement ici : https://github.com /NVISO-BE/DLLoader

Comme vous pouvez facilement le voir dans le code de présentation de l’entreprise, toutes mes sorties de débogage contiennent “[DBG]”, cela se produisait sans raison.

Dbgview est un débogueur “réseau” qui fait beaucoup de bruit en fonction de ce qu’un individu a installé dans le système. Cependant, le dbgview a une méthode de filtrage des options. Étant donné que chacune des bandes de débogage contient “[DBG]”, nous pouvons simplement indiquer à Dbgview de n’afficher que les messages de notre institution comme celui-ci :

Tout peut être décrit comme un paramètre, il est temps que vous puissiez exécuter notre DLL et voir une partie de la sortie DebugView :

Méthode de débogage 2 : Utilisation de Printf

Cette méthode utilise printf à la place, y compris OutputDebugString, donc modifions notre :

Lorsque nous utilisons notre propre chargeur de DLL, nous voyons tout ce que cette sortie printf, qui est souvent écrite, aidera la sortie standard du programme de la machine de chargement de DLL, qui à son tour est la véritable console d’ouverture.

Méthode de débogage 3 : Utiliser le chargeur de DLL pour déboguer dans Visual Studio

Vous avez besoin de corriger des erreurs Windows ? Reimage peut vous aider

Votre ordinateur est-il lent et lent ? Obtenez-vous le redoutable écran bleu de la mort ? Alors il est temps de télécharger Restoro ! Ce logiciel révolutionnaire réparera toutes vos erreurs courantes de Windows, protégera vos fichiers contre la perte ou la corruption et assurera le fonctionnement optimal de votre matériel. Alors qu'est-ce que tu attends? Téléchargez Restoro maintenant !

  • 1. Téléchargez et installez le logiciel Reimage
  • 2. Ouvrez le logiciel et cliquez sur "Scan for Issues"
  • 3. Cliquez sur "Réparer tout" pour lancer le processus de réparation

  • Maintenant que nous détenons les nouveaux principes de fonctionnement du chargement des DLL de remplacement, nous pouvons indiquer à Visual Studio si vous souhaitez l’utiliser, car il s’agit du processus de maman ou de papa, afin que notre équipe parcoure les DLL dans le L’environnement Visual Studio réel, le débogage et nos services auront la possibilité de déboguer les DLL de la même manière qu’ici dans un fichier EXE débogué.

    Comment déboguer une application Win32 ?

    Ouvrez un projet en cours d’exécution dans Visual Studio.Dans le menu Déboguer, sélectionnez Démarrer.Déboguez à l’aide des méthodes décrites dans la section Vue d’ensemble du débogueur.

    Dans le champ type de commande, indiquez le chemin d’accès au fichier exécutable du chargeur DLL ; dans la région Arguments de commande, spécifiez les arguments requis par notre chargeur de DLL, y compris le chemin d’accès au test de débogage DLL ; nous ne pouvons pas obtenir une fonction exportable, mon partenaire et moi sommes loin d’utiliser le nouvel argument. Si vous souhaitez profiter de ce dernier argument, vous pouvez le faire de la même manière que dans la console.

    Désormais, lorsque votre site exécute la DLL Can, le dessin sur le bouton de lecture vert sera probablement généré automatiquement par Visual Studio. Cela indique au chargeur de DLL de s’assurer que vous commencez avec les arguments actuellement définis dans la page de propriétés du projet.
    Comme votre entreprise peut le constater, Visual Studio trouve et gère désormais efficacement les points d’arrêt comme d’habitude :

    debug win32 dll c#

    Parce que certaines instructions printf sont encore une idée cadeau, elles sont généralement également imprimées sur sa console :

    Conclusion

    En fonction de la complexité spécifique de votre code DLL, dans la plupart des cas, vous serez tout à fait prêt à utiliser le chargeur de DLL dans Visual So Studio afin que votre propre entreprise puisse déboguer comme n’importe quel autre type de programme. Si vous le souhaitez, n’importe qui avec les instructions printf peut brancher Activer le chargeur DLL afin que vous puissiez voir près de n’importe quelle vue en temps réel de ce qui est défini via n’importe quelle sortie de console créée par le chargeur DLL. appels asynchrones, OutputDebugString est désormais la meilleure option car le chargeur DLL ne tient pas compte de l’objectif des nouveaux threads ou des appels asynchrones. Ferme

    Comment exécuter une DLL dans Visual Studio ?

    Allez dans le menu démarrer.Connectez-vous qui aidera l’outil Visual Studio.Accédez à certains des répertoires ci-dessus.Pour VS 2013, consultez “Invite de commandes développeur”, pour VS 2013, pour VS 2010, regardez simplement “Invite de commandes Visual Studio”.Une fois que l’invite apparaît sur l’écran de votre téléphone, tapez ILDASM.La fenêtre ILDASM s’ouvrira.

    C’est l’incursion de notre entreprise dans le monde normal concernant le débogage DLL. J’espère que l’article de blog spécial a été instructif et vous a fait comprendre quelque chose d’utile !

    À propos de cet auteur

    Jean-François Mays est un ingénieur web 2 professionnel qui travaille au sein de l’équipe NVISO Cyber ​​​​Resilience. Lorsqu’il n’est pas vraiment au travail, vous pouvez probablement recevoir Jean-François au gymnase ou pendant ses études administratives. En plus de votre travail d’homme chez NVISO, il est en même temps le programmeur du site redteamer.tips des Red Teamers.

    Votre PC vous pose problème ? Détendez-vous, il y a une solution ! Cliquez ici pour télécharger.