Debug Port

06/10/2008 - 03:40 von Frank | Report spam
Hallo alle,

ich habe in der Schule eine Funktion geschrieben die den Status des Debug
Ports überprüft an dem meine DLL attached ist. Hier ist der Code:

//Definitionen
#define PROCESS_INFO_DEBUGPORT 7

//Funktion Prototype
typedef HRESULT (WINAPI* fnNtQueryInformationProcess )( __in HANDLE, __in
PROCESSINFOCLASS, __out PVOID, __in ULONG, __out_opt PULONG );

//Debug Port überprüfung
UINT CSecurity::DebugPortProtection(void)
{
//Versuche NtDLL.dll zu laden
HMODULE hNTDLL( LoadLibrary( TEXT( "NtDLL.dll" ) ) );
if ( hNTDLL == NULL )
throw runtime_error( "could not load required function" );

//Versuche Funktion zu laden
fnNtQueryInformationProcess NtQueryInformationProcess =
static_cast<fnNtQueryInformationProcess>(
(fnNtQueryInformationProcess)GetProcAddress( hNTDLL,
"NtQueryInformationProcess" ) );

if ( NtQueryInformationProcess == NULL )
{
FreeLibrary( hNTDLL );
throw runtime_error( "invalid NtDLL.dll" );
}

//Call Funktion
NtQueryInformationProcess( GetCurrentProcess(),
(PROCESSINFOCLASS)PROCESS_INFO_DEBUGPORT, &qiProcess, sizeof( qiProcess ),
NULL );

//Free NtDLL.dll
FreeLibrary( hNTDLL );

//Return von Debug Port
return ( !hPort );
}


Jetzt frage ich mich ob es so etwas àhnliches auch für Vista gibt. Oder noch
besser was auf Vista und XP funktioniert. Zurückliegende suchen auf MSDN.com
ergaben bis her nur vor definierte Funktionen wie IsDebuggerPresent(). Das
ist mir aber zu heitel, da diese Standart Funktionen zu bekannt sind. Meist
werden diese schon von Programmen wie OllyDBG automatisch gehookt.

Ich würde mich über alles freuen was mich weiter bringt. Danke im vorraus!!
 

Lesen sie die antworten

#1 Martin Richter [MVP]
06/10/2008 - 10:37 | Warnen spam
Hallo Frank!

Da diese Gruppe normalerweise nur managed Code behandelt, wàre
microsoft.public.de.vc besser geeignet.

//Call Funktion
NtQueryInformationProcess( GetCurrentProcess(),
(PROCESSINFOCLASS)PROCESS_INFO_DEBUGPORT, &qiProcess, sizeof( qiProcess ),
NULL );

//Free NtDLL.dll
FreeLibrary( hNTDLL );

//Return von Debug Port
return ( !hPort );
}


Jetzt frage ich mich ob es so etwas àhnliches auch für Vista gibt. Oder noch
besser was auf Vista und XP funktioniert. Zurückliegende suchen auf MSDN.com
ergaben bis her nur vor definierte Funktionen wie IsDebuggerPresent(). Das
ist mir aber zu heitel, da diese Standart Funktionen zu bekannt sind. Meist
werden diese schon von Programmen wie OllyDBG automatisch gehookt.



Was ist Dein Problem mit diesem Code? Nach meiner Doku müsstedas auch
für Vista gelten.

Ansonsten schau Dir mal diesen Link an, der fast alles behandelt was es
dazu zu "Anti-Debugging" zu sagen gibt.
http://www.securityfocus.com/infocus/1893

Martin Richter [MVP] WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written
program is its own hell!" The Tao of Programming
FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com

Ähnliche fragen