como eliminar los pif o exe (Virus) Code para Mejorar "Solo Experto en Batch"

Iniciado por raftv79, 18 Abril 2015, 05:22 AM

0 Miembros y 1 Visitante están viendo este tema.

raftv79

Aquí traigo otro code, es muy interesante, esto lo hize con la ayuda del foro de esta pagina, podría decir que es una ensalada de código de muchos moderadores y le he sacado el jugo  a este programita, lo comparto con ustedes porque necesito mejorarlo y convertirlo en exe con icono, ya probe mucho convert pero me da error, pruebenlo ustedes, y veras que funciona, pero quiero respuesta, mejorar el code y convertirlo en exe sin error de windows.

si logramos resolver este tema, lanzo otro programa mas interesante.

Código (dos) [Seleccionar]
echo off
title Programa By Rafael Chourio
:inicio
Copy %0 %homedrive%\Users\%username%\AppData\Roaming\Microsoft\Windows\SendTo\

cls
del /q Cazador.txt>nul
cls
DEL /Q encontrado.txt
del /q 1.txt
del /q Procesos.txt
DEL /Q "Eliminado.txt", "size.txt", "1.txt" , "Ext.txt" , "Dir.txt"
cls
mode con cols=55
mode con lines=10
color 1F

:n
cls
@echo off
Echo.
Echo.
echo         Programador Tecnico Computarizado
echo                        BY
echo                *****Rafael Ch*****
Echo.
Echo.
Echo.
echo %1>>1.txt
cls
Echo.
Echo.
Echo.
Echo. Presione Enter para Borrar Virus y Crear Carpeta.
Echo.
Echo.
Set /p PTH=%1
attrib -h -s -r -a -i %1
cls
set /p a= <1.txt
Echo.
echo.
cls
Echo.
Echo.
cls

echo.
echo.
for %%i in (e f g h i j k l m n o p q r s t u v w x y z) do (
  dir /b %%i:\ > nul 2>&1 && (

echo.
echo Unidades Presente: %%i:\
echo.
dir /b /a:h %%i:\
CLS
attrib -h -S -R -A %%i:\*.pif
attrib -h -S -R -A %%i:\*.exe
attrib -h -S -R -A %%i:\autorun.inf
))


:a1
attrib -h -s -r -a -i %a%
CLS
Echo.                                         | MORE
echo         Programador Tecnico Computarizado
echo                        BY
echo                *****Rafael Ch*****       |MORE |MORE
set /A "contador=0"
for /f "tokens=*" %%d in ('dir /b /s %a% 2^>^&1^|FIND /I "."') do (echo %%~xd>Ext.txt | MORE & echo %%~zd>size.txt)
echo.
echo.
echo Enter para Eliminar EJECUTABLE por Tamaño en todo el sistema.
echo.
pause>nul
echo.
cls
echo.
for /F "tokens=*" %%s in (size.txt) do (
echo %%s
for /F "tokens=*" %%p in (Ext.txt) do (
echo %%p
cls
echo.
echo Espere Por Favor......
echo.
echo Extension: "%%p"
echo Tamaño:    "%%s"
echo.
set /a contador=0
for /r o:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r n:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r m:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r l:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r k:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r j:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r i:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r h:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r g:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r f:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r e:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r d:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r c:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
)
)
cls
echo.
echo.
echo Enter para Continuar | MORE
pause>nul
DEL /Q "Eliminado.txt", "size.txt", "1.txt" , "Ext.txt"
exit




Mod: los códigos deben ir en etiquetas GeSHi

Eleкtro

Batch no es un lenguaje compilado así que para "convertir" a executable necesitas un packer, y para establecer o modificar el icono principal puedes utilizar cualquier editor de recursos cómo Resource Hacker (en caso de que el packer no tenga esta característica, claro está).

No es necesario ser experto en el lenguaje, basta con saber un poco de empaquetamiento de aplicaciones (application packaging) y administración de tablas de recursos, aunque si te quedas más tranquilo te puedo decir que tengo Batch muy exprimido desde hace una década o más.

Te recomiendo utilizar la aplicación ExeScript Editor
http://www.scriptcode.com/download/

Si te lanza algún fallo, especifica el mensaje de error y la información adicional (si alguna), recuerda que no somos magos.

Saludos!








raftv79

Elektro, Gracias por la Asesoría, a veces parece tontas, pero son importante saberla, ya me pongo con eso, después de hacerle prueba yo te aviso.

con respecto al code; como lo ves tu; que le hace falta o tienes un as bajo la manga, tienes Batch mejor que este?.

otra cosa mas Elektro, yo tuve un programa hace tiempo y lo perdí, ahora no recuerdo como se llama ni lo consigo, es que yo podría saber que programa estaba utilizando dicho archivo, me mostraba hasta la librería que estaba en ejecución para el dicho archivo.

si no es mucho que pedir..... esas son mis inquietudes....... 

raftv79

De verdad nadie, ningún visitante va aportar de sus conocimientos en este tema?....


Eleкtro

Cita de: raftv79 en 18 Abril 2015, 14:56 PMcon respecto al code; como lo ves tu

Genericamente hablando y siendo un Batch-Script, el código lo veo de la única manera que lo puedo ver, es decir, simplón, feo, tedioso e ineficiente, pero el empeño que le hayas puesto para desarrollar el código tiene un valor distinto (mayor que el propio código en si mismo).




Cita de: raftv79 en 18 Abril 2015, 14:56 PMque le hace falta

1. Organización del código fuente.
El código que has publicado carece de cualquier tipo de estructura, ni organización ni indentación, para ser sincero es horrible analizar el código ya que lo tienes todo muy lineal y "arreu" ...aunque de todas formas las limitaciones de este "lenguaje" apenas dan libertad para estructurar el código debídamente, pero podrías haberlo hecho mucho mejor.

Se que es poco código, pero personálmente soy bastante estricto en ese sentido, no t elo tomes a mal, aparte, tener 3 o 4 bloques de código con nombres tipo "a1", "n", "n1", y que repitan código... también es horrible verlo, y eso sucede por que con Batch no se aprende nada que sea reálmente útil, nada.

Por ejemplo, esto lo repites en dos bloques:
Citar
:n
cls
@echo off
Echo.
Echo.
echo         Programador Tecnico Computarizado
echo                        BY
echo                *****Rafael Ch*****
Echo.
Echo.
Echo.
echo %1>>1.txt

En lugar de eso, escribe un método rehusable cómo este:

:WriteHeader :: %1 = Descripción del argumento %1; %2 = Archivo de destino
(
CLS
Echo+
Echo+
Echo:        Programador Tecnico Computarizado
Echo:                       BY
Echo:               *****Rafael Ch*****
Echo+
Echo+
Echo+
Echo "%~1"
)>>"%~2"
Goto :EOF


Y entonces lo usas:
:n
Call :WriteHeader "%~1" "Archivo.txt"
...


2. Limpieza de código en deshuso.

La variable "PTH" no la utilizas en ninguna parte del código, además de eso repites el código en otros bloques:
CitarSet /p PTH=%1

y además lo estás seteando incorréctamente ya que la variable de argumento %1 contiene comillas dobles, así que en todo caso deberías hacerlo así para poder usar luego dicha variable de forma correcta:
Set /P "PTH=%~1"

Nota: No me he fijado si en el resto del código hay otros comandos en deshuso.

3. Cierre de argumentos.
Cómo norma general los argumentos se delimitan al encontrar un espacio, y hay que encerrarlos con comillas dobles,
por ende, esto no te funcionará en ningún PC cuyo nombre de usuario contenga espacios:
CitarCopy %0 %homedrive%\Users\%username%\AppData\Roaming\Microsoft\Windows\SendTo\

Además de eso, también deberías expandir la variable de argumento para eliminarle las comillas dobles y añasírselas tú:
"%~0"

4. Depurar el código, y utilizar los operadores correctos (de agrupación y redireccionamiento)

Esto es otra de las cosas más horribles que se pueden hacer en Batch, la siguiente linea de código tiene muchos fallos en uno,
la concatenación single-line de tantos comandos y la confusión que eso crea al leerlo,
la ausencia de los operadores de agrupación ( ) crea conflictos y posibles errores de sintaxis al determinar donde se delimita la concatenación de comandos,
utilizar la pipe de redireccionamiento cuando seguramente no es tu intención (ya que el comando attrib no tiene una entrada de datos),
evaluar un string sin encerrarlo con comillas (si uno de los dos strings estuviese vacio o con espacios en el nombre daría error de sintaxis):

Citarfor /r X:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"

Puedes hacerlo así:
For /R "X:\" %%i in ("*%%p") Do (
If "%%~zi" EQU "%%s" (
Del /f /q /s /a "%%i" &&^
Md "%%i" ||^
Attrib +h +s +r +a +i "%%i"
)
)


O bien en una sola linea:
For /R "o:\" %%i in ("*%%p") Do ( If "%%~zi" EQU "%%s" ( (del /f /q /s /a "%%i" && md "%%i" || attrib +h +s +r +a +i "%%i") ) )

5. Simplificación de código.

Debes tratar de evitar hacer cosas cómo esta repetición de código:

Citarfor /r o:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r n:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r m:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r l:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r k:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r j:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r i:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r h:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r g:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r f:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r e:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r d:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"
for /r c:\ %%i in (*%%p) do If %%~zi EQU %%s del /f /q /s /a "%%i" && md "%%i" | attrib +h +s +r +a +i "%%i"

Sírvete de la utilidad de FOR para algo más util, cómo esto:
Set "DriveLetters=C D E F G H I J K L M N O"

For %%# in (%DriveLetters%) Do (
For /R "%%#:\" %%i in ("*%%p") Do (...)
)


Nota: Aunque realmente lo que deberías hacer para aumentar la eficiencia es obtener e iterar una lista de unidades de disco duro conectadas al PC, con el comando FSUTIL o WMIC:
http://foro.elhacker.net/scripting/sobre_archivos_bat-t402932.0.html;msg1899628#msg1899628




Puede que haya otras cosas más a destacar en el código cómo por ejemplo la funcionalidad principal del código... no es la más correcta, pero sinceramente no me apetece analizar más de lo necesario un código escrito en Batch y menos de una "vacuna", batch no sirve para eso y creo que con lo dicho es suficiente para que puedas mejorar algunos aspectos fundamentales tanto en el uso de batch-script como en la programación general.

Mi último consejo es que lleves a cabo tus proyectos de programación en cualquier otro lenguaje compilado o de scripting que esté capacitado para la tarea, menos Batch.

Espero que el pequeño análisis haya servido de algo.

Saludos!








Eleкtro

Cita de: raftv79 en 18 Abril 2015, 14:56 PMyo tuve un programa hace tiempo y lo perdí, ahora no recuerdo como se llama ni lo consigo, es que yo podría saber que programa estaba utilizando dicho archivo, me mostraba hasta la librería que estaba en ejecución para el dicho archivo.

¿A que archivo te refieres?, por "archivo" entiendo que te refieres a un archivo ejecutable (puesto que hablas de cargar librerías/módulos).

Si lo que quieres es averiguar las dependencias de una aplicación de forma genérica puedes utilizar la herramienta Dependency Walker .

Saludos