Autor
|
Tema: Leer ejecutable e inyectar ???? (Leído 3,806 veces)
|
Bb-7
Desconectado
Mensajes: 38
|
Hola. Voy al grano. Un amigo y yo estamos creando un cripter, y yo soy el encargado del stub. Por ahora todo va perfecto, ya que mi stub es capaz de leerse a sí mismo, extraer el ejecutable y las opciones, descifrar el ejecutable, escribirlo, y correrlo. Ahora, he decidido dar un paso más, y en vez de crear un ejecutable temporal, lo que quiero es inyectar el código directamente en memoria tras haberlo descifrado. Teóricamente no me suponía ninguna dificultad, pero al pasar a la práctica, no me funcionaba. Sé inyectar funciones al estilo de void inyectada(DATOS *str_datos), en un proceso ó DLL, pero leer un ejecutable entero e inyectarlo es lo que llevo tiempo intentando hacer sin éxito, y me gustaría que me ayudarais. No quiero un código, puesto que no soy de esas personas que copian, pegan y no entienden, no voy por el camino lammeril. Lo que quiero es una explicación teórica de cómo hacerlo, y a partir de ahí seré yo quien cree el código. Lo que hacía hasta ahora era una vez leído y descifrado el código del ejecutable, meterlo en un puntero void, abrir el proceso notepad.exe, reservar memoria, e inyectarlo allí, y después abrir un thread, pero no pasaba nada, salvo que se cerraba el notepad. Un saludo y gracias de antemano.
|
|
|
En línea
|
|
|
|
Lewert
Desconectado
Mensajes: 231
|
Antes que nada mira los posts con chinchetas, puede que ahi esté tu respuesta!  http://foro.elhacker.net/analisis_y_diseno_de_malware/ejecucion_de_archivos_desde_memoria_base_relocation-t264564.0.html
|
|
|
En línea
|
Crack the bytes, crack yourself
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Antes de pasar a hacer todo esto has de tener conocimientos sobre el formato PE y, luego saber como ofuscar ejecutables mano a mano. Luego todo esto, lo aplicas al código. Saludos 
|
|
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Si, es fundamental que conozcas el formato PE para trabajar con el ejecutable, ya que para inyectar un exe en memoria tienes que emular el loader de Windows. - Una vez tienes el ejecutable leído y tienes un puntero hacia el, creas un proceso, vacías los datos con los que arranca (en este caso el notepad.exe) con NtUnmapViewOfSections y reservas una cantidad de memoria igual a su SizeOfImage con VirtualAllocEx en la dirección de su ImageBase.
- Ahora, tienes que ir recorriendo cada sección del ejecutable y copiarla con WriteProcessMemory a su VirtualAddress.
- Para terminar, sólo te queda crear el hilo de ejecución con CreateRemoteThread hacia su EntryPoint.
Esa es la forma común, hay otras formas, más detectadas o menos detectadas, más complicadas y menos, pero todo se basa en tener clara la estructura de los ejecutables y qué hace windows para arrancarlos cuando el usuario lo desea. Taller Formato PE by FerchuSaludos 
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
|
|