Cómo ocultar completamente la ventana usando programación VB
En algunos sistemas, a menudo se requiere que los programas se ejecuten ocultos para propósitos específicos, como el sistema de monitoreo en segundo plano, el programa de control de troyanos, la prevención de copia de código fuente, etc. en DCS (Sistema de control distribuido) para reducir el descubrimiento. e interceptación. Riesgo de muerte y desmontaje. Este tipo de módulo funcional requiere que el programa no sólo no aparezca en el escritorio durante la operación, sino que tampoco permita que el operador lo encuentre en la lista del administrador de tareas.
El principio de invisibilidad del programa. Para un programa invisible, los requisitos más básicos son:
1. La interfaz no aparece en el escritorio. . La interfaz no aparece en la barra de tareas. Aparece el icono;
3. El nombre del programa desaparece de la lista del Administrador de tareas.
Para el primer punto anterior, puede establecer la propiedad Visible del formulario en Falso.
Para ocultar el icono de la barra de tareas, puede cambiar ShowInTaskBar del formulario a False.
En el entorno Windows, puede llamar a RegisterviceProcess en la función WIN API para cumplir el tercer requisito.
Las funciones anteriores son relativamente fáciles de implementar ya sea que se utilice cualquier lenguaje de programación de alto nivel como VC, Delphi, VB o PB.
La función sigilosa se utiliza principalmente en programas troyanos, pero los programas troyanos son ilegales en muchos países y regiones. Para facilitar la comprensión, este artículo utiliza VB combinado con un ejemplo de protección contra copia de programas para explicarlo. Al obtener el número de serie del disco (ID del disco) donde se encuentra la ruta de instalación del software, se utiliza para determinar los usuarios legítimos. El propósito del siguiente programa es explicar la preparación y aplicación de programas invisibles, y el contenido de protección de copia del programa se ha simplificado hasta cierto punto.
Ejemplo de invisibilidad del programa
Las operaciones de preparación específicas del programa son las siguientes:
1. En el entorno de programación VB6.0, cree un nuevo proyecto. Proyecto1.
2. Agregue el módulo Modulel a Project1, cambie el nombre del proyecto a HiddenMen en las propiedades del proyecto y cambie el título de la aplicación a HiddenMen
(Los siguientes programas han sido probados en funcionamiento real). . se puede copiar y utilizar tal cual).
Agregue la siguiente declaración al módulo Módulo1:
Función de declaración pública GetCurrentProcessId Lib “kernel32” () As Long
'Obtener la declaración del proceso actual Función de ID
Función de declaración pública RegisterServiceProcess Lib "kernel32" (ByVal ProcessId As Long, ByVal
ServiceFlags As Long) As Long
'Registrar el ID del proceso actual función en la Declaración del sistema
3. Cree un nuevo formulario Form1 en Project1 y establezca las propiedades de Form1:
form1.Visible=False
form1.ShowInTaskBar. =False
Agregue el siguiente código en la ventana de código:
Función de declaración privada GetDriveType Lib “kernel32” Alias “GetDriveTypeA” (ByVal nDrive As
String) As Long
'Obtener la declaración de la función de tipo de unidad actual
Función de declaración privada GetVolumeInformation Lib “kernel32” Alias “GetVolumeInformationA”
( ByVal lpRootPathName como cadena, ByVal lpVolumeNameBuffer como cadena, ByVal nVolumeNameSize como
Long, lpVolumeSerialNumber como larga, lpMaximumComponentLength como larga, lpFileSystemFlags como larga,
ByVal lpFileSystemNameBuffer como cadena, ByVal nFileSystemNameSize como larga ) As Long
' Obtiene la declaración de la función de información de la unidad actual
Private Sub Form_Load()
Dim drive_no As Long, drive_flag As Long
Dim drive_chr como cadena, drive_disk como cadena
Dim serial_no mientras, kkk mientras
Dim stemp3 como cadena, dflag como booleano
Dim strlabel As String, strtype As String, strc As Long p>
RegisterServiceProcess GetCurrentProcessId, 1 'Cancelar el proceso actual del sistema
stralabel = String(255, Chr(0)) p>
strtipo = Cadena(255, Chr(0) ))
p>
stemp3 = “172498135” 'Este es el número de serie (decimal) de la unidad C del autor. Los lectores pueden cambiarlo según sus propias circunstancias.
dflag = False
Para drive_no = 0 a 25
drive_disk = Chr(drive_no 67)
drive_chr = drive_disk amp; :\”
drive_flag = GetDriveType(drive_chr)
Si drive_flag = 3 Entonces
kkk = GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype,
Len(strtype)) 'Obtén el número de serie del disco a través de GetVolumeInformation
Selecciona Case drive_no
Case 0
strc = serial_no
Finalizar selección
Si serial_no = stemp3 Entonces
dflag = True
Salir para
Finalizar si
Finalizar si
Siguiente drive_no
Si drive_no = 26 y dflag = False Then 'Usuario ilegal
Ir a err :
End If
MsgBox ("¡Hola, usuario legal!")
Salir de Sub
err:
MsgBox ("¡Error! Su número de ID de unidad C: es" amp; strc)
End Sub
Sub privado Form_Unload(Cancelar como entero)
RegisterServiceProcess GetCurrentProcessId, 0 'Cancelar el proceso del programa actual del sistema
End Sub
Compile el código del programa anterior y ejecútelo cuando aparezca un error similar a "¡Error! Su C. El número de identificación de la unidad es 172498135", presione la tecla Ctrl Alt Supr para ver si el programa llamado "HiddenMen" está en la lista del Administrador de tareas. Si modifica ligeramente el programa anterior, puede agregarlo a su propio programa específico. El programa se ejecuta de forma invisible y completa su función prevista sin saberlo.
El programa anterior ha sido depurado en entornos de chino simplificado Windows 98 y VB 6.0.