![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
He estado fuera de casa en estos días y no he podido contestar.
No deberías tener problemas para inyectar una dll en cualquier proceso que corra en windows, siempre que respetes la compilación en 32bits ó 64 bits, según sea el caso. Aquí tienes una forma de hacerlo. Es independiente del lenguaje original, por lo tanto es igual que el binario provenga de BV u otro. El hecho de que ciertas APIs no figuren en la IAT del proceso a inyectar, no quiere decir que no las puedas usar. Todo proceso carga Kernel32.dll, para más curiosidad revisa esto: Shellcode en C compatible con distintas inyecciones Saludos. |
|
#2
|
||||
|
||||
|
al final lo hice de otra manera. Como la aplicacion corre dentro de un loader debugger, lo que hago es usar VirtualAllocEx y solicito memoria para copiar las funciones de la dll. Luego pongo unos bps donde deseo y desde esas zonas injerto los push necesarios, el call correspondiente y el retn. De todos modos me interesa mucho tu codigo pero tengo una duda. En xp si en un pc llamas a una api, siempre obtendrás el mismo hmodule pero, segun tengo entendido, a partir de Vista ya no es asi y puede cambiar entre ejecuciones y veo que LoadLibrary lo obtienes en tu proceso ¿No daria problemas en Vista/7/8?
|
|
#3
|
||||
|
||||
|
Las inyecciones en win32 sea WinXP, Vista, Win7 o Win8 funcionan localizando la API LoadLibrary, o cualquiera desde el proceso inyector. Pero tienes razón en que MS$ puede cambiar la política de la localización de las direcciones de la API. Para solventar el problema, realicé este ejemplo de shellcode que localiza el BaseAddress de kernel32.dll. Seoane lo hizo de esta otra manera. Así conoceremos las direcciones de las API desde el mismo proceso anfitrión, y no desde el inyector.
Saludos. |
|
#4
|
||||
|
||||
|
claro,lo que varia es la posicion base donde se carga la dll pero si puedes ejecutar esas funciones desde el anfitrion pues resuelves el problema. Ahora mismo estoy encamado con fiebre pero cuando me encuentre mejor los miro con mas detenimiento ya que en delphi no me entero mucho. Otra cosa amigo, si uso VirtualAllocEx, cuando se cierra la aplicacion a la que le he asignado la memoria ¿Se libera sola la memoria o tengo que hacerlo yo a mano con VirtualFreeEx? Segun veo con Cheat engine, cuando se cierra la aplicacion la memoria se vuelve inaccesible pero no lo tengo claro.
|
|
#5
|
||||
|
||||
|
Lo suyo y lo limpio es liberar la memoria cuando ya no la quieres.
Saludos. |
|
#6
|
||||
|
||||
|
Bueno, al final lo que estaba haciendo no me iba bien del todo ya que en unas funciones de la dll funcionaba y en otras crasheaba creo que porque como solo copio las funciones pues al ejecutarse supongo que buscaba alguna cosa de la dll y booom.
Lo estoy intentando pasar todo para usarlo con lo que pusiste y de momento para cargar la dll tengo esto: Código PHP:
El problema que tengo es que se queda congelado en el WaitForSingleObject aunque si lo miro con el Cheat Engine puedo ver como se ha creado el hilo. ¿que puedo hacer para solucionar eso? |
|
#7
|
||||
|
||||
|
Probablemente es un problema en el depurador, intenta esto:
Código PHP:
Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Crear Frame Dinámicamente | chinchan | C++ Builder | 2 | 09-05-2008 14:07:08 |
| Crear ODBC dinámicamente? | HccSoft | Conexión con bases de datos | 3 | 18-03-2008 15:19:32 |
| Crear form dinamicamente | karocs | Varios | 1 | 15-09-2005 20:15:18 |
| insertar dinamicamente | YolandaM | Varios | 4 | 16-03-2005 10:21:41 |
| Cambiar iconos dinamicamente | Diegoval | Gráficos | 1 | 25-06-2004 15:35:04 |
|