BHC (Batch Hide Compiler 2.2) by WHK [Proyecto para abril Negro]

Iniciado por WHK, 4 Mayo 2009, 04:48 AM

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

WHK

Esque si lo paso a pipe tal como lo hace otro programa tendría que dar a ejecución linea por linea del bat y cuando se interprete lo hará linea por linea también asi que las variables no funcionarían ni los goto tampoco y solo serviría como si estubieras insertando comandos a la consola y eso no sirve para un bat ya que aunque no destruyas el pipe cada señal de ejecución lo pasa a una ejecución nueva dentro del mismo pipe.

El peso del Stub es de 24KB y cuando lo pasas por UPX te queda en 7KB sin contar el peso del ba ni del ícono aunque el ícono si va dentro del upx asi que debería quedar masomenos con todo en unos 9kb.

El lenguaje es vb6 aunque la ejecución del stub no depende de ninguna librería que ya no venga incluida en el mismo windows.

El bat es desempaquetado en el directorio temporal y ejecutado, no usa pipes aunque el directorio de ejecución sigue siendo el mismo en donde está el ejecutable asi que llas rutas siguen intactas simulando que el bat es el ejecutable. No hay ninguna cosa que impida su normal funcionamiento ni aparecerán rutas raras ni nada.. me fijé muy bién en ese detalle.

E0N me pidió que si podía colorear el IDE, .... lo integraré al proyecto y algún dia saldrá esa actualización ya que el método lo tengo pero tengo que adaptarlo al proyecto.

Ahh.. y como dice Nakp, corre super bién con el wine de gnu/linux  :P asi que hasta puedes generar los ejecutables desde ubuntu si quieres jaja.

Lo único que se me puede ocurrir es pasar el bat a memoria pero ahi no sabría como hacer para que el cmd interprete una cadena completa sin que haya archivo.. sinceramente no se me ocurre como ya que cmd interpreta solamente archivos y no strings como bats dentro de un bat.

Arkangel_0x7C5

Cita de: WHK en  4 Mayo 2009, 19:31 PM
Lo único que se me puede ocurrir es pasar el bat a memoria pero ahi no sabría como hacer para que el cmd interprete una cadena completa sin que haya archivo.. sinceramente no se me ocurre como ya que cmd interpreta solamente archivos y no strings como bats dentro de un bat.
Es muy facil ejecutar el batch desde memoria, se lo pasas al cmd por argumentos como una cadena terminada en 0. cada linea la distinguira por que lo separa un \n.

Prueva esto:
Código (cpp) [Seleccionar]

System("echo hola\n echo Soy un Batch")


Saludos

YST

Cita de: Hacker_Zero en  4 Mayo 2009, 16:28 PM
why not?  :huh:

Edito: Creo que ya pillé el why not, malditas etiquetas  :xD.

Saludos
Por el for entre otras cosas :P


Yo le enseñe a Kayser a usar objetos en ASM

[Zero]

Cita de: Arcangel_0x7C5 en  4 Mayo 2009, 20:07 PM
Cita de: WHK en  4 Mayo 2009, 19:31 PM
Lo único que se me puede ocurrir es pasar el bat a memoria pero ahi no sabría como hacer para que el cmd interprete una cadena completa sin que haya archivo.. sinceramente no se me ocurre como ya que cmd interpreta solamente archivos y no strings como bats dentro de un bat.
Es muy facil ejecutar el batch desde memoria, se lo pasas al cmd por argumentos como una cadena terminada en 0. cada linea la distinguira por que lo separa un \n.

Prueva esto:
Código (cpp) [Seleccionar]

System("echo hola\n echo Soy un Batch")


Saludos

Ves como fue una pena lo de c++  :xD. En vb va a ser más complicado hacer eso  :P.

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

YST

Cita de: Hacker_Zero en  4 Mayo 2009, 20:39 PM
Cita de: Arcangel_0x7C5 en  4 Mayo 2009, 20:07 PM
Cita de: WHK en  4 Mayo 2009, 19:31 PM
Lo único que se me puede ocurrir es pasar el bat a memoria pero ahi no sabría como hacer para que el cmd interprete una cadena completa sin que haya archivo.. sinceramente no se me ocurre como ya que cmd interpreta solamente archivos y no strings como bats dentro de un bat.
Es muy facil ejecutar el batch desde memoria, se lo pasas al cmd por argumentos como una cadena terminada en 0. cada linea la distinguira por que lo separa un \n.

Prueva esto:
Código (cpp) [Seleccionar]

System("echo hola\n echo Soy un Batch")


Saludos

Ves como fue una pena lo de c++  :xD. En vb va a ser más complicado hacer eso  :P.

Saludos

En visual basic es igual de sencillo para eso esta la dll msvcrt.dll que contiene la función system.


Yo le enseñe a Kayser a usar objetos en ASM

[Zero]

#15
Me refiero a pasarle el puntero donde inyectó el código  :P.

Saludos

Edito: No hace falta inyectar, con mapearte en memoria ya tienes el código en memoria, lo buscas y le pasas el puntero a system  :P.

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Arkangel_0x7C5

Cita de: Hacker_Zero en  4 Mayo 2009, 20:39 PM

Ves como fue una pena lo de c++  :xD. En vb va a ser más complicado hacer eso  :P.

Saludos
Solo tienes que usar CreateProcess a cmd.exe y añadirle la opción /c para que se cierre al final, no hace falta System.

Saludos

Karcrack

Cita de: Arcangel_0x7C5 en  4 Mayo 2009, 22:02 PM
Cita de: Hacker_Zero en  4 Mayo 2009, 20:39 PM

Ves como fue una pena lo de c++  :xD. En vb va a ser más complicado hacer eso  :P.

Saludos
Solo tienes que usar CreateProcess a cmd.exe y añadirle la opción /c para que se cierre al final, no hace falta System.

Saludos
WinExec() es el API equivalente a System() ;)

De todas formas, no es posible ejecutar *.Bat's completos onthefly ... Al menos no de estas formas...

Saludos ;)

[Zero]

Ah es que me pareció entender que con system() si se podían correr bats completos, si no es así pues nada no hay forma ni con cmd /c ni con pipes ni en memoria  :( .

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Novlucker

Cita de: Karcrack en  4 Mayo 2009, 22:06 PM
De todas formas, no es posible ejecutar *.Bat's completos onthefly ... Al menos no de estas formas...

Ej:
Código (dos) [Seleccionar]
set /a valor=5
echo %valor%


:rolleyes:
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein