Inyección en proceso externo

Iniciado por Slek Hacker, 27 Septiembre 2010, 20:14 PM

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

Slek Hacker

Bueno, pues ya he terminado la inyección, basándome en un código en C para la misma función, pero me crashea el proceso al que me inyecto. Al parecer todo va bien, pero no se qué pasa.  :huh:

Os dejo el código para que le hecheis un ojo.

http://www.multiupload.com/34PD1WS3EJ

Saludos y gracias de antemano.

bizco

lo he mirado por encima, pero dudo que funcione asi como lo planteas. en ningun caso estas verificando el resultado de las otras funciones y todo el proceso depende de ese resultado.

Otra cosa:

CitarInyectar ProcessHandle, GetAddr(AddressOf SMain)

CitarPrivate Function Inyectar(ProcessHandle As Long, ByVal EntryPoint As Long)
....
..
CreateRemoteThread ProcessHandle, ByVal 0, 0, ByVal EntryPoint, ByVal Module, 0, TID

El thread lo lanzas en una direccion que si se da el caso que exista no sabes que contiene.

dale un ojo a esto http://msdn.microsoft.com/en-us/library/ms682437%28v=vs.85%29.aspx

y  a esto http://msdn.microsoft.com/en-us/library/aa366890%28VS.85%29.aspx

Slek Hacker

Muchas Gracias por contestar.
Los resultados de las funciones los he comprobado yo manualmente:
Module = es como una constante, siempre sale el mismo número, tanto en Delphi como en VB6.
Size = Tamaño del ejecutable
He comprobado el PID del notepad también con el taskmanager, y los BytesWritten.
NewModue = Module, el mismo número.
Hasta he comprobado el ThreadID. Y con GetLastError no hayo nungún error.

EL SMain se encuentra en el Módulo 1, que muestra unos MsgBox para confirmar que se ha ejecutado el Thread Correctamente.

Saludos!

bizco

si, se lo que hace. vuelve a mirar las partes de codigo que puse en la primera respuesta. obtienes la direccion de smain en tu proceso y lanzas el thread en otro proceso usando esa direccion...... lee los  2 enlaces que te puse.

Slek Hacker

Creo que ya se a qué te refieres.
Tengo que quitarle el ImageBase a la dirección del AddressOf y sumarle NewModule?
Así obtendré la dirección en memoria del la función en el otro proceso?

Saludos!

bizco

si te lees la documentacion de las funciones (los enlaces que te puse en la primera respuesta) sabras quien te da la direccion.

PD: aparte de todo eso, en el caso que obtengas la direccion de la funcion que copias tampoco funcionara,

Slek Hacker

Debería usar VirualFreeEx para liberar la Memoria "Commited".
Después, debería usar la api ThreadProc, pero no entiendo muy bien el inglés, y me está costando mucho saber qué hace dicha api.

Slek Hacker

Por favor, alguien que me ayude. estoy estancado.
Tengo el code en Delphi y en C. Si lo necesitais, lo pongo.

Gracias de antemano.