Foros del Web » Programación para mayores de 30 ;) » Programación General »

ocultar proceso con vb en xp

Estas en el tema de ocultar proceso con vb en xp en el foro de Programación General en Foros del Web. Tengo el siguiente problema, necesito que el usuario de mi aplicaion de visual basic no pueda cerrar el programa (al menos no fácilmente) para eso ...
  #1 (permalink)  
Antiguo 24/11/2004, 23:47
 
Fecha de Ingreso: mayo-2004
Ubicación: En mi casa
Mensajes: 54
Antigüedad: 20 años, 6 meses
Puntos: 0
ocultar proceso con vb en xp

Tengo el siguiente problema, necesito que el usuario de mi aplicaion de visual basic no pueda cerrar el programa (al menos no fácilmente) para eso lo he quitado de las aplicaciones con app.taskvisible=false.

Sin embargo cuando el usuario pasa a la pestaña procesos puede ver mi porgrama corriendo y cerrarlo, me pueden decir como ocultarlo de la lista de procesos, he visto como hacerlo a través de RegisterServiceProcess en win 9x pero esta API no funciona con XP, entonces ¿como puedo ocultar un proceso con vb (6 o .NET) en xp?

Muchas gracias por la ayuda que siempre encuentro en este foro, cuando busco y busco por todos lados y no encuentro pongo un post aquí y siempre hay alguien que me ayuda, que bien! es esto lo que lo impulsa a uno a ayudar cuando ve a alguien con dificultades y uno sabe la respuesta.
__________________
Quiero que ciencia y tecnología avancen muy rápido, por eso comparto lo que se, podría servir a alguién q esté creando algo genial.
  #2 (permalink)  
Antiguo 18/06/2010, 20:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: ocultar proceso con vb en xp

mira, mucha gente de mierda no quiere compartir, nose que deliran de virus o super troyanos, yo la verdad intento esconder un exe, porque no quiero que un super lammer lo abra con un editor de memoria, o con un capturador de paquetes winsock, disculpa por no poder ayudarte, este foro esta lleno de forros, y de ignorantes tambien
  #3 (permalink)  
Antiguo 13/01/2011, 05:20
 
Fecha de Ingreso: enero-2011
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: ocultar proceso con vb en xp

Yo te puedo ayudar. (Es para Visual Basic 6.0).

Bueno: Te voy a poner aquí el codigo, no solo para que tu lo leas, si no para que las otras personas que lo busquen tambien lo encuentren, como que si subo el codigo fuente en un host, no va durar para siempre .
__________________________________________________ _______________

Bueno primero que nada tienes que crear un modulo (¿Sabes crear un modulo verdad?).

Código:
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
Luego tienes que poner esto en el form (¿sabes lo que es un form verdad?, es el formulario).

Código:
Private Sub Form_Load()
Form1.Hide
Ocultar Me.hwnd
End Sub
Bueno, estos codigos los pongo por si alguien ya sepa como compilar un proyecto, con la base de copy-paste en el vb.

Y bueno, esto también pongo para los que no conocen la forma de crear un modulo o colocar palabras en el formulario (form).

Asi que aquí se pueden bajar el código fuente modificad por mi.

[URL="http://www.multiupload.com/V2I4VNCCOJ"]http://www.multiupload.com/V2I4VNCCOJ[/URL]

Y para quienes no estan registrados, pongo de esta forma el link de descarga del codigo fuente:

(Tienes que agregar el www.)

multiupload.com/V2I4VNCCOJ

Y para figurar con todos. Yo soy DRWD.

Me pueden contactar en mi msn: [email protected]

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.