Enviar paquetes a un proceso

Iniciado por Rigoberta II, 12 Abril 2012, 00:17 AM

0 Miembros y 2 Visitantes están viendo este tema.

Rigoberta II

Hola, mi consulta es la siguiente, hace tiempo estoy intentando hacer un programa en vb6 que envié paquetes modificados a un servidor así como funciona el Rpe Filter, Wpe Pro y demás programas.(Seleccionas un proceso y escuchas todos los datos que se comunican sv/cliente y tiene su respectiva propiedad Send y rcmv )
He leído todos los post y ninguno me resulto, por lo tanto me gustaría saber como hacer esto.
Lei algo de VBPCAP.DLL (Dll Packet Capture ) alguien entiende de esto? Porque no tengo la menor pálida idea.
O sino como sacar el offset(pointer,address) de un proceso/ventana o lo que fuese estuve mirando en el cheat engine buscando la IP y luego copiaba el valor que me daba pero no me resulta.

rembolso

te refieres a esta funcion ?

Declare Function vpSendPacket Lib "VBPCAP.DLL" (ByRef buffer() As Byte) As Long
esa es para enviar,  siempre y cuando la matriz de bytes es el tamaño correcto, se lo envía.
mira ak tenes un tuto de la vbpcap.dll
http://alancordwell.co.uk/software/vbpc1.html
http://alancordwell.co.uk/software/vbpc2.html
http://alancordwell.co.uk/software/vbpc3.html

Rigoberta II

Disculpa que te moleste, esto lo probaste o lo viste en internet. Osea vos decis que sirva?
Como funciona se inyecta en el proceso? Osea como configuro para que proceso hacer todo, ojo no es que no lo lei, sino que no entiendo muy bien.

rembolso

mira te soy sincero no e trabajado nunca con esa dll, solo que me descarge  un .rar que contenía muchos surces que había echo una mina en este foro utilizando VBPCAP.DLL, y había echo un sniffer con la posibilidad de enviar paketes interviniendo en los procesos. en los link que te puse hay unos ejemplos para lo que vos pedis, léelo y busca mas info. mientras me fijo donde puede  estar ese codigo y te lo posteo. ya si no tenes tanta experiencia en vb o te acabas de iniciar tampoco te penses que laburar con dll y apis es facil, se requiere de logica bla y blabla suerte.

BlackZeroX

ammm quedaría mejor si usas los Sockets Raw... revisa un manual/tutorial/documentación de como crear los sockets y de que tratan (day de 3 tipos hasta donde tengo entendido y uno de esos son los RAW que es lo que tu quieres)... la dll vbpcap.dll seguro termina usando estos pero no te deja ver ni modificar nada, así que a mi criterio sera mejor que te crees un código (o lo busques con ayuda de google, hay varios por ahí, no me digas que no hay por que si hay, ¿donde? esa es tu tarea)

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

Rigoberta II

Cita de: rembolso en 13 Abril 2012, 01:45 AM
ya si no tenes tanta experiencia en vb o te acabas de iniciar tampoco te penses que laburar con dll y apis es facil, se requiere de logica bla y blabla suerte.
Estudio hace mucho tiempo este lenguaje, no me especifique nunca en este area, sino que el estudio era general.
Y respondiendo a blackzerox he buscado bastante en google pero o no funcionaban o no servian para realizar lo que yo queria.
Alguien me explica a como conseguir el pointer/offset del programa/proceso/ventana de un archivo? Ese que empieza con &H........... creo que se saca con el engine buscando la ip del proceso. Pero no logro entender como funciona.

Dunkansdk

Lo que tenes que hacer es tomar la porcion de memoria donde se almacena la IP y sacar la dirección solamente de esa porción, una vez que lo tenes crea una funcion que reemplace esa porcion de memoria por '127.0.0.1' en hex y pone los bytes que sobran 00...

La funcion sería algo así:

Código (vb) [Seleccionar]
Public Function Set_Memory_IP(MemoryOffset As Long, WindowName As String, Value As Currency) As Currency

    Dim hWnd As Long
    Dim ProcessID As Long
    Dim ProcessHandle As Long
   
    hWnd = FindWindow(vbNullString, WindowName)
   
    If hWnd = 0 Then
   
            MsgBox "No encontré el proceso", vbCritical, ""
           
            Exit Function

    End If
   
    GetWindowThreadProcessId hWnd, ProcessID
   
    ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
   
    If ProcessHandle = 0 Then
           
        Exit Function
       
    End If
   
    WriteProcessMemory ProcessHandle, MemoryOffset, Value, 8, 0&

    CloseHandle ProcessHandle

End Function


Asi logras interceptar los paquetes que envía entre el cliente y el servidor y lo manejas como queres jaja

Rigoberta II

Dunkan te molestaria explicarme una cosa por msn? Lei tus mensajes y estas en la misma que yo :p
Ya encontre el offset, lo puse

WriteLocalhost OFFSET, "VENTANA", "1294808515516,8305"

Pero no logro conectar departe del winsock

Private Sub Cliente_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error Resume Next
Cliente(0).Close
For a = 1 To 2
If Cliente(a).State = 0 Then
Server(a).Close
Server(a).RemoteHost = "127.0.0.1"
Server(a).RemotePort = 7666
Server(a).Connect
Cliente(a).Accept requestID

Form load :
Cliente(0).Close
Cliente(0).LocalPort = 7666
Cliente(0).Listen
End Sub

Me dice que el puerto esta en uso,
haciendo netstat tiene algo que ver? Osea
El local de  7666 me figura como 9148 si lo hago asi me sigue tirando Address in use y me remarca
Cliente(0).listen


Dunkansdk

Porque no modificas esa porcion de la memoria, proba haciendolo con el cheat engine y despues conectar los sockets... La verdad no tengo idea que msn tentes

Rigoberta II

Si si, la modifique pero no hay caso.
Agregame : cannon996@hotmail.com
Te lo agradecería.