Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cobein

#471
No es la misma pregunta.

Mira este codigo, te va a reaponder varias de tus dudas.

http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=67914&lngWId=1

Nota: No funciona 100% de las veces, te recomendaria qu elo usaes de guia y mejor buscate alguno en C que funcione bien, por que la verdad los que vi de VB no son del todo confiables
#472
Me tome la libertad de modificar el code para detectar tambien Sun VirtualBox, lo testie en ubuntu corriendo un XP SP2

Código (vb) [Seleccionar]

Function IsVirtualPCPresent() As Boolean
    Dim DetectVirtualPC As String

    Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set HDS = WMI.ExecQuery("Select * from Win32_DiskDrive")

    DetectVirtualPC = ""
    For Each objHDS In HDS
        DetectVirtualPC = DetectVirtualPC & objHDS.Caption & objHDS.Model & objHDS.PNPDeviceID
    Next

    DetectVirtualPC = UCase(DetectVirtualPC)
   
    Select Case True
        Case DetectVirtualPC Like "*VIRTUAL*"
            IsVirtualPCPresent = True
        Case DetectVirtualPC Like "*VBOX*"
            IsVirtualPCPresent = True
    End Select

End Function
#473
Te recomendaria que en primer lugar leas como se analizan las huellas manualmente y despues intentes volcar esa logica a tu programa.
#474
Me puse a cureosear un poco despues de ver este post y vi otra manera de ver si nuestra aplicacion esta corriendo en una sandbox, no se que tan buena sera pero al parecer funciona correctamente con Sandboxie.

La mecanica es simple, todas las claves, archivos, semaforos, etc. son redireccionados por el sandbox, asi que simplemente escaneando las claves abiertas por nuetra aplicacion podemos ver que estan redireccionadas a la hive creada por el sandbox.

Lo dejo como curiosidad

Código (vb) [Seleccionar]

'---------------------------------------------------------------------------------------
' Module      : mIsAppSandboxed
' DateTime    : 01/07/2008 08:32
' Author      : Cobein
' Mail        : cobein27@hotmail.com
' WebPage     : http://cobein27.googlepages.com/vb6
' Purpose     : Determine if the app is running into a sandbox
' Usage       : At your own risk
' Requirements: None
' Distribution: You can freely use this code in your own
'               applications, but you may not reproduce
'               or publish this code on any web site,
'               online service, or distribute as source
'               on any media without express permission.
'
' Reference   :
'
' History     : 01/07/2008 First Cut....................................................
'---------------------------------------------------------------------------------------
Option Explicit

Private Const STATUS_INFO_LENGTH_MISMATCH   As Long = &HC0000004
Private Const HEAP_ZERO_MEMORY              As Long = &H8

Private Type SYSTEM_HANDLE
    UniqueProcessId                         As Integer
    CreatorBackTraceIndex                   As Integer
    ObjectTypeIndex                         As Byte
    HandleAttributes                        As Byte
    HandleValue                             As Integer
    pObject                                 As Long
    GrantedAccess                           As Long
End Type

Private Type SYSTEM_HANDLE_INFORMATION
    uCount                                  As Long
    aSH()                                   As SYSTEM_HANDLE
End Type

Private Declare Function NtQuerySystemInformation Lib "NTDLL.DLL" (ByVal SystemInformationClass As Long, ByVal pSystemInformation As Long, ByVal SystemInformationLength As Long, ReturnLength As Long) As Long
Private Declare Function NtQueryObject Lib "NTDLL.DLL" (ByVal ObjectHandle As Long, ByVal ObjectInformationClass As Long, ByVal ObjectInformation As Long, ByVal ObjectInformationLength As Long, ReturnLength As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function lstrcpyW Lib "kernel32" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function GetProcessHeap Lib "kernel32" () As Long
Private Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Public Sub Main()
    MsgBox IsAppSandboxed
End Sub

Public Function IsAppSandboxed() As Boolean
    Dim lSize               As Long
    Dim bvBuff()            As Byte
    Dim tSHI                As SYSTEM_HANDLE_INFORMATION
    Dim i                   As Long
    Dim lPID                As Long
   
    lSize = 1024: ReDim bvBuff(lSize) 'this is because ReturnLength returns 0 :S
    Do While NtQuerySystemInformation(16, VarPtr(bvBuff(0)), ByVal lSize, 0&) = _
       STATUS_INFO_LENGTH_MISMATCH
        lSize = lSize * 2
        ReDim bvBuff(lSize)
    Loop
   
    Call CopyMemory(tSHI.uCount, bvBuff(0), &H4)
    ReDim tSHI.aSH(tSHI.uCount - 1)
    Call CopyMemory(tSHI.aSH(0), bvBuff(4), (tSHI.uCount - 1) * 16)
   
    lPID = GetCurrentProcessId
   
    For i = 0 To tSHI.uCount - 1
        If tSHI.aSH(i).UniqueProcessId = lPID Then 'Filter by local handles
            If tSHI.aSH(i).ObjectTypeIndex = 20 Then 'Filter by Key
                If InStr(1, GetLocalObjectName(tSHI.aSH(i).HandleValue), "SANDBOX_") Then
                    IsAppSandboxed = True
                    Exit for '<----EDIT
                End If
            End If
        End If
    Next
End Function

Public Function GetLocalObjectName(ByVal lHandle As Long) As String
    Dim lMem    As Long
    Dim sPath   As String
    Dim lSize  As Long

    lMem = HeapAlloc(GetProcessHeap, HEAP_ZERO_MEMORY, &H1000)
    Call NtQueryObject(lHandle, 1, lMem, &H1000, lSize)
    Call HeapFree(GetProcessHeap, 0, lMem)
    If Not lSize > 8 Then Exit Function
    sPath = Space(lSize)
    Call lstrcpyW(sPath, lMem + &H8)
    sPath = StrConv(sPath, vbFromUnicode)
    GetLocalObjectName = Left$(sPath, lstrlen(sPath))
End Function

#475
Podes descargar un ejemplo funcional de aca

USB detection.zip on UpSourceCode.com.ar


Edit reemplaza las comas por &
#476
Un comentario acerca del code, seria coveniente agregar control de errores porque en algunos sistemas al tratar de acceder a WMI nos da error. Por lo me nos en vista con una cuenta restringida.
#477
Muy interesante, me preguntaba si no hay una manera un poco mas "general" de detectar este tipo de soft?
#478
Programación Visual Basic / Re: Inyeccion DLL
29 Junio 2008, 20:36 PM
Probe hacer lo que decis E0N de cargar la libreria de VB pero ... no me funciono, si a alguien le funciona bienvenido es un ejemplo.
#479
Programación Visual Basic / Re: Inyeccion DLL
29 Junio 2008, 06:58 AM
La verdad que no tengo nada, pero te puedo decir algunas

Las apis en el caso de que las uses las tenes que meter en un type library

Las funciones de VB mas que nada las de manejo de cadenas NO FUNCIONAN

Tene en cuenta que no podes usar nada que dependa de las librerias de VB porque sino al inyectar la libreria va a hacer referencia a la libreria de VB la cual posiblemente no este cargada en la memoria del proceso inyectado

podes usar apis y cosas como if select case y alguna que otra cosa mas pero es bastante limitado, tenes que manejarte mas que nada con APIs.

Si buscas en este foro vas a ver ejemplos que deje.
#480
Programación Visual Basic / Re: Inyeccion DLL
29 Junio 2008, 00:24 AM
Si se pueden hacer dll en VB para inyectar, no es una tara simple pero siendo cuidadoso se pueden hacer. Necesitas un control de compilador y seguir algunas reglas al programar nada mas.