Запуск скриптов PowerShell с Python в течение одного сеанса - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь создать программу на python, которая будет деобфусцировать вредоносное ПО PowerShell, использующее IEX.Моя программа на Python на самом деле перехватывает функцию IEX и вместо запуска нужной строки она печатает строку.Теперь моя проблема в том, что у меня есть несколько скриптов .ps1 (для примеров 1.ps1, 2.ps1 и т. Д.), И я хочу запустить их все в одном сеансе, чтобы все локальные переменные, созданные 1Скрипт .ps1, скрипт 2.ps1 сможет использовать ...

Теперь я попробовал так много способов. Сначала я пытался использовать подпроцесс, но он всегда создает новый сеанс при каждом вводе команды (это путь к файлу .ps1).Затем я нашел этот проект на GitHub: https://gist.github.com/MarkBaggett/a7c10195b2626c78009bf73bcdb6db20, который действительно потрясающий и сработал, но, тем не менее, кажется, что когда я запускаю команду ./1.ps1, он все равно не сохраняет локальные переменные в сеансе (может быть,открывает новый при запуске скрипта).Я попытался сделать также «Get-Content 1.ps1 | iex», но затем он вылетает, поскольку у меня есть функции, например:

function Invoke-Expression()
{
    param(
        [Parameter( `
            Mandatory=$True, `
            Valuefrompipeline = $True)]
        [String]$Command
    )
    Write-Host $Command
}

, взятые из проекта PSDecode: https://github.com/R3MRUM/PSDecode/blob/master/PSDecode.psm1#L28

В любом случае, есть идеи о том, как я могу это сделать?У меня есть эти сценарии на рабочем столе, но я не знаю, как их запускать в одном сеансе, чтобы они использовали одни и те же локальные переменные ...

Две вещи, которые я сделал, но они действительно отстойные: 1. Конвертировать всесценариев до 1 сценария и запустите его, но при следующем запуске я буду использовать эту программу, у меня может быть 100 или более сценариев, и я действительно не хочу этого делать.2. Я могу сохранить локальные переменные из каждого сценария и загрузить его в другой, но я хочу использовать его в худшем случае и до сих пор не получил.

Большое спасибо за помощь и извинитедля моей грамматики мой английский не мой родной язык, как вы можете видеть:)

1 Ответ

0 голосов
/ 14 июня 2019

Может быть, вы ищете точечный источник :

Запускает сценарий в текущей области, так что любые функции, псевдонимы и переменные, которые создает сценарий, добавляются в текущую область. PowerShell

. C: \ Scripts \ sample.ps1

Если это так, поставьте ваши файлы ps1 на точку и вызовите функции внутри них.

Надеюсь, это поможет.

...