Debugger detection

Soyez le premier à donner votre avis sur cette source.

Vue 6 991 fois - Téléchargée 315 fois

Description

Il détécte si il y'a présence d'un débugger au lancement de votre programme (4 différentes méthodes)

Source / Exemple :


'Les constantes
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_DYN_DATA = &H80000004
Public Const OF_READ = &H0&
Public Const INVALID_HANDLE_VALUE = -1
Public Const GENERIC_WRITE = &H40000000
Public Const OPEN_EXISTING = 3
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
'Les API
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function IsDebuggerPresent Lib "kernel32" () As Long
Public Enum HCle
    HKeyLocalMachine = 0
    HKeyCurrentUser = 1
    HKeyClassesRoot = 2
    HKeyUsers = 3
    HKeyDynamicData = 4
End Enum

Private Function HKConvert(HK As HCle) As Long
If HK = 2 Then HKConvert = HKEY_CLASSES_ROOT
If HK = 1 Then HKConvert = HKEY_CURRENT_USER
If HK = 0 Then HKConvert = HKEY_LOCAL_MACHINE
If HK = 3 Then HKConvert = HKEY_USERS
If HK = 4 Then HKConvert = HKEY_DYN_DATA
End Function

Public Function LireValeur(HK As HCle, Chemin As String, Valeur As String) As String
Buff = 0
Buff = RegCreateKey(HKConvert(HK), Chemin, lng)
If Buff = 0 Then RegQueryValueEx lng, Valeur, 0&, 1, 0&, Buff
If Buff < 2 Then
    LireValeur = ""
    Exit Function
End If
LireValeur = String(Buff + 1, " ")
RegQueryValueEx lng, Valeur, 0&, 1, ByVal LireValeur, Buff
LireValeur = Left(LireValeur, Buff - 1)
End Function

Sub Main()
Call Debugger_Detection
End Sub

Public Sub Debugger_Detection()
message = "Debugger detected ! Please Diseable It before use our software"
titre = "Debugger detection !"
'1e méthode : L'API is debugger present
If IsDebuggerPresent <> 0 Then GoTo fin
'2e méthode : Cherche une clé consernant le débugger NuMega Softice
a = LireValeur(HKEY_LOCAL_MACHINE, "Software\NuMega\SoftICE", "InstallDir")
If a <> "" Then GoTo fin2
a = ""
a = LireValeur(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Uninstall\SoftICE", "UninstallString")
If a <> "" Then GoTo fin2
a = ""
a = LireValeur(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\App Paths\Loader32.Exe", "Path")
If a <> "" Then GoTo fin2
'3e methode : Utilisation de createfilea
si1 = "\\\\.\\SICE"     'Pour
si2 = "\\\\.\\SIWVID"   'win 9X
si3 = "\\\\.\\NTICE"    'NT
lngHandle = CreateFile(si1, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
If lngHandle <> INVALID_HANDLE_VALUE Then GoTo fin
lngHandle = CreateFile(si2, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
If lngHandle <> INVALID_HANDLE_VALUE Then GoTo fin
lngHandle = CreateFile(si3, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
If lngHandle <> INVALID_HANDLE_VALUE Then GoTo fin
'4e méthode : Utilisation de lopen
Pointer = lOpen(si1, OF_READ)
If Pointer <> INVALID_HANDLE_VALUE Then GoTo fin
Pointer = lOpen(si2, OF_READ)
If Pointer <> INVALID_HANDLE_VALUE Then GoTo fin
Pointer = lOpen(si3, OF_READ)
If Pointer <> INVALID_HANDLE_VALUE Then GoTo fin
Exit Sub
fin:
MsgBox message, vbCritical + vbOKOnly, titre
End
fin2:
MsgBox "Debugger is installed in this computer, Please uninstall it before use " & App.EXEName, vbCritical + vbOKOnly, "NuMega Softice installed !"
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
161
Date d'inscription
mardi 19 juin 2001
Statut
Membre
Dernière intervention
10 avril 2007

suidzer0.org, c'est le site d'un pote :)
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

Pour le site de la shmeit il a changé d'adresse : www.shmeitcorp.tk
sinon sur le site de christal il y a plein d'explication : christal.suidzer0.org
dedi : [Kheo] SC
Messages postés
13
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
5 janvier 2003

PatDeLaYaute > la plus part des débugger (je prend le cas de Softice) ont la particularité de ne PAS apparaitre dans la liste des taches parcequ'il se lance avant Windows, le système est bloquée quand on l'appelle avec Crtl-D, donc ton idée peut marcher pour d'autre débugger comme TWR mais Softice, non. Merci quand même.
Lowan > Je connais très bien l'existence de Frogice, chuit un cracker! Je salue au passage le formidable travail de Frog_Print. C'est le fichier Code.txt livré avec Frogice qui explique toutes les protections que j'ai fait mon chtit prog. Mais y'a des protections que j'ai pas incluse car c'est du pur asm qui ne peut pas etre "traduit" en VB et/ou ça implique des interruptions spécifiques au dos (int3...)
kalif > T'as qu'a chercher des tut de cracking et tu trouvera surrement une explication de softice, je te conseille 2 tut :
memento 2 par la shmeit corp
Acid burn tutorial 2000 par Acid_Burn

Thanks les gars pour votre aide
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012

qq pourrait me dire vite fait comment fonctionne softice ou un ptit url qui explique ...

++
Messages postés
19
Date d'inscription
mercredi 17 avril 2002
Statut
Membre
Dernière intervention
25 novembre 2005

Salut, bon ce n'est pas pour vous contredire mais bon. Il existe des utilitaires pour contourner les createfile, je ne citeré que frogice comme exemple. De plus il est tout aussi simple d'ouvrir ce fichier dans Numega smartcheck ou bien encore dans W32Dasm. Qui sont pour moi les meilleurs, de plus il suffit douvrir le fichier dans w32dasm trouver le saut conditionnel, ou bien tout simplement enlever le call avec un éditeur hexadécimal. Voila je te laisse. @+ enfin je tenais à te dire que cété déja pas mal davoir fait ca.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.