[D4N93R], Gracias por tu respuesta. Te comento que al momento de depurar no me arroja ningun error (0 errores, 0 advertencias, 0 mensajes).
Al depurar obtengo "inyecta.exe" lo ejecuto y queda en espera del "proceso.exe".. abro el programa "proceso.exe" y el "inyecta.exe" hace su trabajo, y me muestra dicha ventana de configuración, pero se cierra antes de que abra completamente el "proceso.exe", y no debe ser así, se tiene que mantener activo.
También he probado con abrir primero el "proceso.exe" y después el "inyecta.exe" pero en este caso se cierra "inyecta.exe" sin mostrar nada.
Dejo el src completo por si acaso:
Gracias!
Al depurar obtengo "inyecta.exe" lo ejecuto y queda en espera del "proceso.exe".. abro el programa "proceso.exe" y el "inyecta.exe" hace su trabajo, y me muestra dicha ventana de configuración, pero se cierra antes de que abra completamente el "proceso.exe", y no debe ser así, se tiene que mantener activo.
También he probado con abrir primero el "proceso.exe" y después el "inyecta.exe" pero en este caso se cierra "inyecta.exe" sin mostrar nada.
Dejo el src completo por si acaso:
Código (vbnet) [Seleccionar]
Imports System.IO
Imports Microsoft.Win32
Public Class Form1
Private TargetProcessHandle As Integer
Private pfnStartAddr As Integer
Private pszLibFileRemote As String
Private TargetBufferSize As Integer
Public Const PROCESS_VM_READ = &H10
Public Const TH32CS_SNAPPROCESS = &H2
Public Const MEM_COMMIT = 4096
Public Const PAGE_READWRITE = 4
Public Const PROCESS_CREATE_THREAD = (&H2)
Public Const PROCESS_VM_OPERATION = (&H8)
Public Const PROCESS_VM_WRITE = (&H20)
Public Declare Function ReadProcessMemory Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As String, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
ByVal lpLibFileName As String) As Integer
Public Declare Function VirtualAllocEx Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpAddress As Integer, _
ByVal dwSize As Integer, _
ByVal flAllocationType As Integer, _
ByVal flProtect As Integer) As Integer
Public Declare Function WriteProcessMemory Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As String, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function GetProcAddress Lib "kernel32" ( _
ByVal hModule As Integer, ByVal lpProcName As String) As Integer
Private Declare Function GetModuleHandle Lib "Kernel32" Alias "GetModuleHandleA" ( _
ByVal lpModuleName As String) As Integer
Public Declare Function CreateRemoteThread Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpThreadAttributes As Integer, _
ByVal dwStackSize As Integer, _
ByVal lpStartAddress As Integer, _
ByVal lpParameter As Integer, _
ByVal dwCreationFlags As Integer, _
ByRef lpThreadId As Integer) As Integer
Public Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Integer, _
ByVal bInheritHandle As Integer, _
ByVal dwProcessId As Integer) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Integer
Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" ( _
ByVal hObject As Integer) As Integer
Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Dim aa As String = "0"
Dim dllproc As String = System.Environment.CurrentDirectory() + "\t.dll"
Dim PrOCeSo As String = "proceso.exe"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.Items.Add(" ")
ListBox1.Items.Add("Inicio de Handy Inyector!... [OK] ")
ListBox1.Items.Add("........................................................................................")
End Sub
Private Sub InjectAr()
On Error GoTo 1
Timer1.Stop()
Dim TargetProcess As Process() = Process.GetProcessesByName(PrOCeSo)
TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
pszLibFileRemote = dllproc
pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
TargetBufferSize = 1 + Len(pszLibFileRemote)
Dim Rtn As Integer
Dim LoadLibParamAdr As Integer
LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0)
CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
End
'CloseHandle(TargetProcessHandle)
1: ListBox1.Items.Add("Error en la Injeccion")
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If IO.File.Exists(dllproc) Then
Dim TargetProcess As Process() = Process.GetProcessesByName(PrOCeSo)
If TargetProcess.Length = 0 Then
If aa = "0" Then
ListBox1.Items.Add("Esperando por: >> " + PrOCeSo + "")
aa = "1"
End If
Else
Timer1.Stop()
ListBox1.Items.Add("Espere Por Favor!...")
Call InjectAr()
ListBox1.Items.Add("Injeccion!... [OK]")
End
End
End If
Else
If aa = "0" Then
ListBox1.Items.Add("Error: DLL no fue Encontrado!")
aa = "1"
End If
End If
End Sub
Private Sub Inject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Inject.Click
ListBox1.Items.Clear()
ListBox1.Items.Add(" ")
ListBox1.Items.Add("Procesando...")
ListBox1.Items.Add(" ")
aa = "0"
Timer1.Start()
End Sub
End Class
Gracias!