• Jueves 18 de Abril de 2024, 07:39

Autor Tema:  Inyección En Vb  (Leído 6795 veces)

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Inyección En Vb
« en: Viernes 29 de Septiembre de 2006, 21:28 »
0
Hola a todos, actualmente estoy realizando un AntiCheat para el Counter-Strike, ya tengo todo armado pero lo unico que me falta es inyectarle una DLL hecha en "C" al proceso del juego con VB, he probado un monton de codigos sin exito... si alguien tiene uno por favor que lo postee, saludos y gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #1 en: Viernes 29 de Septiembre de 2006, 21:57 »
0
Convengamos que suena cuanto menos sospechoso que seas capaz de hacer un "AntiCheat" que consiste de una DLL escrita en C y pidas el codigo para inyectarla desde VB ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Inyección En Vb
« Respuesta #2 en: Viernes 29 de Septiembre de 2006, 21:59 »
0
totalmente de acuerdo, creo que estas un tanto desubicado.

Seria bueno que nos dijeras como son los intentos que has hecho.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #3 en: Viernes 29 de Septiembre de 2006, 22:39 »
0
la dll no la hice yo, la creo un amigo que sabe mucho de C y era necesario que sea en ese lenguaje ya que el juego esta creado en C/C++, el anticheat que vendria a ser en VB lo hice yo, se bastante de VB pero nada de C.. si no me quieren ayudar todo bien entiendo sus "sospechas" pero bueno yo les digo la verdad.

Saludos a todos.  :hola:

robokop

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #4 en: Viernes 29 de Septiembre de 2006, 22:52 »
0
Citar
la dll no la hice yo, la creo un amigo que sabe mucho de C y era necesario que sea en ese lenguaje ya que el juego esta creado en C/C++
BEEP!!!!!! primer punto malo  :whistling:
No tienes claro la inyeccion de DLL .
Por lo general se hacen en C las dll para inyectar porque son dll reales no como las de visual basic en vb tambien se puede crear dll asi pero se necesitan otras cosas.
No importa el lenguaje del juego , bien puede ser una aplicacion pascal,vb,delphi y inyectar una dll de C++, porque se inyecta el codigo ya compilado y para el sistema es lo mismo.
Creo que hace falta decir que hay lenguajes que no tienen la capacidad para facilitar las cosas en cierto aspecto hacer eso en vb es pedir demasiado y te aseguro que con un codigo de ese tipo en vb la gente solamente copiaria y pegaria por la cantidad de lineas que lleva.
Mi recomendación es que aprendas C++ , la inyeccion dll no es tan complicada en ese lenguaje.  :smartass:

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #5 en: Viernes 29 de Septiembre de 2006, 23:00 »
0
Cita de: "JuanK"
totalmente de acuerdo, creo que estas un tanto desubicado.

Seria bueno que nos dijeras como son los intentos que has hecho.
uno de los codigos que he probado a sido este pero da error a la hora de inyectar:

Código: Text
  1. Option Explicit
  2.  
  3. Public hModule          As Long
  4. Public hProcess         As Long
  5. Public dwSize           As Long
  6. Public dwPid            As Long
  7. Public dwBytesWritten   As Long
  8. Public dwTid            As Long
  9.  
  10. Public SE               As SECURITY_ATTRIBUTES
  11.  
  12. Public Const PAGE_READONLY              As Long = &H2
  13. Public Const PAGE_READWRITE             As Long = &H4
  14. Public Const PAGE_EXECUTE               As Long = &H10
  15. Public Const PAGE_EXECUTE_READ          As Long = &H20
  16. Public Const PAGE_EXECUTE_READWRITE     As Long = &H40
  17. Public Const MEM_RELEASE                As Long = &H8000
  18. Public Const MEM_COMMIT                 As Long = &H1000
  19. Public Const MEM_RESERVE                As Long = &H2000
  20. Public Const MEM_RESET                  As Long = &H80000
  21. Public Const STANDARD_RIGHTS_REQUIRED   As Long = &HF0000
  22. Public Const SYNCHRONIZE                As Long = &H100000
  23. Public Const PROCESS_ALL_ACCESS         As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
  24. Public Const INFINITE                   As Long = &HFFFFFF
  25.  
  26. Public Type SECURITY_ATTRIBUTES
  27.        nLength                 As Long
  28.        lpSecurityDescriptor    As Long
  29.        bInheritHandle          As Long
  30. End Type
  31.  
  32. Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
  33. Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
  34. Public Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
  35. Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  36. Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  37. Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  38. Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
  39. Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
  40. Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  41. Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
  42. Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  43.  
  44. Sub Main()
  45. Inject App.Path & "\Ejemplo.dll", "Notepad"
  46. End Sub
  47.  
  48. Public Function Inject(szDll As String, szTargetWindowClassName As String) As Boolean
  49. Dim hWnd        As Long
  50. Dim k32LL       As Long
  51. Dim Thread      As Long
  52.  
  53.    SE.nLength = Len(SE)
  54.    SE.lpSecurityDescriptor = False
  55.    
  56.    'Encontrar la ventana y abrir el proceso
  57.    hWnd = FindWindow(szTargetWindowClassName, vbNullString)
  58.    GetWindowThreadProcessId hWnd, dwPid
  59.    hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, dwPid)
  60.    If hProcess = 0 Then GoTo Inject_Error
  61.    k32LL = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")
  62.    
  63.    'Reservamos memoria
  64.    hModule = VirtualAllocEx(hProcess, 0, LenB(szDll), MEM_COMMIT, PAGE_READWRITE)
  65.    If hModule = 0 Then GoTo Inject_Error
  66.    WriteProcessMemory hProcess, ByVal hModule, ByVal szDll, LenB(szDll), dwBytesWritten
  67.    
  68.    Thread = CreateRemoteThread(hProcess, SE, 0, ByVal k32LL, ByVal hModule, 0, dwTid)
  69.    If Thread = 0 Then GoTo Inject_Error
  70.    
  71.    'Clean up a bit
  72.    WaitForSingleObject Thread, 100
  73.    VirtualFreeEx hProcess, hModule, 0&, MEM_RELEASE
  74.    CloseHandle Thread
  75.  
  76. Exit Function
  77.  
  78. Inject_Error:
  79.    Inject = False
  80.    MsgBox "error"
  81.    Exit Function
  82. End Function
  83.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #6 en: Viernes 29 de Septiembre de 2006, 23:23 »
0
¿Y en que consiste el "AntiCheat" sino es la DLL? Si tu codigo no es el inyector ni el inyectado ... ¿Que hace realmente?

¿De ese codigo que pusiste que no te funciona exactamente?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #7 en: Sábado 30 de Septiembre de 2006, 00:17 »
0
Cita de: "Eternal Idol"
¿Y en que consiste el "AntiCheat" sino es la DLL? Si tu codigo no es el inyector ni el inyectado ... ¿Que hace realmente?

¿De ese codigo que pusiste que no te funciona exactamente?
la DLL es la que tiene que autentificar con el servidor... osea, verifica que cada player que entre al servidor tenga el anticheat activado  :)

y el programa se encarga de las detecciones de cheats...  :comp:

y ese codigo.. da error cuando hago click en "Inyectar"

http://img156.imageshack.us/img156/7111/dibujole2.jpg

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #8 en: Sábado 30 de Septiembre de 2006, 08:28 »
0
Sigue sonandome rarisimo y la verdad es que la explicacion que das sobre el error es un tanto ridicula ... tenes que decirnos exactamente que parte del codigo falla ... no son mas que unas cuantas lineas.

Por favor asegurate de que la libreria Ejemplo.dll esta donde tiene que estar y el programa es capaz de encontrar la ventana del Notepad (cosa de la cual dudo muchisimo ya que cambia segun el idioma). Seria mejor que usaras una enumeracion de todos los procesos en ejecucion y compararas su nombre con el del CS.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #9 en: Sábado 30 de Septiembre de 2006, 14:45 »
0
la dll tiene que estar en el mismo directorio que el inyector, y el codigo seria asi:

en un Módulo:

Código: Text
  1. Option Explicit
  2.  
  3. Public hModule          As Long
  4. Public hProcess         As Long
  5. Public dwSize           As Long
  6. Public dwPid            As Long
  7. Public dwBytesWritten   As Long
  8. Public dwTid            As Long
  9.  
  10. Public SE               As SECURITY_ATTRIBUTES
  11.  
  12. Public Const PAGE_READONLY              As Long = &H2
  13. Public Const PAGE_READWRITE             As Long = &H4
  14. Public Const PAGE_EXECUTE               As Long = &H10
  15. Public Const PAGE_EXECUTE_READ          As Long = &H20
  16. Public Const PAGE_EXECUTE_READWRITE     As Long = &H40
  17. Public Const MEM_RELEASE                As Long = &H8000
  18. Public Const MEM_COMMIT                 As Long = &H1000
  19. Public Const MEM_RESERVE                As Long = &H2000
  20. Public Const MEM_RESET                  As Long = &H80000
  21. Public Const STANDARD_RIGHTS_REQUIRED   As Long = &HF0000
  22. Public Const SYNCHRONIZE                As Long = &H100000
  23. Public Const PROCESS_ALL_ACCESS         As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
  24. Public Const INFINITE                   As Long = &HFFFFFF
  25.  
  26. Public Type SECURITY_ATTRIBUTES
  27.       nLength                 As Long
  28.       lpSecurityDescriptor    As Long
  29.       bInheritHandle          As Long
  30. End Type
  31.  
  32. Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
  33. Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
  34. Public Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
  35. Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  36. Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  37. Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  38. Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
  39. Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
  40. Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  41. Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
  42. Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  43.  
  44. Sub Main()
  45. Inject App.Path & "\autentificacion.dll", "Counter-Strike"
  46. End Sub
  47.  
  48. Public Function Inject(szDll As String, szTargetWindowClassName As String) As Boolean
  49. Dim hWnd        As Long
  50. Dim k32LL       As Long
  51. Dim Thread      As Long
  52.  
  53.   SE.nLength = Len(SE)
  54.   SE.lpSecurityDescriptor = False
  55.  
  56.   'Encontrar la ventana y abrir el proceso
  57.   hWnd = FindWindow(szTargetWindowClassName, vbNullString)
  58.   GetWindowThreadProcessId hWnd, dwPid
  59.   hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, dwPid)
  60.   If hProcess = 0 Then GoTo Inject_Error
  61.   k32LL = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")
  62.  
  63.   'Reservamos memoria
  64.   hModule = VirtualAllocEx(hProcess, 0, LenB(szDll), MEM_COMMIT, PAGE_READWRITE)
  65.   If hModule = 0 Then GoTo Inject_Error
  66.   WriteProcessMemory hProcess, ByVal hModule, ByVal szDll, LenB(szDll), dwBytesWritten
  67.  
  68.   Thread = CreateRemoteThread(hProcess, SE, 0, ByVal k32LL, ByVal hModule, 0, dwTid)
  69.   If Thread = 0 Then GoTo Inject_Error
  70.  
  71.   'Clean up a bit
  72.   WaitForSingleObject Thread, 100
  73.   VirtualFreeEx hProcess, hModule, 0&, MEM_RELEASE
  74.   CloseHandle Thread
  75.  
  76. Exit Function
  77.  
  78. Inject_Error:
  79.   Inject = False
  80.   MsgBox "error"
  81.   Exit Function
  82. End Function
  83.  

Form:

Código: Text
  1. Private Sub Command1_Click()
  2. Inject App.Path & "\autentificacion.dll", "Counter-Strike"
  3. End Sub
  4.  

cuando hago click en el botón da el error

robokop

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #10 en: Sábado 30 de Septiembre de 2006, 16:21 »
0
Creo que ya se cual es el problema.... tienes una confusion con findwindow
Findwindows Busca una clase de una ventana si por ejemplo yo hago un inyector que busca determinada ventana y se inyecta y suponiendo que quiero que sea en el explorer no voy a poner el titulo de la ventana abierta de iexplorer si no tengo que poner el nombre de la clase de la ventana , y vendria sindo IEframe que es el nombre de la clase para averiguar ese nombre hay una herramienta llamada spyxxx en Vc++ checalo con esa

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #11 en: Sábado 30 de Septiembre de 2006, 16:29 »
0
No alcanza con que nos digas que la funcion devuelve error, lo que queremos es que nos digas en que parte de la misma falla (tenes que depurarlo linea por linea).
 
Y en cuanto a lo de la ventana:
Seria mejor que usaras una enumeracion de todos los procesos en ejecucion y compararas su nombre con el del CS.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #12 en: Sábado 30 de Septiembre de 2006, 17:17 »
0
el nombre de la ventana del cs es Valve001 , probe con ese y la inyecto.. pero la dll no hace lo que deberia..

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #13 en: Sábado 30 de Septiembre de 2006, 17:25 »
0
Cita de: "martinss"
el nombre de la ventana del cs es Valve001 , probe con ese y la inyecto.. pero la dll no hace lo que deberia..
Barbaro ... obviamente el codigo que copiaste y pegaste de Internet o donde fuera estaba correcto. ¿Que tiene que ver la DLL? ¿No la escribio tu amigo que sabe mucho de C? ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #14 en: Sábado 30 de Septiembre de 2006, 17:28 »
0
Bueno te comento... la dll le pedi yo a un amigo que la haga porque yo de "C" no se mucho, la dll lo que hace es mandar un mensaje a la consola del CS para autentificar eso es todo.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #15 en: Sábado 30 de Septiembre de 2006, 17:51 »
0
Y bueno ... tendras que depurar esa DLL para saber que pasa ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

robokop

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #16 en: Sábado 30 de Septiembre de 2006, 19:41 »
0
Citar
Barbaro ... obviamente el codigo que copiaste y pegaste de Internet
Si ese codigo ya lo habia visto en el foro delhacker  :whistling:  y esta todo igual....
ya vez tenía razon con el nombre de la ventana :smartass:  , si el codigo hubiera sido tuyo completamente te hubieras dado cuenta de eso tu solo...
Aqui el problema puede ser la dll o algun tipo de proteccion del CS aunque no creo porque por lo general cuando tiene proteccion se cae la aplicación pero checale de todos  modos y tambien has lo que te dice eternal .
A y por cierto estas completamente seguro que ese es el verdadero nombre no vaya a ser que lo confundas con un menu o toolbar del CS ...

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #17 en: Sábado 30 de Septiembre de 2006, 20:36 »
0
no.. esta bien la consola se llama Valve001  :)

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Inyección En Vb
« Respuesta #18 en: Lunes 2 de Octubre de 2006, 13:49 »
0
mmm yo creo que el inyector inyecta tarde la dll y por eso no funciona  ;)