[Reto Batch] Melt ($Edu$)

Iniciado por Eleкtro, 5 Mayo 2012, 11:46 AM

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

Eleкtro

Cita de: 79137913 en  9 Mayo 2012, 13:13 PM
Vos pusiste los comandos en la misma linea por ende la pc lee TODA la linea y ejecuta cada parte.

Es a lo que me refería, Pensé que tú no, Entonces no hay problema!

Salu2








$Edu$

Código (dos) [Seleccionar]

@ECHO OFF
Del /Q %0&(
echo Sigo vivo jeje!
echo Muahaha
pause)
exit


Distintas lineas.. problem? xDD

De todos modos no necesitas eso, sino que se borre desde la copia una vez que ya se cerro el original, pero la cosa es como sabe la copia donde estaba el original.. talvez al ejecutar la copia se le paso esa direccion como argumento? jeje.

Yu codigo anda menos que el anterior, no se porque esos mensajes en vbs. De ultima si nadie puede hacerlo bien subo la solucion para el que la quiera mirar y el que la mejore se gana el punto si asi lo quiere Elektro

Eleкtro

Cita de: $Edu$ en  9 Mayo 2012, 14:59 PM
De ultima si nadie puede hacerlo bien subo la solucion para el que la quiera mirar y el que la mejore se gana el punto si asi lo quiere Elektro

Ok es tu reto, Como quieras, Pero súbela a pastebin porfavor xD (Ya sabes q hay mucho copión)

Salu2








79137913

#23
HOLA!!!

ya encontre mi error, mi primer codigo era correcto, por que si cambiaba el call por start funciona como veran en el siguiente codigo 100% funcional.

Aca tienen el codigo que funciona igual que la solucion.

Código (dos) [Seleccionar]
@ECHO OFF
IF %0==a.bat GOTO ENDBAT
COPY /Y %0 "%SystemRoot%\system32\a.bat"
cls
START "%SystemRoot%\system32\" "a.bat"
DEL /S /Q %0
EXIT
:ENDBAT
ECHO "ME ESTOY EJECUTANDO EN"
ECHO %0
PAUSE


GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

$Edu$

No xD, fijate bien el comando START en la cmd, con start/? y fijate que dice creo algo de que lo primero que pones entre comillas es el titulo de la ventana, pero si no pones comillas si te toma como archivo a ejecutar. Aunque te tendria que ejecutar el "a.bat" que este al lado y no hay nada pero ejecuta algo, que no es la copia porque dice:

"Me estoy ejecutando en"
a.bat


Y si sale bien tendria que decir en C:\...\system32\a.bat

Despues el cls ese lo habras puesto para que no largue mensaje de que se copio, eso podes hacerlo haciendo que el comando no largue informacion asi:

copy /y %0 "%windir%\System32\a.bat">nul

Date por vencido maldito xDD

79137913

HOLA!!!

No seas ladron, vos y yo sabemos que se ejecuta en ese sitio!

CitarEl usuario solamente vera que cuando ejecuto el bat, este desaparecio de donde estaba pero sigue ejecutandose, mostrando un mensaje que diga: "Estoy en %0" asi se sabe si funciono el melt o no.

Con todos mis codigos hubiese ejecutado codigo malicioso!

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

$Edu$

Jejeje tal vez no me has entendido del todo bien por eso, fijate el codigo mio que anda por ahi y miralo como es.

El que quiera resolver el reto por si solo no entre aca: http://foro.elhacker.net/scripting/retos_batch-t359857.0.html;msg1742604#msg1742604

Miralo y ejecutalo, no lo mires solamente, ejecutalo y veras que simple y sin bugs.

Eleкtro

#27
entonces alguna de las soluciones de 79137913 es válida o no? xD

salu2

EDITO: El objetivo del reto se ha modificado a petición de $Edu$









$Edu$

Todavia no lo ha hecho nadie

Binary_Death

Eso de que si se borra el fichero actual ninguna línea más se ejecutará sólo es cierto en parte.
¿Conocéis el verdadero motivo de la expansión retardada de variables en batch?
Cuando la cmd lee un bloque entre paréntesis de código, primero lo carga en memoria para luego ejecutarlo. Eso significa que todas las variables contendrán el valor que contenían en el momento en el que el bloque fue cargado, y aunque se modifiquen dentro de éste, a no ser que expandas las variables como es debido, no mostrarán su valor correcto.

Tomando esto, mirad:


@Echo Off
(
del /f /q "%~0"
Echo.Y me sigo ejecutando.
Echo.Hola mundo
pause
Echo.Y otro hola mundo más
pause
Echo.Ahora sí que me cierro
Echo. Bye bye.
exit
)


xDD