Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ignorantev1.1 en 5 Octubre 2011, 05:00 am



Título: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 5 Octubre 2011, 05:00 am
Buenas, hola, ¿cómo están?

Les cuento: Me estoy volviendo loco, a lo mejor no tenga que ver con mi duda pero igual lo comento:

Quiero hacer una lanzadera: Supuse que es lo mismo que el loader de windows. El problema es que no sé como empezar... bueno, ya empezé, me puse a buscar información por el "intermes" y aquí mismo en el hacker. No encontré mucho, un codigo pero en C++, se me hizo bastante complejo.

El detalle es que no pretendo hacer malware (así que sugiero no mover de sección el tema, gracias), más bien sería algo como un crack para un programa, el clasico modificar 2 offset para saltarme una comprobación, pero pretendo hacerlo atravez de otro programa SIN modificar el archivo original, o sease desde memoria(runtime creo le llaman).

Cabe resaltar, que me leí un par de tutoriales de PE y del loader... sigo sin comprender ciertas cosas, más especificamente (y en lo que siempre me truena todo), las malditas APIS, no sé cómo empezar, cuales usar, etc, etc... ¡no sé nada!

Saludos!... y gracias!

PD: acepto recomendaciones de todo tipo, inclusive de "ya no vuelvas por el foro", que las acate es otra cosa... No, ya en serio, un ejemplo en vb talvez o lo que sea, pero se me ha cerrado el mundo... :-(


Título: Re: Loader de Windows[Help!]
Publicado por: raul338 en 5 Octubre 2011, 05:10 am
Quiero hacer una lanzadera: Supuse que es lo mismo que el loader de windows. El problema es que no sé como empezar... bueno, ya empezé, me puse a buscar información por el "intermes" y aquí mismo en el hacker. No encontré mucho, un codigo pero en C++, se me hizo bastante complejo.
Mira, Loader de windows me suena al bootloader (que no es lo mismo x'D) y si busco windows loader en gügel me sale el programita para "piratear" windows :xD
Capaz quisiste decir Launcher (por su traducción) pero bueno. Vos querés algo así una mezcla de Cheat Engine con OllyDebug no?

El detalle es que no pretendo hacer malware (así que sugiero no mover de sección el tema, gracias), más bien sería algo como un crack para un programa, el clasico modificar 2 offset para saltarme una comprobación, pero pretendo hacerlo atravez de otro programa SIN modificar el archivo original, o sease desde memoria(runtime creo le llaman).
Por lo que dije antes te lo mandaría a Ing Inversa :xD, haber si alguien que sepa del tema se pasa por aca.

Cabe resaltar, que me leí un par de tutoriales de PE y del loader... sigo sin comprender ciertas cosas, más especificamente (y en lo que siempre me truena todo), las malditas APIS, no sé cómo empezar, cuales usar, etc, etc... ¡no sé nada!
Uno que están recomendando mucho es un tutorial de formato PE hecho por The Swash pero no se si tenga algo que ver, tambien, si lo "modificas" ya sea de cualquier manera y querés ejecutarlo al aire: busca un modulo de Cobein llamado "RunPE" (no se si lo vas a encontrar eso solo, la mayoría de cobein ya no se encuentra fácilmente. Por ahí si buscas crypters hechos con eso tenes mas suerte). Y para manejar la memoria del proceso, creo que son las tipicas OpenProcess, ReadProcessMemory y eso :3

PD: acepto recomendaciones de todo tipo, inclusive de "ya no vuelvas por el foro", que las acate es otra cosa... No, ya en serio, un ejemplo en vb talvez o lo que sea, pero se me ha cerrado el mundo... :-(
:xD :xD
Hoy a las 00:00 ... listo, hoy juegos los huevos (?


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 5 Octubre 2011, 05:50 am
Lo de loader, lo leí en un codigo que puso Zero(creo, es su nick), pero como te digo C++  :¬¬

Citar
Por lo que dije antes te lo mandaría a Ing Inversa :xD, haber si alguien que sepa del tema se pasa por aca.

No creo, ya hice lo que tenía que hacer con el programa, en ingeniería inversa (Casi) no tengo dudas, al menos en este caso.

También busqué ejemplos de "crypters runtime", no fue muy exitoso que digamos  :xD

Sobre el formato PE, leí, pero hay cosas muy complejas que sencillamente no lo relaciono con lo poquito qué sé de VB.

Citar
Hoy a las 00:00 ... listo, hoy juegos los huevos (?

No entendí   :¬¬

Lo de RUNPE, lo buscaré de inmediato.

Gracias Raul, explicame lo de:
Citar
Hoy a las 00:00 ... listo, hoy juegos los huevos (?

Dale, saludos!  :xD


Título: Re: Loader de Windows[Help!]
Publicado por: BlackZeroX en 5 Octubre 2011, 07:38 am
Uno que están recomendando mucho es un tutorial de formato PE hecho por The Swash

Para mirar un ejemplo practico Ok... aun que yo recomendaria mejor leerse esto, ya que los ejemplos hechos por 3ros suelen tener horrores aun que sean minimos.

Microsoft PE and COFF Specification (http://go.microsoft.com/FWLink/?LinkId=84140)
...

pero bueno aqui tienes...

RunPe and CallAPIByName (http://cobein.com/wp/?p=151)

Dulces Lunas!¡.


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 5 Octubre 2011, 08:24 am
Carnal:
Ya leí algo de PE anteriormente pero no se aplicarlo a VB...

Y sobre lo otro:

Citar
Forbidden

You don't have permission to access /wp-content/2009/07/RunPE.rar on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Gracias!


Título: Re: Loader de Windows[Help!]
Publicado por: BlackZeroX en 5 Octubre 2011, 09:32 am
el formato PE solo sone structuiras de datos... publica en el blog que ya no sirve el enlace yo no puedo ahcer nada... = puedes enviar un MP a karcrack pero mejor a cobein...

Dulces Lunas!¡.


Título: Re: Loader de Windows[Help!]
Publicado por: Elemental Code en 5 Octubre 2011, 11:24 am
algo asi como el code fusion? :huh:


Título: Re: Loader de Windows[Help!]
Publicado por: raul338 en 5 Octubre 2011, 14:39 pm
Hoy a las 00:00 ... listo, hoy juegos los huevos (?
Es justo una hora muy especifica (se podria decir que lo planeaste postear a esa hora :xD) asi que hoy jugare el 00 en la quiniela (loteria) :xD

Busca crypters RunPE y aparecerán :P

Especifica un poco mas que querés hacer con el launcher... Parchar memoria? Preparar algo para romper el programa victima? ....


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 5 Octubre 2011, 18:31 pm
@Raul338
Pues aquí en México eran las 21:00 horas  :xD

Simplemente poner el programa en memoria, modificarle un par de bytes y arrancarlo  :silbar: ... ¡es todo!  :xD

Saludos!


Título: Re: Loader de Windows[Help!]
Publicado por: Slek Hacker en 5 Octubre 2011, 18:42 pm
Creo que lo que quieres es Parchear en Memoria, es decir, Modificar el Offset para crackear el programa, pero en memoria.
Si es así, mírate este post de Skyweb en el que lo hace con un juego de PC. Antes había un tuto en "taringa", pero lo han borrado.
http://leandroascierto.com/foro/index.php?topic=303.0 (http://leandroascierto.com/foro/index.php?topic=303.0)

Mírate también acerca de  estas APIS: WriteProcessMemory y ReadProcessMemory
y este tópic: http://www.leandroascierto.com.ar/foro/index.php?topic=301.0 (http://www.leandroascierto.com.ar/foro/index.php?topic=301.0)

Pero si quieres modificar la memoria antes de que se ejecute el programa... Bueno, eso es un poco más complicado.

Saludos!!


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 5 Octubre 2011, 20:43 pm
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!


Título: Re: Loader de Windows[Help!]
Publicado por: Slek Hacker en 5 Octubre 2011, 23:07 pm
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.

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
  1. Dim hWnd as Long
  2. hWnd = FindWindow(vbNullString, "Sin título - Bloc de notas")

Para buscar por clase:
Código
  1. Dim hWnd as Long
  2. hWnd = FindWindow(clase, vbNullString)

Algunas Clases:
Código
  1. MSOutlook = "OpusApp"
  2. MSExcel = "XLMAIN"
  3. MSIExplorer = "IEFrame"
  4. MSVBasic = "wndclass_desked_gsk"
  5. NotePad = "Notepad"
  6. 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:

Código:
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!!


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 5 Octubre 2011, 23:30 pm
Citar
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.

Por su puesto, pero la prioridad era otra  :D

Citar
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)

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

Saludos y gracias!


Título: Re: Loader de Windows[Help!]
Publicado por: Slek Hacker en 5 Octubre 2011, 23:39 pm
Y dónde está el problema? xDD


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 6 Octubre 2011, 07:05 am
Citar
Y 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...  ;)


Título: Re: Loader de Windows[Help!]
Publicado por: BlackZeroX en 6 Octubre 2011, 08:48 am

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


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


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.


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!¡.


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 6 Octubre 2011, 19:45 pm
 :-(

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...


Título: Re: Loader de Windows[Help!]
Publicado por: BlackZeroX en 9 Octubre 2011, 06:25 am
@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!¡.


Título: Re: Loader de Windows[Help!]
Publicado por: raul338 en 10 Octubre 2011, 00:09 am
Lo encontre rebuscando temas VIEJISIMOS :xD

Run EXE from memory (Source) (http://foro.elhacker.net/programacion_visual_basic/run_exe_from_memory_source-t214872.0.html)

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


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 10 Octubre 2011, 23:51 pm
@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!


Título: Re: Loader de Windows[Help!]
Publicado por: BlackZeroX en 11 Octubre 2011, 19:37 pm
@BlackZeroX

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


Ecole le atinaste a las 3 solo quitales los signos de pregunto y el 4 parametro como ves dice claramente Dirrecion de la funcion REAL es decir que el hook es un gancho antes de un proceso real que termina llamando al mismo... si se quiere obvio,

Dulces Lunas!¡.


Título: Re: Loader de Windows[Help!]
Publicado por: ignorantev1.1 en 12 Octubre 2011, 20:43 pm
Citar
Ecole le atinaste a las 3 solo quitales los signos de pregunto y el 4 parametro como ves dice claramente

Eha!, bien lo decía mamá: "este chamaco va a salir reteabusado" ::)

Pero sigo sin comprender el 4to parametro  ;-)

De hecho sigo sin comprender la logíca del ejemplo  :P

Citar
    ' redirect __vbaEnd to EndEx,
    ' make RealEnd proxy to __vbaEnd
    If clsRedirect.Hook("msvbvm60", "__vbaEnd", AddressOf EndEx, AddressOf RealEnd) Then
        MsgBox "End wurde gehookt!", vbInformation
    Else
        MsgBox "Hook fehlgeschlagen", vbExclamation
    End If
O sea: Considerando que RealEnd es un procedimiento que solo tiene "DoEvents" , ¿entonces?

Citar
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?
...

Saludos y gracias!

PD: Mamá estaba equivocada... :D