Ayuda con VB.NET: Inyectando samp.dll al gta_sa.exe
#1

Primero que nada este es mi cуdigo..

Код:
        Dim p As New ProcessStartInfo
        p.FileName = DirectorioGTA & "\gta_sa.exe"
        p.Arguments = "-c -n " & Nickname.Text & " -h 198.27.70.146 -p 7777"
        p.WorkingDirectory = DirectorioGTA
        Process.Start(p)
        '----------proceso iniciado & a continuacion inyectaremos el DLL de sa-mp ---------------'

        Dim TargetProcess As Process() = Process.GetProcessesByName("gta_sa")
        'la funcion de arriba obtiene el proceso del gta, pero no funciona en sistemas operativos de 64 bits :('

        TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
        pszLibFileRemote = DirectorioGTA & "\samp.dll"
        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)
Bueno como ven el cуdigo, funciona correctamente en sistemas operativos de 32 BITS, Pero en 64 Bits NO FUNCIONA! Nose porquй, parece que la funciуn Process.GetProcessesByName("gta_sa") no detecta el proceso en sistemas operativos de 64 bits, me fije por teamviewer en la pc de un amigo y en su pc de 64 bits dice

gta_sa.exe *32

*32 ? dafack?
Como podria hacer para que detecte el proceso en ambos sistemas operativos? ayuda xD
Reply
#2

El GTA estб programado en x32 y creo que no existe versiуn x64 al menos la versiуn RIP, pero la full y original creo que tampoco de todas formas їQue intentas hacer?
Reply
#3

Creo que no hay GTA SA 64 bits, hasta ahora solo eh visto 32 bits. En realidad esto no importa ya que los programas compilados en 32 bits pueden ser ejecutados en sistemas 64 bits.

Mi cliente lo compilo en 32 bits y mi sistema operativo es 64 bits y funciona perfectamente, el "gta_sa.exe *32" solo es para que sepas que el programa que se esta ejecutando es 32 bits, ami me pasa en muchos programas o juegos en 32 bits.

Un saludo.
Reply
#4

Quote:
Originally Posted by oOFotherOo
Посмотреть сообщение
Creo que no hay GTA SA 64 bits, hasta ahora solo eh visto 32 bits. En realidad esto no importa ya que los programas compilados en 32 bits pueden ser ejecutados en sistemas 64 bits.

Mi cliente lo compilo en 32 bits y mi sistema operativo es 64 bits y funciona perfectamente, el "gta_sa.exe *32" solo es para que sepas que el programa que se esta ejecutando es 32 bits, ami me pasa en muchos programas o juegos en 32 bits.

Un saludo.
Pero entonces porque el Process.GetProcessesByName("gta_sa") no detecta el gta_sa.exe en sistemas de 64 bits? Como haces tu para inyectar el samp.dll al gta_sa.exe? necesito ayuda :c
Reply
#5

Quote:
Originally Posted by xDarkuzSx
Посмотреть сообщение
Pero entonces porque el Process.GetProcessesByName("gta_sa") no detecta el gta_sa.exe en sistemas de 64 bits? Como haces tu para inyectar el samp.dll al gta_sa.exe? necesito ayuda :c
No sй decirte exactamente ya que no utilizo VB y no sй decirte con exactitud el porque la funciуn no trabaja correctamente, uso C++. Por cierto ten en cuenta que el samp.dll se inyecta al GTA SA mediante el SA-MP.exe. Hay varias formas de inyectar tu cliente, puedes hookear alguna .dll de las que depende el GTA SA o bien puedes usar ASI Loader.

Tambiйn puedes utilizar el metodo del cliente de gamerol el cuбl crean una DLL la cuбl nombran "samp.dll" y esta almacena los parametros de entrada del samp.exe y luego comparan la IP con la de su servidor y si es asi entonces cargan los archivos del cliente y inyectan el samp_a.dll, no es muy dificil hacerlo.

Un saludo.
Reply
#6

Ya lo logre, gracias!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)