Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PowerShellArsenal — Модуль PowerShell, посвящённый реверс-инжинирингу | Kitploit
Инструменты/GitHubGitHub/mattifestation/powershellarsenal
Статический анализДинамический анализ (песочница)Инструменты шифрования/дешифрованияКриминалистика памятиОбратная инженерияОтладчикиФорензикаАнализ вредоносных программАнализ Бинарных Файлов
GitHubmattifestation/powershellarsenal

PowerShellArsenal

Модуль PowerShell, посвящённый реверс-инжинирингу

9002055 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

PowerShellArsenal — это модуль PowerShell, используемый для помощи реверс-инженеру. Модуль может использоваться для дизассемблирования управляемого и неуправляемого кода, проведения анализа .NET-вредоносного ПО, анализа/сканирования памяти, разбора форматов файлов и структур памяти, получения внутренней системной информации и т.д. PowerShellArsenal состоит из следующих инструментов:

Дизассемблирование

Дизассемблирование нативного и управляемого кода.

Get-CSDisassembly

Дизассемблирует массив байтов с помощью фреймворка дизассемблирования Capstone Engine.

Get-ILDisassembly

Дизассемблирует необработанный массив байтов MSIL, полученный из объекта MethodInfo, аналогично Ildasm.

Анализ вредоносного ПО

Полезные инструменты при анализе вредоносного ПО.

New-FunctionDelegate

Предоставляет исполняемую обёртку для функции X86 или X86_64.

Invoke-LoadLibrary

Загружает DLL в текущий процесс PowerShell.

New-DllExportFunction

Создаёт делегат-обёртку для экспортируемой неуправляемой функции.

Get-HostsFile

Разбирает файл HOSTS.

New-HostsFileEntry

Заменяет или добавляет запись в файл HOSTS.

Remove-HostsFileEntry

Удаляет запись или серию записей из файла HOSTS.

Get-AssemblyStrings

Выводит все строки из .NET-исполняемого файла.

Get-AssemblyResources

Извлекает управляемые ресурсы из .NET-сборки.

Remove-AssemblySuppressIldasmAttribute

Удаляет атрибут SuppressIldasmAttribute из .NET-сборки.

Get-AssemblyImplementedMethods

Возвращает все методы в сборке, реализованные в MSIL.

Инструменты для работы с памятью

Просмотр и анализ памяти процессов.

Get-ProcessStrings

Выводит все печатаемые строки из пользовательской памяти процесса.

Get-VirtualMemoryInfo

Обёртка для kernel32!VirtualQueryEx.

Get-ProcessMemoryInfo

Получает информацию о виртуальной памяти для каждого уникального набора страниц в пользовательской памяти. Эта функция аналогична команде !vadump в WinDbg.

Get-StructFromMemory

Маршалирует данные из неуправляемого блока памяти в произвольном процессе в управляемый объект указанного типа.

Парсеры

Разбор форматов файлов и структур в памяти.

Get-PE

Парсер PE-файлов на диске и в памяти, а также дампер процессов.

Find-ProcessPEs

Находит переносимые исполняемые файлы в памяти независимо от того, были ли они загружены легитимным способом.

Get-LibSymbols

Отображает символьную информацию из LIB-файлов Windows.

Get-ObjDump

Отображает информацию о объектных (OBJ) файлах Windows.

Внутреннее устройство Windows

Получение и анализ низкоуровневой информации об ОС Windows.

Get-NtSystemInformation

Утилита, вызывающая и анализирующая вывод функции ntdll!NtQuerySystemInformation. Эта утилита может использоваться для запроса внутренней информации ОС, которая обычно не видна пользователю.

Get-PEB

Возвращает блок окружения процесса (PEB) процесса.

Register-ProcessModuleTrace

Запускает трассировку загруженных модулей процесса.

Get-ProcessModuleTrace

Отображает модули процесса, загруженные с момента вызова Register-ProcessModuleTrace.

Unregister-ProcessModuleTrace

Останавливает выполняющуюся трассировку модулей процесса.

Get-SystemInfo

Обёртка для kernel32!GetSystemInfo.

Разное

Различные вспомогательные функции.

Get-Member

Прокси-функция для расширения встроенного командлета Get-Member. Добавляет параметр '-Private', позволяющий отображать непубличные члены .NET.

Get-Strings

Извлекает строки из файлов в кодировках Unicode и ASCII. Этот командлет повторяет функциональность strings.exe из Sysinternals.

ConvertTo-String

Преобразует байты файла в строку с взаимно однозначным отображением обратно в исходные байты. ConvertTo-String полезен для выполнения бинарных регулярных выражений.

Get-Entropy

Вычисляет энтропию файла или массива байтов.

Библиотеки

Библиотеки, необходимые для некоторых функций реверс-инжиниринга.

Capstone

Привязка C# к фреймворку дизассемблирования Capstone.

De4dot

Мощная библиотека для деобфускации .NET и разбора .NET PE.

PSReflect

Модуль для простого определения перечислений, структур и функций Win32 в памяти.

Formatters

Файлы ps1xml, используемые для форматирования вывода различных функций PowerShellArsenal.

Лицензия

Модуль PowerShellArsenal и все отдельные скрипты распространяются по лицензии BSD 3-Clause, если явно не указано иное.

Использование

Подробную информацию об использовании см. в комментариях-справке в каждом отдельном скрипте.

Чтобы установить этот модуль, поместите всю папку PowerShellArsenal в один из каталогов модулей. Пути к модулям PowerShell по умолчанию указаны в переменной среды $Env:PSModulePath.

Путь к модулю для текущего пользователя по умолчанию: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" Путь к модулю на уровне компьютера по умолчанию: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules"

Чтобы использовать модуль, введите Import-Module PowerShellArsenal

Чтобы увидеть импортированные команды, введите Get-Command -Module PowerShellArsenal

Если вы используете PowerShell v3 и хотите отключить назойливое предупреждение «Вы действительно хотите запускать скрипты, загруженные из Интернета?», после того как вы поместили PowerShellArsenal в путь к модулям, выполните следующий однострочник: $Env:PSModulePath.Split(';') | % { if ( Test-Path (Join-Path $_ PowerShellArsenal) ) {Get-ChildItem $_ -Recurse | Unblock-File} }

Для справки по каждой отдельной команде используйте Get-Help.

Примечание: все инструменты в этом модуле спроектированы так, чтобы их можно было запускать по отдельности. Включение их в модуль просто повышает переносимость.

Руководство по стилю скриптов

Для всех участников и будущих участников PowerShellArsenal: прошу вас следовать этому руководству при написании скриптов/модулей.

  • Избегайте использования Write-Host любой ценой. Функции/командлеты PowerShell — это не утилиты командной строки! Запросы на включение кода, использующего Write-Host, рассматриваться не будут. Вместо этого следует выводить пользовательские объекты. Дополнительную информацию о создании пользовательских объектов можно найти в этих статьях:

    • http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/19/create-custom-objects-in-your-powershell-script.aspx
    • http://technet.microsoft.com/en-us/library/ff730946.aspx
  • Если вы хотите отобразить на экране соответствующую отладочную информацию, используйте Write-Verbose. Пользователь всегда может добавить '-Verbose'.

  • Всегда предоставляйте описательную комментарий-справку для каждого скрипта. Также обязательно укажите своё имя и лицензию BSD 3-Clause (если нет исключительных обстоятельств, препятствующих применению лицензии BSD).

  • Убедитесь, что все функции следуют правильному соглашению «глагол-существительное» в PowerShell. Используйте Get-Verb для вывода списка глаголов по умолчанию. Исключения из поддерживаемых глаголов будут рассматриваться индивидуально.

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

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

  • Если вы замечаете, что повторяете код, напишите функцию.

  • Перехватывайте все ожидаемые ошибки и выдавайте осмысленный вывод. Если ошибка должна остановить выполнение скрипта, используйте 'Throw'. Если ошибка не требует остановки выполнения, используйте Write-Error.

  • Если вы пишете скрипт, который взаимодействует с Win32 API, старайтесь избегать компиляции C# встроенными средствами с помощью Add-Type. По возможности используйте модуль PSReflect.

  • Не используйте жёстко заданные пути. Скрипт должен быть работоспособным «из коробки». Никто не должен изменять код, если только он сам этого не хочет.

  • Высоко желательна совместимость с PowerShell v2.

  • Используйте позиционные параметры и делайте параметры обязательными, когда это имеет смысл. Например, я ожидаю нечто подобное:

    • [Parameter(Position = 0, Mandatory = $True)]
Скачать инструмент
  • Не используйте псевдонимы, если только это не имеет смысла для получения входных данных из конвейера. Они делают код более сложным для чтения тем, кто не знаком с конкретным псевдонимом.

  • Старайтесь не делать команды слишком длинными. Например, конвейер — естественное место для разрыва строки.

  • Не злоупотребляйте встроенными комментариями. Используйте их только тогда, когда некоторые аспекты кода могут быть непонятны читателю.

  • Вместо использования Out-Null для подавления нежелательного/нерелевантного вывода сохраняйте его в $null. Это даёт небольшой прирост производительности.

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

  • Явно указывайте все обязательные и необязательные зависимости в комментарий-справке вашей функции. Все зависимости библиотек должны находиться в папке 'Lib'.

  • Если скрипт создаёт сложные пользовательские объекты, включите файл ps1xml, который правильно отформатирует вывод объекта. Файлы ps1xml хранятся в папке Lib\Formatters.