[SOURCE-CODE] DLL Injector v0.2.4 Alpha .

Iniciado por **Aincrad**, 20 Diciembre 2017, 18:02 PM

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

**Aincrad**

Bueno como dice el titulo es un Injector de archivos dll . bueno yo lo uso mas que todo al jugar HALO o CS 1.6 .     :rolleyes:  :rolleyes:  :rolleyes: HACKS jejeje.

source code :

[SOURCE-CODE] DLL Injector v0.2.4 Alpha .

Programa :

DLL Injector v0.2.4 Alpha

captura del programa :

                                                 

                                                  COMENTEN CUALQUIER CRITICA O COMENTARIO .  :D

PD : La parte de RUN Tiene algunos pequeños bug al inyectar el DLL de resto funciona de maravilla. XD




Eleкtro

#1
Primero que nada, GRACIAS por compartir en el foro. Ahora, vamos con las críticas constructivas:




1.

¿Has pensado que ocurrirá si el usuario ha decidido instalar Firefox o Chrome en otro directorio, o si usa una versión portable, o si no se instaló ninguno de esos dos navegadores?.

Código (vbnet) [Seleccionar]
If My.Computer.FileSystem.FileExists("C:\Program Files\Google\Chrome\Application\chrome.exe") Then
   Dim Pr As New Process
   Dim Psi As New ProcessStartInfo("C:\Program Files\Google\Chrome\Application\chrome.exe")
   Psi.Arguments = "https://www.facebook.com/salvador.osvaldo.1"
   Pr.StartInfo = Psi
   Pr.StartInfo.WindowStyle = ProcessWindowStyle.Normal
   Pr.Start()
Else
   If My.Computer.FileSystem.FileExists("C:\Program Files\Mozilla Firefox\firefox.exe") Then
       Dim Prm As New Process
       Dim Psis As New ProcessStartInfo("C:\Program Files\Mozilla Firefox\firefox.exe")
       Psis.Arguments = "https://www.facebook.com/salvador.osvaldo.1"
       Prm.StartInfo = Psis
       Prm.StartInfo.WindowStyle = ProcessWindowStyle.Normal
       Prm.Start()
   Else
       System.Diagnostics.Process.Start("https://www.facebook.com/salvador.osvaldo.1")
   End If
End If


...Como programador, es un punto positivo para ti que intentes controlar las posibles "variables" de cada configuración de sistema operativo en el que se vaya a usar tu programa, sin embargo, en esta ocasión es algo innecesario (y de todas formas, incompleto), debes dejar que ShellEx se encargue él solo de iniciar el navegador predefinido en el sistema, tú por tu parte tan solo tienes que "iniciar" la dirección url (como si se tratase de un programa).




2.

Una regla básica y universal en la programación es que se deben declarar nombres descriptivos para los miembros/métodos... ¿esto que narices es?:

Cita de: código fuente
Código (vbnet) [Seleccionar]
If DLLs.Items.Count > 0 Then
           run2()
           ters()
           reae()
       Else
           run2()
       End If

Me enfado solo de verlo (y vamos a obviar que además los nombres no están capitalizados en Camel-Case, eso no es tan importante, pero bueno). run2, ters, reae,... Ay Dios. Si compartes un código fuente para que los demás lo puedan analizar y aprender algo nuevo, lo mínimo que puedes hacer es facilitarles un poco la comprensión escribiendo un nombre decente (que al menos no sean 4 letras aleatorias), o dejar una linea de comentario describiendo el propósito del método...




3.

Cita de: **Aincrad** en 20 Diciembre 2017, 18:02 PM
PD : La parte de RUN Tiene algunos pequeños bug al inyectar el DLL de resto funciona de maravilla. XD

Es normal que tengas "pequeños bugs" y mil cosas más, puesto que estás usando el tipo de declaraciones obsoletas de VB6 (sentencia Declare Function) en lugar de usar la plataforma de invocación de .NET Framework, Platform Invoking. Aparte, los tipos de las funciones nativas que declaraste no son portables, es decir, no son compatibles con 64 Bits... en general casi todos esos parámetros de tipo "Integer" (digo casi todos, por que depende de la definición de la función nativa) debes cambiarlos por un tipo de tamaño dinámico como es IntPtr.

Antes de distribuir un código fuente como mínimo debes pasarle un análisis de código en Visual Studio (click derecho -> "Analyze" -> "Run Code Analysis on Solution") y corregir todos los warnings que te saldrán... la mitad de ellos referentes a lo que te acabo de decir, la portabilidad.

Yo en tu lugar directamente eliminaría todo este código que tienes al principio de la clase Form1:
Código (vbnet) [Seleccionar]
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)
Dim DLLFileName As String
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


y lo reemplazaría por esto otro (todas estas definiciones las he extraido de mi framework comercial ElektroKit):
Código (vbnet) [Seleccionar]
Imports System.Diagnostics.CodeAnalysis
Imports System.Runtime.ConstrainedExecution
Imports System.Runtime.InteropServices
Imports System.Security
Imports System.Text
Imports System.Threading
Imports Microsoft.Win32.SafeHandles

<Flags>
Friend Enum LoadLibraryFlags As UInteger
   DontResolveDllReferences = &H1
   IgnoreCodeAuthzLevel = &H10
   LoadLibraryAsDataFile = &H2
   LoadLibraryAsDataFileExclusive = &H40
   LoadLibraryAsImageResource = &H20
   LoadLibrarySearchApplicationDir = &H200
   LoadLibrarySearchDefaultDirs = &H1000
   LoadLibrarySearchDllLoadDir = &H100
   LoadLibrarySearchSystem32 = &H800
   LoadLibrarySearchUserDirs = &H400
   LoadWithAlteredSearchPath = &H8
End Enum

<Flags>
Friend Enum MemoryAllocationType As UInteger
   Commit = &H1000
   Reserve = &H2000
   Reset = &H80000
   ResetUndo = &H1000000
   Physical = &H400000
   TopDown = &H100000
   LargePages = &H20000000
End Enum

<Flags>
Friend Enum MemoryProtectionOptions As UInteger
   Execute = &H10
   ExecuteRead = &H20
   ExecuteReadWrite = &H40
   ExecuteWriteCopy = &H80
   NoAccess = &H1
   [ReadOnly] = &H2
   ReadWrite = &H4
   WriteCopy = &H8
   Guard = &H100
   NoCache = &H200
   WriteCombine = &H400
End Enum

<Flags>
Friend Enum ProcessAccessRights As Integer
   AllAccess = (ProcessAccessRights.StandardRightsRequired Or ProcessAccessRights.Synchronize Or &HFFFF)
   CreateThread = &H2
   SetSessionId = &H4
   VirtualMemoryOperation = &H8
   VirtualMemoryRead = &H10
   VirtualMemoryWrite = &H20
   DuplicateHandle = &H40
   CreateProcess = &H80
   SetQuota = &H100
   SetInformation = &H200
   QueryInformation = &H400
   SuspendResume = &H800
   QueryLimitedInformation = &H1000
   Synchronize = StandardAccessRights.Synchronize
   Delete = StandardAccessRights.Delete
   ReadControl = StandardAccessRights.ReadControl
   WriteDac = StandardAccessRights.WriteDac
   WriteOwner = StandardAccessRights.WriteOwner
   StandardRightsRequired = StandardAccessRights.StandardRightsRequired
End Enum

<Flags>
Friend Enum StandardAccessRights As Integer
   Delete = &H10000
   ReadControl = &H20000
   WriteDac = &H40000
   WriteOwner = &H80000
   Synchronize = &H100000
   StandardRightsRequired = &HF0000
   StandardRightsRead = StandardAccessRights.ReadControl
   StandardRightsWrite = StandardAccessRights.ReadControl
   StandardRightsExecute = StandardAccessRights.ReadControl
   StandardRightsAll = &H1F0000
End Enum

<Flags>
Friend Enum ThreadCreationFlags As UInteger
   CreateSuspended = &H4
   StackSizeParamIsAReservation = &H10000
End Enum

''' <summary>
''' Represents a handle to a module returned by <see cref="NativeMethods.LoadLibrary"/>
''' or <see cref="NativeMethods.LoadLibraryEx"/> functions.
''' </summary>
Public NotInheritable Class SafeModuleHandle : Inherits SafeHandleZeroOrMinusOneIsInvalid

   <SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")>
   Public Sub New()
       MyBase.New(ownsHandle:=True)
   End Sub

   <ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)>
   Protected Overrides Function ReleaseHandle() As Boolean
       Return NativeMethods.FreeLibrary(Me)
   End Function

End Class

<DebuggerStepThrough>
<StructLayout(LayoutKind.Sequential)>
Friend Structure SecurityAttributes
   Friend Length As Integer
   Friend SecurityDescriptor As IntPtr
   Friend InheritHandle As Integer
End Structure

<SuppressUnmanagedCodeSecurity>
Friend NotInheritable Class NativeMethods

   Private Sub New()
   End Sub

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function CloseHandle(ByVal hObject As IntPtr
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("kernel32.dll", SetLastError:=True)>
   Friend Shared Function CreateRemoteThread(ByVal hProcess As IntPtr,
                                             ByVal threadAttributes As IntPtr,
                                             ByVal stackSize As IntPtr,
                                             ByVal startAddress As IntPtr,
                                             ByVal threadParameter As IntPtr,
               <MarshalAs(UnmanagedType.U4)> ByVal creationFlags As ThreadCreationFlags,
                                             ByRef refThreadId As UInteger
   ) As IntPtr
   End Function

   <DllImport("kernel32.dll", SetLastError:=True)>
   Friend Shared Function CreateRemoteThread(ByVal hProcess As IntPtr,
                                             ByVal threadAttributes As IntPtr,
                                             ByVal stackSize As IntPtr,
                                             ByVal startAddress As UIntPtr,
                                             ByVal threadParameter As IntPtr,
               <MarshalAs(UnmanagedType.U4)> ByVal creationFlags As ThreadCreationFlags,
                                             ByRef refThreadId As UInteger
   ) As IntPtr
   End Function

   <DllImport("kernel32.dll", SetLastError:=True)>
   Friend Shared Function CreateRemoteThread(ByVal hProcess As IntPtr,
                                             ByVal threadAttributes As IntPtr,
                                             ByVal stackSize As IntPtr,
                                             ByVal startAddress As ThreadStart,
                                             ByVal threadParameter As IntPtr,
               <MarshalAs(UnmanagedType.U4)> ByVal creationFlags As ThreadCreationFlags,
                                             ByRef refThreadId As UInteger
   ) As IntPtr
   End Function

   <DllImport("kernel32.dll", SetLastError:=True)>
   Friend Shared Function CreateRemoteThread(ByVal hProcess As IntPtr,
                                      <[In]> ByRef refThreadAttributes As SecurityAttributes,
                                             ByVal stackSize As IntPtr,
                                             ByVal startAddress As IntPtr,
                                             ByVal threadParameter As IntPtr,
               <MarshalAs(UnmanagedType.U4)> ByVal creationFlags As ThreadCreationFlags,
                                             ByRef refThreadId As UInteger
   ) As IntPtr
   End Function

   <DllImport("kernel32.dll", SetLastError:=True)>
   Friend Shared Function CreateRemoteThread(ByVal hProcess As IntPtr,
                                      <[In]> ByRef refThreadAttributes As SecurityAttributes,
                                             ByVal stackSize As IntPtr,
                                             ByVal startAddress As UIntPtr,
                                             ByVal threadParameter As IntPtr,
               <MarshalAs(UnmanagedType.U4)> ByVal creationFlags As ThreadCreationFlags,
                                             ByRef refThreadId As UInteger
   ) As IntPtr
   End Function

   <DllImport("kernel32.dll", SetLastError:=True)>
   Friend Shared Function CreateRemoteThread(ByVal hProcess As IntPtr,
                                      <[In]> ByRef refThreadAttributes As SecurityAttributes,
                                             ByVal stackSize As IntPtr,
                                             ByVal startAddress As ThreadStart,
                                             ByVal threadParameter As IntPtr,
               <MarshalAs(UnmanagedType.U4)> ByVal creationFlags As ThreadCreationFlags,
                                             ByRef refThreadId As UInteger
   ) As IntPtr
   End Function

   <DllImport("User32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function FindWindow(ByVal className As String,
                                     ByVal windowName As String
   ) As IntPtr
   End Function

   <DllImport("User32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function FindWindowEx(ByVal hwndParent As IntPtr,
                                       ByVal hwndChildAfter As IntPtr,
                                       ByVal strClassName As String,
                                       ByVal strWindowName As String
   ) As IntPtr
   End Function

   <DllImport("User32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function FindWindowEx(ByVal hwndParent As HandleRef,
                                       ByVal hwndChildAfter As HandleRef,
                                       ByVal strClassName As String,
                                       ByVal strWindowName As String
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function FreeLibrary(ByVal handle As IntPtr
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function FreeLibrary(ByVal handle As SafeModuleHandle
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function GetModuleHandle(ByVal moduleName As String
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function GetProcAddress(ByVal hModule As IntPtr,
                                         ByVal procName As String
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function GetProcAddress(ByVal hModule As SafeModuleHandle,
                                         ByVal procName As String
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function LoadLibrary(ByVal fileName As String
   ) As SafeModuleHandle
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function LoadLibraryEx(ByVal fileName As String,
                                        ByVal hFile As IntPtr,
          <MarshalAs(UnmanagedType.U4)> ByVal flags As LoadLibraryFlags
   ) As SafeModuleHandle
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function OpenProcess(
        <MarshalAs(UnmanagedType.U4)> ByVal processAccess As ProcessAccessRights,
                                      ByVal inheritHandle As Boolean,
                                      ByVal pid As Integer
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As IntPtr,
                                            ByVal buffer As IntPtr,
                                            ByVal size As IntPtr,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As IntPtr,
                                            ByVal buffer As IntPtr,
                                            ByVal size As UInteger,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As IntPtr,
                                      <Out> ByVal buffer As Byte(),
                                            ByVal size As UInteger,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As IntPtr,
                                      <Out> ByVal buffer As StringBuilder,
                                            ByVal size As Integer,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As UIntPtr,
                                            ByVal buffer As IntPtr,
                                            ByVal size As IntPtr,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As UIntPtr,
                                            ByVal buffer As IntPtr,
                                            ByVal size As Integer,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As UIntPtr,
                                      <Out> ByVal buffer As Byte(),
                                            ByVal size As Integer,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True, CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
   Friend Shared Function ReadProcessMemory(ByVal hProcess As IntPtr,
                                            ByVal baseAddress As UIntPtr,
                                      <Out> ByVal buffer As StringBuilder,
                                            ByVal size As Integer,
                                            ByRef refNumberOfBytesRead As Integer
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function
   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function VirtualAlloc(ByVal address As IntPtr,
                                       ByVal size As UInteger,
         <MarshalAs(UnmanagedType.U4)> ByVal allocationType As MemoryAllocationType,
         <MarshalAs(UnmanagedType.U4)> ByVal protection As MemoryProtectionOptions
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function VirtualAlloc(ByVal address As UIntPtr,
                                       ByVal size As UInteger,
         <MarshalAs(UnmanagedType.U4)> ByVal allocationType As MemoryAllocationType,
         <MarshalAs(UnmanagedType.U4)> ByVal protection As MemoryProtectionOptions
   ) As UIntPtr
   End Function

   <DllImport("Kernel32.dll", ExactSpelling:=True, SetLastError:=True)>
   Friend Shared Function VirtualAllocEx(ByVal hProcess As IntPtr,
                                         ByVal address As IntPtr,
                                         ByVal size As UInteger,
           <MarshalAs(UnmanagedType.U4)> ByVal allocationType As MemoryAllocationType,
           <MarshalAs(UnmanagedType.U4)> ByVal protection As MemoryProtectionOptions
   ) As IntPtr
   End Function

   <DllImport("Kernel32.dll", ExactSpelling:=True, SetLastError:=True)>
   Friend Shared Function VirtualAllocEx(ByVal hProcess As IntPtr,
                                         ByVal address As UIntPtr,
                                         ByVal size As UInteger,
           <MarshalAs(UnmanagedType.U4)> ByVal allocationType As MemoryAllocationType,
           <MarshalAs(UnmanagedType.U4)> ByVal protection As MemoryProtectionOptions
   ) As UIntPtr
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function WriteProcessMemory(ByVal hProcess As IntPtr,
                                             ByVal baseAddress As IntPtr,
                                             ByVal buffer As Byte(),
                                             ByVal size As IntPtr,
                                       <Out> ByRef refNumberOfBytesWritten As IntPtr
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function WriteProcessMemory(ByVal hProcess As IntPtr,
                                             ByVal baseAddress As UIntPtr,
                                             ByVal buffer As Byte(),
                                             ByVal size As IntPtr,
                                       <Out> ByRef refNumberOfBytesWritten As IntPtr
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function WriteProcessMemory(ByVal hProcess As IntPtr,
                                             ByVal baseAddress As IntPtr,
                                             ByVal buffer As IntPtr,
                                             ByVal size As IntPtr,
                                       <Out> ByRef refNumberOfBytesWritten As IntPtr
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

   <DllImport("Kernel32.dll", SetLastError:=True)>
   Friend Shared Function WriteProcessMemory(ByVal hProcess As IntPtr,
                                             ByVal baseAddress As UIntPtr,
                                             ByVal buffer As IntPtr,
                                             ByVal size As IntPtr,
                                       <Out> ByRef refNumberOfBytesWritten As IntPtr
   ) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

End Class


...Evidentemente vas a tener que realizar las adaptaciones necesarias en el resto de tu código, puesto que los parámetros de las funciones cambian de tipo (son portables), del código que tenías, al que te acabo de mostrar.

PD: fíjate que especifiqué el set de caracteres ANSI para las funcioens que toman un string, quizás quieras cambiarlo según tus necesidades.

Saludos.








**Aincrad**

#2
ahh . corregiré esos errores . XD

acerca del punto 1 .
Citar¿Has pensado que ocurrirá si el usuario ha decidido instalar Firefox o Chrome en otro directorio, o si usa una versión portable, o si no se instaló ninguno de esos dos navegadores?.

si lo tome en cuenta , por eso es que primero comprueba si esta el croome.exe , si no esta, comprueba si existe el firefox.exe y si tampoco lo encuentra, abre el link normal mediante:

Código (vbnet) [Seleccionar]
System.Diagnostics.Process.Start()


Perdona mi ignorancia, pero no entiendo estas importaciones, me la podrías explicar?

Código (vbnet) [Seleccionar]
Imports System.Diagnostics.CodeAnalysis
Imports System.Runtime.ConstrainedExecution
Imports System.Runtime.InteropServices
Imports Microsoft.Win32.SafeHandles




Eleкtro

#3
Cita de: **Aincrad** en 20 Diciembre 2017, 20:44 PMno entiendo estas importaciones, me la podrías explicar?

¿Que significa exactamente cuando dices "no entiendo estas importaciones"?, no sé si entiendo lo que estás preguntando exactamente. Eso son importaciones de namespaces necesarias para varios miembros en la clase que te mostré.

Saludos








**Aincrad**

olvida la pregunta , me puse a analizar un poco y ya .

PD : Al remplazar el código por el que me pusiste me laza errores por doquier.
a ti también te salen?




Eleкtro

#5
Cita de: **Aincrad** en 20 Diciembre 2017, 21:07 PMPD : Al remplazar el código por el que me pusiste me laza errores por doquier.
a ti también te salen?

No es una simple cuestión de copiar y pegar (no voy a modificarte todo el proyecto para hacer yo todas las correcciones, solo compartí contigo los P/Invokes que deberías usar en tu proyecto), como ya te comenté:

Cita de: Elektro...Evidentemente vas a tener que realizar las adaptaciones necesarias en el resto de tu código, puesto que los parámetros de las funciones cambian de tipo (son portables), del código que tenías, al que te acabo de mostrar.

Te van a salir muchos errores por que en tu código original usas tipos diferentes para llamar a esas funciones, entre otras cosas.

Saludos








Maurice_Lupin

Gracias por compartir tu código **Aincrad**, como me decía un maestro: Puede no ser lo más bello del mundo pero es tu bebe y trabajo ha acostado parirlo :D

Tienes que amarlo.
Un error se comete al equivocarse.