Copy Link
Add to Bookmark
Report

Gedzac Mitosis Ezine Issue 02 018

eZine's profile picture
Published in 
Mitosis
 · 4 years ago

  

(C) MITOSIS #2 E-Zine/GEDZAC 2004


Tema : Tecnicas Simples Antidebugging
Autor : MachineDramon
Válido para : Microsoft Visual Basic 6.0

Las tecnicas para detectar un debugger que se expondran aqui, son simples y no
detendran a alguien experimentado por mucho tiempo, pero siempre es mejor que un
virus tenga antidebugging.
Para tecnicas mas avanzadas consultar el articulo escrito por Jtag y ErGrone en
mitosis 1 sobre antidebug en asm.

5 Cosejos:
-----------
1: Al crear el sub con las instrucciones anti-debug hay que ponerle un nombre que
no despierte sospechas, pos si hace un desensamblado y ve "sub anti-debug()", ya
lo descubrio, poner algo como: "sub mircdcc()", etc

2: Encripten todo lo que puedan el sub anti-debug, ya que mientras menos entienda
el analizador que es lo que hacemos mejor.

3: Si es posible coloque el sub anti-debug unas 3 veces en el code, con nombres
diferentes, esto para confundir.

4: Llamen al sub o a los sub anti-debug desde diferentes partes del code no sola-
mente al comienzo, llamarlo desde diferentes puntos unas 5 veces minimo.

5: Si usamos valores numericos en el sub, obtengamoslos mediante operaciones, por
ejemplo si queremos poner un -1 no lo pongamos de frente
sino ((Asc("%") - 1) / -2) + ((8 * 2) + (6 Xor 7)) esta operacion = -1
y puede ayudar a confundir al que analize.
---------------------------------------------------------------------------------

'Declaramos apis
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal _
lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal _
dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" _
() As String

Private Declare Function IsDebuggerPresent Lib "kernel32" () As Long

Sub MircDCC()
'Resumidor de errores
On Error Resume Next

tmpreg = "HKEY_LOCAL_MACHINE\Software"

'Colocamos en un array unas llaves del reg, que pertenecen al Softice
sRg = Array(tmpreg & "\NuMega\SoftICE\InstallDir", _
tmpreg & "\Microsoft\Windows\CurrentVersion\Uninstall\SoftICE\UninstallString", _
tmpreg & "\Microsoft\Windows\CurrentVersion\App Paths\Loader32.Exe\Path")

'Iniciamos bucle for para tratar de leer las llaves del array, si existe
'alguna Softice esta instalado y terminamos el programa.
For x = 0 To UBound(sRg)
sRr = Rr(sRg(x))
If sRr <> "" Then End
Next

'Estas strings no sirven para identificar los vxd de softice en win9x y NT
sHn = Array("\\\\.\\SICE", "\\\\.\\SIWVID", "\\\\.\\NTICE")

'Bucle for para verificar la existencia en memoria de alguno de los vxd
'si se devuelve un handle valido al llamar a createfile, hay softice
'y terminamos el programa
For i = 0 To UBound(sHn)
sHle = CreateFile(sHn(i), &H40000000, &H1 Or &H2, ByVal 0&, 3, 0, 0)
If sHle <> -1 Then End
Next

'Esta api nos permite saber si nuestro programa se ejecuta desde un debugger
'devuelve 0 si no y 1 si hay debugger, si hay debugger terminamos el programa
If IsDebuggerPresent() <> 0 Then End

'Si no se ha creado antes, creamos el objeto ws
Set Bw = CreateObject("WScript.Shell")

'Iniciamos un bucle for para listar las variables de entorno, definidas en
'el equipo, si softice esta instalado habra una como: "cmdline=winice"
'si la encontramos terminamos el programa
For Each strEnv In Bw.Environment("PROCESS")
If InStr(LCase(strEnv), "cmdline") And InStr(LCase(strEnv), "winice") Then End
Next

'Llamamos a GetCommandLine para obtener el path del virus, se ob-
'tiene por ejemplo: "C:\virus.exe" ,si se ejecuta desde un debugger:
'C:\virus.exe ,observese que desde un debugger no tiene comillas
'entonces obtenemos el codigo ASCII del primer caracter de la izquierda
'que deberia ser 34, osea el codigo de una comilla, si es diferente hay
'debugger y terminamos el programa
If Asc(Left(GetCommandLine(), 1)) <> 34 Then End
End Sub
---------------------------------------------------------------------------------

(C) MITOSIS #2 E-Zine/GEDZAC 2004

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT