Come Correggere Gli Errori Di Debug C# Della DLL Win32

Quando il tuo computer funziona, questo software lo risolverà e proteggerà i tuoi dati.

Negli ultimi giorni storici, alcuni dei nostri ricercatori hanno segnalato di essere afflitti dal debug di c# win32 dll.

debug win32 dll c#

Durante alcune missioni Redteam, abbiamo bisogno di scrivere DLL. Tuttavia, il debug di una DLL non è così facile. Quello sembra, sulla base del fatto che la DLL non è progettata per funzionare con essa.
In questo articolo, esaminerò personalmente come eseguire il debug di una DLL in modo competente DLL.

Che cos’è una DLL?

Come si esegue il debug di una DLL?

Imposta punti di interruzione tramite il progetto DLL attualmente.Fare clic con il tasto destro del mouse sul programma DLL e selezionare “Imposta come progetto di avvio”.Assicurati che il servizio di configurazione della soluzione sia letteralmente impostato per il debug. Premi F5, fai scorrere la freccia di avvio verde e scegli Debug> Avvia debug.

La DLL abbreviata è per l’esplorazione collegata dinamicamente. È un approccio modulare alla creazione di codici. Le DLL sono scritte in C o C++ e fondamentalmente servono per una libreria che i programmi possono utilizzare Turn Access per funzionare correttamente. In una certa misura, puoi confrontare DLL a con un pacchetto Python, forse un suggerimento per il pacchetto npm, qualsiasi assortimento. L’icona seguente illustra davvero bene la comprensione di DLL rispetto a EXE:

Come si esegue il debug di una DLL di riferimento con PDB?

Se è anche un file di riferimento (dll), attualmente il valore di debug (il file “pdb”) deve trovarsi nella stessa cartella disponibile della dll. Controlla se le tue opere d’arte stanno preparando simboli di debug (Proprietà progetto => Build => Avanzate => Output/Informazioni debug = completo); e quando la maggior parte delle persone finisce per copiare la DLL, sviluppa il suo PDB.

Come accennato in questo preambolo, una DLL non è progettata per consentire loro di funzionare da sola, poiché la spina dorsale semplicemente non può eseguire l’antico modo di eseguire il debug al di fuori di un nuovo pacchetto.

Opzione di debug 1: usa OutputDebugString

Microsoft fornisce una funzione kernel32 in una .dll (oh guarda, una DLL!) chiamata OutputDebugString che ti consente di stampare il contenuto di una riga sul debugger di sistema. Visual Studio ha funzionalità integrate che possono spremere questo output (più in dettaglio in seguito). Il mio debugger di sistema preferito è Dbgview.exe dal pacchetto sysinternals. Per indicare come funziona OutputDebugString, ho preparato ogni piccolo codice demo:

Dopo aver dimostrato che questa DLL non può essere eseguita sul suo utilizzo, decido di eseguire la DemoDLL utilizzando il pulsante “Esegui” in Visual Studio e sono accolto da questo tipo di omino:

Fortunatamente, Microsoft ha un vero e proprio meccanismo di caricamento DLL integrato chiamato rundll32.exe, piuttosto rundll32.exe può generare un errore nel caso in cui non si disponga di molte parti esportate (=funzioni utilizzate in precedenza dai programmi successivi) in ogni DLL. Il mio collega Didier Stevens parla gentilmente dell’acquisizione di punti DLL sul suo blog. Se ti interesserà di più, concediti un regalo!

A causa di questi problemi di gestione dell’input, ho creato uno scheletro di caricatore DLL che secondo gli esperti può essere facilmente adattato alle tue esigenze principali, che può essere trovato elencato: https://github.com /NVISO-BE/DLLoader

Come puoi facilmente vedere in tutto il codice demo, tutte le buone righe di output di debug contengono “[DBG]”, questo deve essere successo senza motivo.

Dbgview è sempre stato un debugger di rete che fa il rumore effettivo in base a ciò che tutti hanno installato nel sistema effettivo. Tuttavia, dbgview ha 1 filtro di opzioni. Poiché ciascuna delle nostre righe di debug contiene “[DBG]”, abbiamo la possibilità di dire semplicemente a Dbgview di comunicare solo messaggi alla nostra organizzazione come questo:

Tutto può essere facilmente descritto come un’impostazione, potrebbe essere il momento di eseguire la nostra DLL e vedere l’output di DebugView:

Metodo di debug 2: utilizzo di Printf

Questo metodo richiede printf invece di OutputDebugString, quindi modifichiamo il nostro codice:

Quando usiamo molto del nostro caricatore di DLL, vediamo tutti gli output di printf, che il più delle volte viene scritto nello stdout di questo programma di caricamento DLL, che in scherzo è la nostra console di apertura.

Metodo di debug 3: utilizzare il caricatore di DLL per eseguire il debug in Visual Studio

Devi correggere gli errori di Windows? Reimage può aiutare

Il tuo computer è lento e lento? Stai ricevendo il temuto Blue Screen of Death? Allora è il momento di scaricare Restoro! Questo software rivoluzionario riparerà tutti i tuoi errori comuni di Windows, proteggerà i tuoi file da perdita o danneggiamento e manterrà il tuo hardware funzionante in modo ottimale. Allora, cosa stai aspettando? Scarica Restoro ora!

  • 1. Scarica e installa il software Reimage
  • 2. Apri il software e fai clic su "Cerca problemi"
  • 3. Fai clic su "Ripara tutto" per avviare il processo di riparazione

  • Ora che abbiamo il nuovo meccanismo di caricamento della DLL sostitutiva, possiamo dire a Visual Studio di usarlo perché potrebbe essere il processo padre, quindi la nostra organizzazione eseguirà le DLL nel tipo di effettivo Ambiente Visual Studio, debug, inoltre la nostra azienda sarà in grado di eseguire il debug di DLL nello stesso modo eccezionale di un EXE sottoposto a debug.

    Come si esegue il debug dell’applicazione Win32?

    Aprire una rappresentazione in esecuzione in Visual Studio.Nell’area Debug, seleziona Avvia.Eseguire il debug utilizzando i metodi dichiarati nella sezione Debugger in breve.

    Nel campo Comando, specifica il mio percorso al file eseguibile sul caricatore DLL; nel campo Argomenti comando, specificare gli argomenti richiesti dal caricatore DLL, incluso direi il percorso del test di debug DLL; la maggior parte di noi non ottiene una fantastica funzione esportabile, siamo lontani dal generare l’uso del secondo argomento. Se si desidera utilizzare quest’ultimo argomento, l’individuo può farlo in un modo come nella console.

    Ora, nel momento in cui esegui la DLL Can, l’uso del pulsante verde have verrà generato automaticamente fondamentalmente da Visual Studio. Questo indica al caricatore di DLL di iniziare con il battibecco attualmente specificato nella pagina est del progetto.
    Come puoi vedere, Visual Studio ora trova e conserva correttamente i punti di interruzione come al solito:

    debug win32 dll c#

    Poiché alcune istruzioni printf sono forse ancora presenti, di solito vengono visualizzate anche sulla console:

    Conclusione

    A seconda della complessità del codice della tua DLL, nella maggior parte dei casi sarai sicuramente in grado di utilizzare il caricatore di DLL in Visual So Studio in modo che la tua azienda possa eseguire il debug in modo simile a qualsiasi altro programma. Se lo si desidera, le persone con le istruzioni printf possono scaricare inAbilita il caricatore DLL in modo da poter vedere anche quasi tutte le visualizzazioni in tempo reale relative a ciò che sta accadendo attraverso l’output della console di gioco del caricatore DLL. chiamate asincrone, OutputDebugString è ora l’opzione più utile perché il caricatore DLL potrebbe non tenere conto dei nuovi thread, forse chiamate asincrone. Fattoria

    Come si esegue una DLL in Visual Studio?

    Vai al menu per iniziare.Accedi allo strumento di Visual Studio.Passa alla directory sopra.Per VS l’anno 2013 fare clic su “Prompt dei comandi per sviluppatori”, per VS 2013 o per VS 2010 fare clic con il pulsante destro del mouse su “Prompt dei comandi di Visual Studio”.Quando la richiesta esatta viene visualizzata sul parabrezza del telefono, digita ILDASM.La finestra ILDASM è sicuramente aperta.

    Questa è la nostra incursione nel mondo quotidiano del debug delle DLL. Ho risolto il particolare post del blog è stato utile e ti ha insegnato qualcosa di utile!

    Informazioni su questo autore

    Jean-Francois Mays è un particolare ingegnere sociale professionista che lavora in alto nel team di Cyber ​​Resilience di NVISO. Quando di solito non lavora, potresti probabilmente trovare Jean-Francois all’idoneità fisica o negli studi amministrativi. Oltre al suo lavoro in NVISO, il tuo ragazzo è anche il programmatore dell’intero sito web dei Red Teamers redteamer.tips.

    Il tuo PC ti dà problemi? Rilassati, c'è una soluzione! Clicca qui per scaricare.