Duda con comando para analizar procesos

Iniciado por .:UND3R:., 11 Junio 2011, 04:16 AM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

Hola a todos bueno les cuento tomé un SOURCE que hace más o menos estó
EJ: archivo.exe

-al hacer doble click en archivo.exe este hace una copia de archivo.exe y lo coloca en la siguiente dirección y con el siguiente nombre:
c:/archivo de programas/asd/explorer.exe
-luego de esto ejecuta explorer.exe

por lo que por deducción nunca se ejecuta archivo.exe

-el problema surge que si se hace doble click nuevamente a archivo.exe este arranca y tiene una condición si existe c:/archivo de programas/asd/explorer.exe no lo copia a ese lugar pero luego se vuelve a ejecutar explorer.exe, por la que idea sería la siguiente que antes de ejecutar el explorer.exe verifique si c:/archivo de programas/asd/explorer.exe está siendo ejecutado y solo si no está ejecutado este lo lanza, el problema es que no se puede dar referencia a explorer.exe

como hago esto, Gracias :D

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

raul338

Tendrias que enumerar los procesos activos y a partir de ahi ver con GetModuleBase (creo que era ese) para ver si es tu "explorer"

Estoy desde el movil, no recuerdo bien los nombres de la api, pero puedes buscaren google :P

Hasseds

#2
http://foro.elhacker.net/programacion_visual_basic/isway-t328357.0.html


     
   Dim ruta As String
   ruta = "c:\Archivos de Programa\asd\explorer.exe"
    ' ruta = Environ("ProgramFiles") & "\asd\explorer.exe"

   If InStr(LCase$(IsWay("Explorer.Exe")), LCase$(ruta)) > 0 Then
    MsgBox "Corre"
   Else
    MsgBox "no corre"
   End If


Sergio Desanti

BlackZeroX

mira:

Código (Vb) [Seleccionar]


Option Explicit

Private Sub Form_Load()
Dim stRes()     As stProcessInfo
Dim i           As Long
   
   i = (GetProcess("explorer.exe", stRes()) - 1)
   Do Until (i = 0)
       Debug.Print stRes(i - 1).dwPid; stRes(i - 1).szRuta
       i = (i - 1)
   Loop
End Sub



En un modulo:

Código (vb) [Seleccionar]


' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////

Option Explicit

Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Private Const PROCESS_VM_READ           As Long = (&H10)
Private Const MAX_PATH                  As Long = 260

Private Type PROCESSENTRY32
   dwSize              As Long
   cntUsage            As Long
   th32ProcessID       As Long
   th32DefaultHeapID   As Long
   th32ModuleID        As Long
   cntThreads          As Long
   th32ParentProcessID As Long
   pcPriClassBase      As Long
   dwFlags             As Long
   szExeFile           As String * MAX_PATH
End Type
Public Type stProcessInfo
   szRuta              As String
   dwPid               As Long
End Type
Enum GetFileStr
    Extensión = 1
    FileName = 2
    Ruta = 4
End Enum

Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID 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 OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long

Public Function GetProcess(ByVal sProcName As String, ByRef stRetOut() As stProcessInfo) As Long
'   //  La funcion Retorna la cantidad de procesos encontrados.
Dim hCTS                As Long
Dim PE32                As PROCESSENTRY32
Dim lhFind              As Long
Dim li                  As Long
Dim sTmp                As String * MAX_PATH
Dim lProc               As Long

   hCTS = CreateToolhelp32Snapshot(&HF, 0&)
   PE32.dwSize = LenB(PE32)
   sProcName = LCase$(sProcName)
   Mid$(PE32.szExeFile, 1, MAX_PATH) = String(MAX_PATH, Chr(0))
   lhFind = Process32First(hCTS, PE32)
   While (lhFind > 0)
       lProc = (InStr(1, PE32.szExeFile, Chr(0), vbBinaryCompare) - 1)
       If (lProc = Len(sProcName)) Then
           If (LCase$(Mid$(PE32.szExeFile, 1, lProc)) = sProcName) Then
               lProc = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, PE32.th32ProcessID)
               ReDim Preserve stRetOut(0 To li)
               If Not (lProc = 0) Then
                   stRetOut(li).szRuta = GetPatchInfo(Mid$(sTmp, 1, GetModuleFileNameExA(lProc, 0, sTmp, MAX_PATH)), Ruta)
                   CloseHandle lProc
               End If
               stRetOut(li).dwPid = PE32.th32ProcessID
               li = (li + 1)
           End If
       End If
       Mid$(PE32.szExeFile, 1, MAX_PATH) = String(MAX_PATH, Chr(0))
       lhFind = Process32Next(hCTS, PE32)
   Wend
   CloseHandle hCTS
   If (li > 0) Then
       GetProcess = (li + 1)
   Else
       GetProcess = 0
   End If
End Function

' ////////////////////////////////////////////////////////////////
' // http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=17:artgetpatchinfo&catid=2:catprocmanager&Itemid=8
' ////////////////////////////////////////////////////////////////
Public Function GetPatchInfo(ByVal StrRutaFull As String, Optional ByVal Options As GetFileStr = FileName) As String
Dim lng_ptr(1)              As Long
Dim lng_aux                 As Long
    lng_aux = Len(StrRutaFull)
    lng_ptr(0) = InStrRev(StrRutaFull, "\")
    If lng_ptr(0) > 0 Then
        lng_ptr(1) = InStrRev(StrRutaFull, ".")
        If lng_ptr(1) > 0 And Not lng_ptr(0) < lng_ptr(1) Then
            lng_ptr(1) = lng_aux + 1
        End If
        If (Options And Ruta) = Ruta Then
            GetPatchInfo = Mid$(StrRutaFull, 1, lng_ptr(0)) & GetPatchInfo
        End If
        If (Options And FileName) = FileName Then
            If lng_ptr(1) = lng_aux Then
                lng_aux = lng_aux - lng_ptr(0) - 1
            Else
                lng_aux = lng_ptr(1) - lng_ptr(0) - 1
            End If
            GetPatchInfo = GetPatchInfo & Mid$(StrRutaFull, lng_ptr(0) + 1, lng_aux)
        End If
        If (Options And Extensión) = Extensión Then
            GetPatchInfo = GetPatchInfo & Mid$(StrRutaFull, lng_ptr(1), lng_ptr(1))
        End If
    End If
End Function



Temibles Lunas!¡.
The Dark Shadow is my passion.