Полезные скрипты CMD/BAT | SafeZone

Как скрыть исполнение bat-файла ?

Как скрыть исполнение bat-файла или невидимая команда cmd.

батникВсем привет, это очередной набор пакостей от Компьютер76, и сейчас я вам покажу, как скрыть исполнение bat-файла от глаз пользователя. На сайте собрано много статей о том, как провернуть тот или иной трюк с помощью консоли команд. Но проблема для нас с вами заключается в том, на протяжении исполнения кода консоль будет видна пользователю и причина всех бед может быть раскрыта. Так что давайте попробуем скрыть исполнение bat-файла, то есть скроем процесс исполнения команды или кода от глаз жертвы. Никаких дополнительных программ  нам не понадобиться. Для этого мы будем использовать известный нам скриптовый язык Windows, для того, чтобы код исполнялся фоном. Но для начала создайте свой вирус.bat программой Блокнот. Что будет содержать вирус, я не знаю.

Но вот как выглядит код, который будет наш вирус скрывать:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("местоположение-вашего-вируса.bat"), 0, True

Где

местоположение-вашего-вируса.bat – имя вашего файла и полный к нему путь, который вы спрячете в диск С. Если файл с приколом скрывается под именем «вирус.bat», то скрипт будет выглядеть как:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("C:вирус.bat"), 0, True

Путь C:вирус.bat будет выглядеть в зависимости от того, куда свой прикол вы решили спрятать. Рекомендую путь не менять, и оптимальным местом для запуска пакостей считаю именно корневую папку локального диска С.

После того, как batch-файл помещён в корневую папку, о нём можно забыть.

Теперь необходимо создать и сохранить вышенаписанную команду скрипта под любым неприглядным названием с расширением.vbs. Я порекомендовал назвать её именем типа Windows.vbs и положить в папку Автозапуска. После запуска этого скрипта искомая команды с приколом будет проходить незаметно для пользователя. Однако её выполнение найдёт отражение в Диспетчере задач соответствующим процессом.

НО

Как вы понимаете, у трюка две стороны. Если пакость основывается на появлении одного или множества окон самой консоли, то смысла скрывать эти окна нет. Другое дело, если…

:/>  Редактирование BOOT.INI

Вы намеренно пытаетесь запустить на своём или чужом компьютере программу и не хотите, чтобы консоль с командой отсвечивала на Рабочем столе. Как видите, с помощью нехитрых приёмов можно скрыть исполнение bat-файла , чтобы ваш процесс протекал незаметно.

Успехов

Полезные скрипты cmd/bat

Рекурсивный DIR /X

Используется для получения имени файла/папки в формате 8.3,
если другими способами не получается удалить/переименовать объект.

Выводит отчет в форматах Plain Text (DirX.txt) и CSV (DirX.csv) рекурсивно для текущего и всех подкаталогов,
начиная с места, откуда батник сам запущен.

Если отчет не был создан, запустите батник правым кликом “От имени Администратора”.

Помните: некоторые объекты с некорректным именем можно удалить/переименовать,
добавив к полному имени файла! префикс \?
например:

Этот способ отключает некоторые ограничения на операции с файловой системой.

Ссылки по теме:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
http://msconfig.ru/threads/flystudi…obrazit-propavshee-soderzhimoe-fleshki.12352/
http://msconfig.ru/threads/vosstanovlenie-dostupa-k-papkam-fajlam-so-specsimvolami-v-imeni.21291/


>>>Посмотреть вложение DirX2.zip<<<

В дополнение:

Исправление проблемы, когда не работает вывод коротких имен файлов Dir /X
Источник: techguy.org

Режим представления коротких имен файлов может быть отключен.
Тогда Вам не удастся получить имя в формате 8.3 командой DIR /X

Проверить это можно, введя команду:

Чтобы снова

включить

этот режим, введите:

1) для XP:

2) для Vista и выше:

Напомню, что данный режим отображает альтернативные имена в формате 8.3 и будет удобен,

когда требуется работать с именами файлов и папок, имеющих:

Для автоматической подстановки и парсинга имен в формате 8.3. можно воспользоваться такой циклической конструкцией:

Здесь я (

имя пользователя:Alex

) перечисляю у себя на рабочем столе (

папкаDesktop

) все файлы (

*

).

Вместо команды

echo

можно подставить любую другую, взаимодействующую с файлом формата 8.3.

Учитывайте, что эта команда выводит в конце 2 лишних строки.

Скрипты для cmd

Известная, но слабоосвещенная тема – обработка в коммандном интерпретаторе CMD данных со спецсимволами.
В большинстве ситуаций она вполне решаема…
Плюс к этому периодически возникают задачи вывода в файл без перевода строки.
Несколько лет назад (на ру-борде) я выкладывал семпловый код, который достаточно подробно иллюстрирует примеры возможной работы:

:/>  Автоматизированный Logoff всех пользователей с терминального сервера » backnet – ответы на простые вопросы и не очень

Кодировка приведенного скрипта CP866.
Для ознакомления рекомендуется выполнить 😉
Само-собой в случае вопросов постараюсь ответить…

Скрыть окно командной строки при использовании exec()

вы всегда будете получать вспышку окна с Exec(). Вы можете использовать выполнить команду в скрытом окне. Но вы не можете напрямую захватить выходные данные команды с помощью Run(). Вам нужно будет перенаправить вывод во временный файл, который ваш VBScript затем может открыть, прочитать и удалить.

например:

With CreateObject("WScript.Shell")

    ' Pass 0 as the second parameter to hide the window...
    .Run "cmd /c tasklist.exe > c:out.txt", 0, True

End With

' Read the output and remove the file when done...
Dim strOutput
With CreateObject("Scripting.FileSystemObject")

    strOutput = .OpenTextFile("c:out.txt").ReadAll()
    .DeleteFile "c:out.txt"

End With

на FileSystemObject класс имеет методы, такие как GetSpecialFolder() чтобы получить путь к папке Windows temp и GetTempName() чтобы создать временное имя файла, которое вы можете использовать вместо жесткого кодирования выходного имени файла, как я сделал выше.

также обратите внимание, что вы можете использовать с tasklist.exe чтобы создать CSV-файл, который должен сделать его разбор намного проще.

наконец, are VBScript “native” способы получения списка запущенных процессов. В WMI это Win32_Process класс, например, может сделать это без необходимости Run/Exec.


редактировать:

для полноты, я должен упомянуть, что ваш сценарий can перезапустить себя в скрытом окне консоли, где вы можете запустить Exec() молча. К сожалению, это скрытое окно консоли также скроет ваш вывод из таких функций, как WScript.Echo(). Помимо этого, однако, вы, вероятно, не заметите никаких различий в работе вашего скрипта под cscript vs wscript. Вот пример этого метод:

' If running under wscript.exe, relaunch under cscript.exe in a hidden window...
If InStr(1, WScript.FullName, "wscript.exe", vbTextCompare) > 0 Then
    With CreateObject("WScript.Shell")
        WScript.Quit .Run("cscript.exe """ & WScript.ScriptFullName & """", 0, True)
    End With
End If

' "Real" start of script. We can run Exec() hidden now...
Dim strOutput
strOutput = CreateObject("WScript.Shell").Exec("tasklist.exe").StdOut.ReadAll()

' Need to use MsgBox() since WScript.Echo() is sent to hidden console window...
MsgBox strOutput  

конечно, если ваш скрипт ожидает параметры командной строки, они также должны быть перенаправлены при перезапуске вашего скрипта.

:/>  Не работает кнопка «Пуск» в операционной системе Windows 10: способы решения проблемы » Как установить Windows 10

Изменить 2:

еще одна возможность – использовать буфер обмена Windows. Вы можете передать вывод своей команды в clip.exe утилиты. Затем извлеките текст с помощью любого количества доступных COM-объектов, которые могут получить доступ к содержимому буфера обмена. Для пример:

' Using a hidden window, pipe the output of the command to the CLIP.EXE utility...
CreateObject("WScript.Shell").Run "cmd /c tasklist.exe | clip", 0, True

' Now read the clipboard text...
Dim strOutput
strOutput = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")

Способ второй

Для скрытия окна мы воспользуемся Windows API, точнее функцией ShowWindowAsynс. Первой командой сохраняем сигнатуру C# функции ShowWindowAsync в переменную. Затем с помощью командлета Add-Type добавляем функцию в сеанс в виде статического метода класса.

Полученному методу ShowWindowAsync передаем в виде параметров дескриптор окна и цифровое значение, указывающее как должно отображаться окно. Для получения текущего процесса PowerShell используется конструкция  Get-Process -Id $pid, дескриптор окна получаем из его свойства MainWindowHandle. В качестве цифрового значения указываем 0 (SW_HIDE), чтобы скрыть окно:

Способ первый

Начиная со второй версии PowerShell при запуске можно использовать параметр -WindowStyle  со значением Hidden. Это позволяет осуществить запуск в скрытом режиме, без открытия консоли. Предположим, что у меня в папке C:Temp лежит скрипт hello.ps1, который надо ″по тихому″ выполнить при входе пользователя. Для этого используем следующую команду:

powershell.exe -nologo -noninteractive -windowStyle hidden -command ″C:Temphello.ps1″

Теоретически скрипт должен выполниться в фоне, незаметно для пользователя. Но на практике этот способ работает не всегда, в некоторых случаях во время выполнения скрипта окно PowerShell остается открытым. Поэтому, на всякий случай, рассмотрим еще пару способов запустить PowerShell в скрытом режиме.

Способ третий

Скрыть запуск PowerShell можно, как ни странно, с помощью VBScript. Для этого создаем vbs-файл следующего содержания:

Оставьте комментарий

Adblock
detector