Vai al contenuto


Foto

Debug Dll e WinAPI


Questa discussione e' stata archiviata Questo significa che non e' possibile rispondere
5 risposte a questa discussione

#1 thewebsurfer

thewebsurfer

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 6.903 Messaggi:

Inviato 26 marzo 2018 - 15:51

Hai visto mai che questo forum sia utile: prima di scrivere tutto il popo' di problema (ma neanche è lungo) c'è qualcuno che lavora con C++ (o .NET) e winAPI a basso livello?

Non ho ben capito come fare il debug di una dll specifica..semplicemente da Visual Studio avvio il debugger (attach to a process..) ma i breakpoint non vengono triggerati.

Sicuramente sbaglio qualcosa io, non conosco bene la programmazione winzoz a basso livello.


Messaggio modificato da thewebsurfer il 26 marzo 2018 - 16:01

Non c'è più l'entropia di una volta


#2 yorkeiser

yorkeiser

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 68.331 Messaggi:

Inviato 26 marzo 2018 - 15:52

L'utilità di debuggare un compilato?

O stai cercando di debuggare il sorgente della dll?


Messaggio modificato da yorkeiser il 26 marzo 2018 - 15:53

Il sole è giallo

Brava Giovanna, brava

E canto please don't let me be misunderstood mentre parcheggio nel parcheggio l'alfasud


#3 thewebsurfer

thewebsurfer

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 6.903 Messaggi:

Inviato 26 marzo 2018 - 16:00

L'utilità di debuggare un compilato?

O stai cercando di debuggare il sorgente della dll?

 

Ecco, è esattamente questo il mio primo dubbio.

Dunque ti spiego in due parole: stiamo facendo per l'università un proof of concept di un semplicissimo malware.

Sarebbe bello nascondere il processo dal task manager (essendo un proof of concept non ci interessa nascondere il processo da qualunque comando da shell o utility di terze parti varie..basta solo il task manager)

Così cercando in giro ho trovato una possibile soluzione:

https://www.codeproj...lobal-API-hooks

 

Praticamente windows permette di impostare nella chiave AppInit_DLLs una dll per fare api hooking di alcune chiamate di sistema, nello specifico tutte le chiamate che sono linkate a user32.dll.

L'articolo spiega nel dettaglio quello che esattamente mi serve, ma l'articolo si riferisce a winXP e testato con win7 quel codice non funziona. Da qui la necessità di capire quale chiamata è cambiata nel processo di hooking tra winxp e win7, facendo appunto il debug della mia dll.

Il problema, mio buon amico, è proprio quello che hai sollevato: come faccio a debuggare una dll che manifesta il suo comportamento (nasconde calc.exe da task manager) solo quando è impostata nella chiave del registro (ovviamente da compilata)? Ma più in generale: come cavolo faccio funzionare quel codice dell'articolo su win7 (o win10)?


Messaggio modificato da thewebsurfer il 26 marzo 2018 - 16:08

Non c'è più l'entropia di una volta


#4 yorkeiser

yorkeiser

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 68.331 Messaggi:

Inviato 26 marzo 2018 - 16:11

Beginning with Windows Vista®, the AppInit_DLLs infrastructure is disabled by default. This default behavior remains unchanged in Windows 7 and Windows Server 2008 R2.

 

 

L'hai abilitata?


Il sole è giallo

Brava Giovanna, brava

E canto please don't let me be misunderstood mentre parcheggio nel parcheggio l'alfasud


#5 thewebsurfer

thewebsurfer

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 6.903 Messaggi:

Inviato 26 marzo 2018 - 16:37

Se quella frase si riferisce alle chiavi RequireSignedAppInit_DLLs e LoadAppInit_DLLs si le ho impostate.

 

Voglio debuggare perché sono sicuro che c'è qualcosa che non va nel codice, ad esempio se provi a impostare AppInit su questa dll, la più generica possibile, funziona (prova che la funzionalità è attiva):

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved) {
/* open file */
FILE *file;
fopen_s(&file, "C:\\temp.txt", "a+");
__debugbreak();
switch (Reason) {
case DLL_PROCESS_ATTACH:
fprintf(file, "DLL attach function called.");
break;
case DLL_PROCESS_DETACH:
fprintf(file, "DLL detach function called.");
break;
case DLL_THREAD_ATTACH:
fprintf(file, "DLL thread attach function called.");
break;
case DLL_THREAD_DETACH:
fprintf(file, "DLL thread detach function called.");
break;
}

/* close file */
fclose(file);

return TRUE;
}

NB: se volete provarla fate estrema attenzione, come ho detto questa tecnica effettua l'hooking su tutte le chiamate linkate a user32.dll. Se volete provarla, impostate le chiavi nel registro, avviate il task manager e verificate che funzioni andando a vedere il file C:\temp.txt e poi toglietela subito dal registro.


Messaggio modificato da thewebsurfer il 26 marzo 2018 - 17:23

Non c'è più l'entropia di una volta


#6 Sider2

Sider2

    Schiavo

  • GRULLINO
  • 34.393 Messaggi:

Inviato 26 marzo 2018 - 22:28

Grazie ragazzi non riuscivo a prendere sonno e sto crollando