Buenos días amigos, estoy últimos días he intentado ocultar mi proceso completamente del administrador de tareas pero no lo he podido lograr, alguien me da una mano porfavor :), gracias..

el task.visible no lo oculta
rootkit?? en vb ! ajaj bueno soñamos??? modo kernel?
<Josh> y bueno hermano,tu hermana q me dijo q estaba cansada de tenerle el orto como la bandera de japon y bueno la pobre me quizo hacer un masaje prostatico nada mas pero era tanto su recelo y venganza acumulada q se esmero un poco mas de lo normal,pero bue,estuivo bien amorizado por la de dias horas años y lagrimas q echo la pobre de tanto culearla
Hay un tema de Inyección DLL en otro foro, así que si, es posible hacer un rootkit en VB6.
Inyectar una DLL con VB6 es muy fácil, lo difícil es crear la DLL en VB6, pero también se puede.

Suerte!
github.com/Slek-Z
jajaaj deja de hacerme reir Slek , a que modo ? rootkit pero a que modo ? que rootkit , dame ejemplos , que funcionen en vb , o programame uno vos ! jajaj dejare de reirme despues
<Josh> y bueno hermano,tu hermana q me dijo q estaba cansada de tenerle el orto como la bandera de japon y bueno la pobre me quizo hacer un masaje prostatico nada mas pero era tanto su recelo y venganza acumulada q se esmero un poco mas de lo normal,pero bue,estuivo bien amorizado por la de dias horas años y lagrimas q echo la pobre de tanto culearla
A Modo Kernel en Visual Basic es completamente imposible...A modo simple si,con un timer y un par de APIs,pero se ve parpadear el TaskManager y queda refeo...

Saludos...
Blog técnico dedicado a la seguridad informática y al estudio de nuevas vulnerabilidades.
Blog: http://www.seginformatica.net
Twitter: https://twitter.com/#!/p0is0nseginf
una breve explicacion para los que no conocen , las rootkit a modo usuario no son demasiado buenos si quieres ocultar un archivo, un proceso o lo que sea...tienen que ver quien se encarga de gestionar eso y no lo hace ningun programa lo hace el sistema operativo asi que la mejor manera, es trastear con el sistema operativo y para eso tienen que cargar drivers o modulos o como lo quieran llamar en kernelspace y para eso tienen que programarlos en el mismo lenguaje que esta programado el sistema operativo que es C o en ensamblador que se puede hacer siempre lo que quieran por eso les digo que usen C que es muy sencillo o ensamblador que tampoco es dificil, visualbasic no te permite hacer nada de eso... es como un elefante que va dejando un rastro apestoso por donde pasa y haciendo ruido y ralentizando todo.
Entonces Si hablamos de un buen "rootkit" se tiene que ejecutar en kernelspace osea, como parte del nucleo del sistema operativo y eso solo se puede hacer en C o en ensamblador

Espero que sea clara la explicacion!
<Josh> y bueno hermano,tu hermana q me dijo q estaba cansada de tenerle el orto como la bandera de japon y bueno la pobre me quizo hacer un masaje prostatico nada mas pero era tanto su recelo y venganza acumulada q se esmero un poco mas de lo normal,pero bue,estuivo bien amorizado por la de dias horas años y lagrimas q echo la pobre de tanto culearla
Claro,
pero podemos hacerlo con inyección DLL. La inyección DLL al explorer o al taskmanager lo hacemos desde VB, y después la dll la hacemos en C. A eso es lo que me refería yo.

Saludos!
github.com/Slek-Z

Código: Seleccionar todo

Option Explicit
'Declaraciones Api
'*************************************
'Retorna un handle de ventana
Public Declare Function FindWindow _
    Lib "user32" _
    Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long

'Enumera las ventanas hijas a partir de una superior
Public Declare Function EnumChildWindows _
    Lib "user32" ( _
        ByVal hWndParent As Long, _
        ByVal lpEnumFunc As Long, _
        ByVal lParam As Long) As Long

'Devuelve el texto de una ventana a partir del handle
Public Declare Function GetWindowText _
    Lib "user32" _
    Alias "GetWindowTextA" ( _
        ByVal hwnd As Long, _
        ByVal lpString As String, _
        ByVal cch As Long) As Long

'REcupera el nombre de la clase de ventana a partir del handle
Public Declare Function GetClassName _
    Lib "user32" _
    Alias "GetClassNameA" ( _
        ByVal hwnd As Long, _
        ByVal lpClassName As String, _
        ByVal nMaxCount As Long) As Long

Public Declare Function SendMessage _
    Lib "user32" _
    Alias "SendMessageA" ( _
        ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        lParam As Any) As Long

'Apis para usar un temporizador
Public Declare Function SetTimer _
    Lib "user32" ( _
        ByVal hwnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer _
    Lib "user32" ( _
        ByVal hwnd As Long, _
        ByVal nIDEvent As Long) As Long

Private Declare Function GetWindowThreadProcessId _
    Lib "user32" ( _
        ByVal hwnd As Long, _
        lpdwProcessId As Long) As Long

Private Declare Function ReadProcessMemory _
    Lib "kernel32" ( _
        ByVal hProcess As Long, _
        lpBaseAddress As Any, _
        lpBuffer As Any, _
        ByVal nSize As Long, _
        lpNumberOfBytesWritten As Long) As Long

Private Declare Function WriteProcessMemory _
    Lib "kernel32" ( _
        ByVal hProcess As Long, _
        lpBaseAddress As Any, _
        lpBuffer As Any, _
        ByVal nSize As Long, _
        lpNumberOfBytesWritten As Long) As Long

Private Declare Function OpenProcess _
    Lib "kernel32" ( _
        ByVal dwDesiredAccess As Long, _
        ByVal bInheritHandle As Long, _
        ByVal dwProcessId As Long) As Long

'Constantes
'****************************************

Const PROCESS_VM_OPERATION = &H8
Const PROCESS_VM_READ = &H10
Const PROCESS_VM_WRITE = &H20
Const PROCESS_ALL_ACCESS = 0
Private Const PAGE_READWRITE = &H4&

Const MEM_COMMIT = &H1000
Const MEM_RESERVE = &H2000
Const MEM_DECOMMIT = &H4000
Const MEM_RELEASE = &H8000
Const MEM_FREE = &H10000
Const MEM_PRIVATE = &H20000
Const MEM_MAPPED = &H40000
Const MEM_TOP_DOWN = &H100000

Private Declare Function VirtualAllocEx _
    Lib "kernel32" ( _
        ByVal hProcess As Long, _
        ByVal lpAddress As Long, _
        ByVal dwSize As Long, _
        ByVal flAllocationType As Long, _
        ByVal flProtect As Long) As Long
        
Private Declare Function VirtualFreeEx _
    Lib "kernel32" ( _
        ByVal hProcess As Long, _
        lpAddress As Any, _
        ByVal dwSize As Long, _
        ByVal dwFreeType As Long) As Long
        
Private Declare Function CloseHandle _
    Lib "kernel32" ( _
        ByVal hObject As Long) As Long

'Constantes para el ListView de la ventana del administrador de tareas
Private Const LVM_FIRST = &H1000
Private Const LVM_GETTITEMCOUNT& = (LVM_FIRST + 4)

Private Const ILVM_GETITEMW = (LVM_FIRST + 75)
Private Const LVIF_TEXT = &H1
Private Const LVM_DELETEITEM = 4104


Public Type LV_ITEM
    mask As Long
    iItem As Long
    iSubItem As Long
    state As Long
    stateMask As Long
    lpszText As Long 'LPCSTR
    cchTextMax As Long
    iImage As Long
    lParam As Long
    iIndent As Long
End Type

Type LV_TEXT
    sItemText As String * 80
End Type


Public Function Procesos(ByVal hWnd2 As Long, _
                         lParam As String) As Boolean
  
  Dim Nombre As String * 255, nombreClase As String * 255
  Dim Nombre2 As String, nombreClase2 As String
  Dim X As Long, Y As Long
  X = GetWindowText(hWnd2, Nombre, 255)
  Y = GetClassName(hWnd2, nombreClase, 255)
  'Buffers
  Nombre = Left$(Nombre, X)
  nombreClase = Left$(nombreClase, Y)
  
  Nombre2 = Trim$(Nombre)
  nombreClase2 = Trim$(nombreClase)
  
  'SysListView32 es el nombre de clase del LV del Administrador de T
  If nombreClase2 = "SysListView32" And Nombre2 = "Procesos" Then
     OcultarItems (hWnd2)
     Exit Function
  End If
  
  If Nombre2 = "" And nombreClase2 = "" Then
     Procesos = False
  Else
     Procesos = True
  End If
End Function

'A esta función se le pasa el Handle del ListView del Administrador de tareas _
que es obtenido desde la función " Procesos "
Private Function OcultarItems(ByVal hListView As Long) ' As Variant
   Dim pid As Long, tid As Long
   Dim hProceso As Long, nElem As Long, lEscribiendo As Long, i As Long
   Dim DirMemComp As Long, dwTam As Long
   Dim DirMemComp2 As Long
   Dim sLVItems() As String
   Dim li As LV_ITEM
   Dim lt As LV_TEXT
   If hListView = 0 Then Exit Function
   tid = GetWindowThreadProcessId(hListView, pid)
   
   'Obtiene el número de items del ListView
   nElem = SendMessage(hListView, LVM_GETTITEMCOUNT, 0, 0&)
   
   If nElem = 0 Then Exit Function
   
   ReDim sLVItems(nElem - 1)
   
   li.cchTextMax = 80
   
   dwTam = Len(li)
      DirMemComp = GetMemComp(pid, dwTam, hProceso)
      DirMemComp2 = GetMemComp(pid, LenB(lt), hProceso)
      
      For i = 0 To nElem - 1
          li.lpszText = DirMemComp2
          li.cchTextMax = 80
          li.iItem = i
          li.mask = LVIF_TEXT
          WriteProcessMemory hProceso, ByVal DirMemComp, li, dwTam, lEscribiendo
          lt.sItemText = Space(80)
          WriteProcessMemory hProceso, ByVal DirMemComp2, lt, LenB(lt), lEscribiendo
          
          'Recupera un item del LV
          Call SendMessage(hListView, LVM_GETITEMW, 0, ByVal DirMemComp)
          Call ReadProcessMemory(hProceso, ByVal DirMemComp2, lt, LenB(lt), lEscribiendo)
          
          'Acá verifica si lt.sItemText es el nombre del exe. Si está Lo elimina
          
          If TrimNull(StrConv(lt.sItemText, vbFromUnicode)) = App.EXEName & ".exe" Then
           Call SendMessage(hListView, LVM_DELETEITEM, i, 0)
           Exit Function
          End If
      Next i
      
      CloseMemComp hProceso, DirMemComp, dwTam
      CloseMemComp hProceso, DirMemComp2, LenB(lt)

End Function

Private Function GetMemComp(ByVal pid As Long, _
                           ByVal memTam As Long, _
                           hProceso As Long) As Long
    
    hProceso = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ _
                           Or PROCESS_VM_WRITE, False, pid)
    GetMemComp = VirtualAllocEx(ByVal hProceso, ByVal 0&, ByVal memTam, _
                           MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
End Function

Private Sub CloseMemComp(ByVal hProceso As Long, _
                         ByVal DirMem As Long, _
                         ByVal memTam As Long)
   
   Call VirtualFreeEx(hProceso, ByVal DirMem, memTam, MEM_RELEASE)
   CloseHandle hProceso

End Sub

'Elimina los nulos
Private Function TrimNull(sInput As String) As String
   Dim pos As Integer
   pos = InStr(sInput, Chr$(0))
   If pos Then
      TrimNull = Left$(sInput, pos - 1)
      Exit Function
   End If
   TrimNull = sInput
End Function

'Temporizador que cheaquea constantemente si el Administrador de tareas está ejecutandose
Public Sub TimerProc(ByVal hwnd As Long, _
                     ByVal nIDEvent As Long, _
                     ByVal uElapse As Long, _
                     ByVal lpTimerFunc As Long)
    
    Dim Handle As Long
    'Se obtiene el HWND del administrador de tareas
    Handle = FindWindow(vbNullString, "Administrador de tareas de Windows")

    'Si el administrador está visible el handle es distinto de 0 _
    y se llama a EnumChildWindows pasandole el Handle del AT y la dirección _
    de la función Procesos. EnumChildWindows obtiene el handle del ListView
    If Handle <> 0 Then
        EnumChildWindows Handle, AddressOf Procesos, 1
    End If
End Sub

'Oculta y visualiza el item del proceso
Public Sub Ocultar(ByVal hwnd As Long)
    App.TaskVisible = False
    SetTimer hwnd, 0, 20, AddressOf TimerProc
End Sub

Public Sub Mostrar(ByVal hwnd As Long)
    App.TaskVisible = True
    KillTimer hwnd, 0
End Sub

Código: Seleccionar todo

'Oculta el proceso del Administrador de Tareas
Private Sub Command1_Click()
    Ocultar Me.hwnd
End Sub

'Visualiza el proceso
Private Sub Command2_Click()
    Mostrar Me.hwnd
End Sub
http://www.ShadeHack.com/
Encontraras herramientas ! las que necesita
Imagen
Yo no entiendo muy bien tu pregunta, ni siquiera dices si lo que quieres ocultar es una aplicación tuya hecha en vb 6.0, o lo que quieres ocultar es un proceso de Windows. Sea como sea tengo este codigo que lo saque de otra web.
__________________________________________________________
En un módulo pones esto (tienes que agregar el modulo primero)

Código: Seleccionar todo

Option Explicit
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten 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 Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Const PROCESS_VM_OPERATION = &H8
Const PROCESS_VM_READ = &H10
Const PROCESS_VM_WRITE = &H20
Const PROCESS_ALL_ACCESS = 0
Private Const PAGE_READWRITE = &H4&

Const MEM_COMMIT = &H1000
Const MEM_RESERVE = &H2000
Const MEM_DECOMMIT = &H4000
Const MEM_RELEASE = &H8000
Const MEM_FREE = &H10000
Const MEM_PRIVATE = &H20000
Const MEM_MAPPED = &H40000
Const MEM_TOP_DOWN = &H100000

Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const LVM_FIRST = &H1000
Private Const LVM_GETTITEMCOUNT& = (LVM_FIRST + 4)

Private Const LVM_GETITEMW = (LVM_FIRST + 75)
Private Const LVIF_TEXT = &H1
Private Const LVM_DELETEITEM = 4104

Public Type LV_ITEM
 mask As Long
 iItem As Long
 iSubItem As Long
 state As Long
 stateMask As Long
 lpszText As Long 'LPCSTR
 cchTextMax As Long
 iImage As Long
 lParam As Long
 iIndent As Long
End Type

Type LV_TEXT
 sItemText As String * 80
End Type

Public Function Procesos(ByVal hWnd2 As Long, lParam As String) As Boolean
Dim Nombre As String * 255, nombreClase As String * 255
Dim Nombre2 As String, nombreClase2 As String
Dim X As Long, Y As Long
X = GetWindowText(hWnd2, Nombre, 255)
Y = GetClassName(hWnd2, nombreClase, 255)

Nombre = Left(Nombre, X)
nombreClase = Left(nombreClase, Y)
Nombre2 = Trim(Nombre)
nombreClase2 = Trim(nombreClase)
If nombreClase2 = "SysListView32" And Nombre2 = "Procesos" Then
 OcultarItems (hWnd2)
 Exit Function
End If
If Nombre2 = "" And nombreClase2 = "" Then
Procesos = False
Else
Procesos = True
End If
End Function

Private Function OcultarItems(ByVal hListView As Long) ' As Variant
 Dim pid As Long, tid As Long
 Dim hProceso As Long, nElem As Long, lEscribiendo As Long, i As Long
 Dim DirMemComp As Long, dwTam As Long
 Dim DirMemComp2 As Long
 Dim sLVItems() As String
 Dim li As LV_ITEM
 Dim lt As LV_TEXT
 If hListView = 0 Then Exit Function
 tid = GetWindowThreadProcessId(hListView, pid)
 nElem = SendMessage(hListView, LVM_GETTITEMCOUNT, 0, 0&)
 If nElem = 0 Then Exit Function
 ReDim sLVItems(nElem - 1)
 li.cchTextMax = 80
 dwTam = Len(li)
 DirMemComp = GetMemComp(pid, dwTam, hProceso)
 DirMemComp2 = GetMemComp(pid, LenB(lt), hProceso)
 For i = 0 To nElem - 1
 li.lpszText = DirMemComp2
 li.cchTextMax = 80
 li.iItem = i
 li.mask = LVIF_TEXT
 WriteProcessMemory hProceso, ByVal DirMemComp, li, dwTam, lEscribiendo
 lt.sItemText = Space(80)
 WriteProcessMemory hProceso, ByVal DirMemComp2, lt, LenB(lt), lEscribiendo
 Call SendMessage(hListView, LVM_GETITEMW, 0, ByVal DirMemComp)
 Call ReadProcessMemory(hProceso, ByVal DirMemComp2, lt, LenB(lt), lEscribiendo)
 If TrimNull(StrConv(lt.sItemText, vbFromUnicode)) = App.EXEName & ".exe" Then '<===========CAMBIAR
 Call SendMessage(hListView, LVM_DELETEITEM, i, 0)
 Exit Function
 End If
 Next i
 CloseMemComp hProceso, DirMemComp, dwTam
 CloseMemComp hProceso, DirMemComp2, LenB(lt)
End Function

Private Function GetMemComp(ByVal pid As Long, ByVal memTam As Long, hProceso As Long) As Long
 hProceso = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, pid)
 GetMemComp = VirtualAllocEx(ByVal hProceso, ByVal 0&, ByVal memTam, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
End Function

Private Sub CloseMemComp(ByVal hProceso As Long, ByVal DirMem As Long, ByVal memTam As Long)
 Call VirtualFreeEx(hProceso, ByVal DirMem, memTam, MEM_RELEASE)
 CloseHandle hProceso
End Sub
Private Function TrimNull(sInput As String) As String
 Dim pos As Integer
 pos = InStr(sInput, Chr$(0))
 If pos Then
 TrimNull = Left$(sInput, pos - 1)
 Exit Function
 End If
 TrimNull = sInput
End Function
Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
Dim Handle As Long
Handle = FindWindow(vbNullString, "Administrador de tareas de Windows")
If Handle <> 0 Then EnumChildWindows Handle, AddressOf Procesos, 1
End Sub

Public Sub Ocultar(ByVal hwnd As Long)
 App.TaskVisible = False
 SetTimer hwnd, 0, 20, AddressOf TimerProc
End Sub

Public Sub Mostrar(ByVal hwnd As Long)
 App.TaskVisible = True
 KillTimer hwnd, 0
End Sub
Y en el form (formulario), tienes que poner esto

Código: Seleccionar todo

Ocultar Me.hwnd
Claro, podrías ponerlo directamente para que se inicie en el formulario o ponerlo para que se oculte desde el boton.

Ya abarcando a todos los usuarios.

Código: Seleccionar todo

Private Sub Form_Load()
Ocultar Me.hwnd
End Sub
Pero para que sea muy pulcro y decente esto de ocultar, también deberías de ocultar tu form (formulario).

Código: Seleccionar todo

Form1.Hide
Sería así el caso

Código: Seleccionar todo

Private Sub Form_Load()
Form1.Hide
Ocultar Me.hwnd
End Sub
Si no ocultas tu form (formulario), la persona igual podría terminar el proceso desde el administrador de tareas (aun estando oculto el proceso), claro ocultas el proceso, pero no ocultas a la aplicación del administrador de tareas. ¿Me explico?

PD: Si quieres el codigo fuente, puedes bajarlo de aquí.

Pongo en link para que puedan bajar cualquier usuario, ya que da mucha lata iniciar sesion ^^

|www|.multiupload.com/V2I4VNCCOJ#

Saquenle eso de "|"

Good Bye XD
Imagen

Mostrar/Ocultar

Responder

Volver a “VB/.NET”