Loader de Windows[Help!]

Iniciado por ignorantev1.1, 5 Octubre 2011, 05:00 AM

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

ignorantev1.1

#10
Hola @Slek Hacker, pues no le encuentro relación alguna con lo que plantéo, pero igual me ayuda para algo que traigo entre manos  ;D

Emm, dos preguntas estupidas acerca de esto:
1) ¿Cómo saber el nombre de la clase de la aplicación para findwindow?
2) ¿Como vigilar la memoria de una aplicación (externa) en ejecucion, en tiempo real? <--- ¡Listo!

Miren, la lógica de la aplicación a la que quiero modificar es la siguiente:

Citar
Variable prvInst
prvInst = CreateMutex([params])
Si prvInst = [AlgunDato] Entonces
  SalirAplicacion
Fin Si

Acudiendo al Ollydbg y un editor hexadecimal, es facilisimo burlarse de eso. Pero no quiero modificar el cliente que está en el disco.

Para esto me saltan 2 opciones:

1) Modificarlo en memoria y arrancarlo desde ahí.
2) Hook a CreateMutex *

* Pero a lo mejor estoy entendiento mal el concepto de hook (apihook), y a lo que voy leyendo lo veo muy complicado (especificamente para VB). Ustedes dirán qué opción es más viable.

Por lo pronto seguiré este instructivo, a ver donde me atoro  :¬¬:

Citar*   Lee el archivo y busca la cabecera DOS, la cabecera PE y las cabeceras de las secciones.
*    Intenta reservar espacio en memoria en la dirección del ImageBase, y si ya está en uso, la reserva en otra dirección. La cantidad de memoria que reserva está marcado por el SizeOfImage.
*    Mapea las distintas secciones de acuerdo con su VirtualOffset y VirtualSize y los Flags.
*    Si el archivo no está cargado en su ImageBase, hace una reubicación de la base del ejecutable.
*    Recorre la Import Table y carga las librerías que importa en ejecutable.
*    Rellena la IAT con las direcciones de las funciones que importa.
*    Crea el hilo inicial de ejecución y lanza el proceso.

Saludos!

Slek Hacker

#11
Hola, en realidad si que tiene relación, porque lo que hace el code es modificar la memoria de un archivo externo en ejecución, y básicamente es lo que buscas.

Cita de: ignorantev1.1 en  5 Octubre 2011, 20:43 PM
1) ¿Cómo saber el nombre de la clase de la aplicación para findwindow?

Es que en realidad, FindWindow te permite buscar el Handle de una ventana por el Tipo (Clase) o por el nombre (Caption), o ambas. Normalmente, es preferible buscar por Nombre.

Para buscar por Nombre (Caption):
Código (vb) [Seleccionar]
Dim hWnd as Long
hWnd = FindWindow(vbNullString, "Sin título - Bloc de notas")


Para buscar por clase:
Código (vb) [Seleccionar]
Dim hWnd as Long
hWnd = FindWindow(clase, vbNullString)


Algunas Clases:
Código (vb) [Seleccionar]
MSOutlook = "OpusApp"
MSExcel = "XLMAIN"
MSIExplorer = "IEFrame"
MSVBasic = "wndclass_desked_gsk"
NotePad = "Notepad"
MyVBApp = "ThunderForm"


Respondiendo a tu segunda cuestión:

Es que los codes que te puse antes sirven para crackear, por ejemplo, cuando te pide serial y muchas otras protecciones. Lo que tu dices, la única forma que veo es mediante Hook a CreateMutex, pero nunca he probado ApiHooks en VB6 y no estoy seguro de si se puede hacer.

La opción 1) debe realizarse posteriormente a la 2), es decir, primero tendrías que hacer un Hook a CreateMutex, para saber cuándo llaman a esa Api, y en ese momento, modificar la memoria del programa objetivo para que se ejecute siempre.

Y la otra opción que se me ocurre, y mucho más factible:

1) Abrir el archivo a ejecutar y obtener los datos en un Array
2) Modificar el/los offsets (en el array) para que nunca salte, es decir, que siempre se ejecute
3) Ejecutar en memoria ese Array (A.K.A RunPE)


Esta última sí que funcionaría 100% en VB6, y es lo que yo haría

Espero que se entienda

Saludos!!

ignorantev1.1

CitarHola, en realidad si que tiene relación, porque lo que hace el code es modificar la memoria de un archivo externo en ejecución, y básicamente es lo que buscas.

Por su puesto, pero la prioridad era otra  :D

Citar1) Abrir el archivo a ejecutar y obtener los datos en un Array
2) Modificar el/los offsets (en el array) para que nunca salte, es decir, que siempre se ejecute
3) Ejecutar en memoria ese Array (A.K.A RunPE)

Eso es precisamente lo que plantié desde el principio  :xD

Saludos y gracias!

Slek Hacker

Y dónde está el problema? xDD

ignorantev1.1

CitarY dónde está el problema? xDD

Ya me robé un modulo por ahí  :-\

La bronca es que quería entender un poquito de qué se trataba el asunto. Además de que el modulo está más fichado que la chingada xD
A ver qué le podemos hacer para que el AV no le detecte, que claro está, no es ningun malware y no debería ser así, pero ciertos trozos de código han agarrado mala fama  :xD

Bueno, como sea, saludos y gracias...  ;)

BlackZeroX

#15
Cita de: ignorantev1.1 en  5 Octubre 2011, 20:43 PM

1) ¿Cómo saber el nombre de la clase de la aplicación para findwindow?


Usa SPY++ de Visual Studio ( viene con el vb6 )...

Cita de: ignorantev1.1 en  5 Octubre 2011, 20:43 PM

1) Modificarlo en memoria y arrancarlo desde ahí.
2) Hook a CreateMutex *

* Pero a lo mejor estoy entendiento mal el concepto de hook (apihook), y a lo que voy leyendo lo veo muy complicado (especificamente para VB). Ustedes dirán qué opción es más viable.


La verdad que si lo es ya que nesesitas teoria, pero ¿que crees? tengo algunas platillas de hooks a APIS (Genericas), ya las busco y te las paso.

Cita de: Slek Hacker en  5 Octubre 2011, 23:07 PM

Es que los codes que te puse antes sirven para crackear, por ejemplo, cuando te pide serial y muchas otras protecciones. Lo que tu dices, la única forma que veo es mediante Hook a CreateMutex, pero nunca he probado ApiHooks en VB6 y no estoy seguro de si se puede hacer.


Si se puede.

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

ignorantev1.1

 :-(

La verdad qué no encuentro nada que me ayude, todos los tutoriales sobre runPE que me encuentro son para crypters, y no son tutoriales runPE, son tutoriales "para armar crypters" en los que las primeras instrucciones te dicen: "bajate el modulo runPE X".

Ya me leí algo sobre PE de Micro$oft y de otros users, pero no me explican de como, por ejemplo, crear el proceso, escribir en el proceso, lanzarlo, los hilos y todo lo que debe hacer el "windows loader".

@BlackZeroX

Dale, venga pue, esperaré las plantillas...

Saludos y gracias...

BlackZeroX

Cita de: ignorantev1.1 en  6 Octubre 2011, 19:45 PM
@BlackZeroX

Dale, venga pue, esperaré las plantillas...


http://www.mediafire.com/?0gm62lmcscxhctp

Solo puede encontrar esa en mi PC al rato reviso la otra (de la sala)

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

raul338

Lo encontre rebuscando temas VIEJISIMOS :xD

Run EXE from memory (Source)

No lo descargue todavía porque el Avast me lo detecta, después lo descargo desde otro lado :xD

ignorantev1.1

@BlackZeroX
Ya les pegué una checada a la plantilla  :xD
...pero no entiendo mucho:

Citar
clsRedirect.Hook("msvbvm60", "__vbaEnd", AddressOf EndEx, AddressOf RealEnd)

clsRedirect.Hook(ARG1, ARG2, ARG3, ARG4)

ARG1 = DLL... ¿No?
ARG2 = ¿Función víctima?
ARG3 = ¿Función Nueva?
ARG4 = No lo entiendo...

La verdad que tengo algunas preguntas acerca de esto:

1) ¿Si la función victima debe retornar un valor?
2) Al momento de implementar el Hook, ¿todas las aplicaciónes que usen la API en cuestión se verán afectadas?
3) ¿Es directamente a una DLL, no puede ser a una aplicación?
...

@raul338
Ese ya lo había descargado y está más fichado qué nada  :laugh:
El AV se pone todo paranoico  ;-)

Saludos y gracias!