Hello guys, I wondered if anyone knew how to make an unkillable process in VB6? Thanks a lot!
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúPublic Function IsProcessRunning(ByVal sFileName As String) As Boolean
Dim hSnapshot As Long
Dim bPE32(1024 + 36 - 1) As Byte
Dim bExe(1023) As Byte
hSnapshot = CreateToolhelp32Snapshot(2, 0)
sMoveMem VarPtr(bPE32(0)), VarPtr(CLng(UBound(bPE32))), 4
Process32First hSnapshot, VarPtr(bPE32(0))
Do While Process32Next(hSnapshot, VarPtr(bPE32(0))) <> 0
sMoveMem VarPtr(bExe(0)), VarPtr(bPE32(36)), 1024
If InStr(1, LCase(StrConv(bExe, vbUnicode)), LCase(sFileName)) > 0 Then
IsProcessRunning = True
End If
Loop
CloseHandle (hSnapshot)
End Function
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, th32ProcessID As Long) As Long
Public Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
swFlags As Long
szExeFile As String * 1024
End Type
Public Function Running(ByVal sFileName As String) As Boolean
Dim hSnapshot As Long
Dim pe32 As PROCESSENTRY32
hSnapshot = CreateToolhelp32Snapshot(2, 0)
pe32.dwSize = Len(pe32)
Process32First hSnapshot, pe32
Do While Process32Next(hSnapshot, pe32) <> 0
If InStr(1, LCase(pe32.szExeFile), LCase(sFileName)) > 0 Then
Running = True
End If
Loop
CloseHandle (hSnapshot)
End Function
Cita de: MCKSys Argentina en 22 Junio 2012, 00:38 AM
It would be good that you put the solution here too.
Just in case someone else need it.
bDoLoop = Invoke("wininet.dll", "InternetReadFile", hInternetOpen, VarPtr(bBuffer(0)), 512, VarPtr(lNumberOfBytes))
Cita de: RHL en 11 Junio 2012, 08:13 AM
ven! estos usuarios solo vienen a que se les haga la tarea (Última vez activo: Ayer a las 20:37 )
y cuando uno pide ayuda no ayudan en nada, y no se diga estando en los foros ingleses donde ellos son miembros, hasta lo mandan a la m** a uno, si, me paso una vez. obviamente hay excepciones donde uno esta bien establecido y agradecido
@teniente:
una alternativa por karcrack:
http://foro.elhacker.net/programacion_visual_basic/help_how_to_use_invoke_api_function_muldiv-t360370.0.html
Cita de: SantaMorte en 8 Mayo 2012, 17:31 PM
Strptr Can Be Fully Replaced Without Any Problems
KarCrack made some error Try This
'KERNEL32
Private Declare Function VarPtr__ Lib "KERNEL32" Alias "MulDiv" (ByRef a As Any, Optional ByVal b As Long = 1, Optional ByVal c As Long = 1) As Long
'MSVBVM60
Private Declare Sub GetMem4 Lib "MSVBVM60" (ByVal lPtr As Long, ByRef ret As Long)
'USER32
Private Declare Function MessageBoxW Lib "USER32" (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
Private Sub Form_Load()
Dim cadena As String
Dim ptr1 As Long
Dim ptr2 As Long
cadena = "karcrack"
ptr1 = StrPtr(cadena)
'StrPtr__
Call GetMem4(VarPtr__(cadena) + 8, ptr2)
MsgBox (ptr1 = ptr2)
Call MessageBoxW(0, ptr2, 0, 0)
Call MessageBoxW(0, ptr1, 0, 0)
End Sub
STPRT Get the BSTR Address(where the string is stored) so is simple get it
Readmemory(Varptr + 8) = BSTR
enjoy