![]() |
|
#1
|
||||
|
||||
|
I’d like to share a small open-source project I’ve been working on: PS2VM.
PS2VM is a tool that compiles a subset of Windows PowerShell 5.x scripts into a compact bytecode format (.pbc) and runs them on a simple stack-based virtual machine. The goal is not to replace PowerShell, but to explore an alternate execution path: AST → opcodes → VM, with fallback to the real PowerShell engine on the same runspace when a construct isn’t implemented natively. What it can do Compile .ps1 → .pbc Run bytecode inside the VM Disassemble .pbc for inspection Handle common language features (functions, loops, if/switch, arrays, pipelines in a limited form, cmdlet calls, scoped variables, etc.) Delegate complex features (try/catch, modules, advanced attributes, redirections, and more) to the host PowerShell engine so scripts don’t simply break What it is not A full reimplementation of the PowerShell runtime A guarantee of 100% language coverage A tool intended for malware, evasion, or unauthorized use It’s aimed at people interested in compilers, interpreters, PowerShell internals, automation research, and experimentation with custom execution engines — for legitimate and authorized use only. Feedback, issues, and constructive criticism are welcome. Thanks for reading. Github Repo : https://github.com/NIKJOO/PS2VM |
| The Following 2 Users Gave Reputation+1 to Gladiyator For This Useful Post: | ||
blue_devil (09-30-2026), Kurapica (10-02-2026) | ||
| The Following 7 Users Say Thank You to Gladiyator For This Useful Post: | ||
blue_devil (09-30-2026), chants (10-02-2026), Kurapica (09-29-2026), MarcElBichon (09-29-2026), niculaita (09-30-2026), SofTw0rm (10-02-2026), tonyweb (10-03-2026) | ||
|
#2
|
||||
|
||||
|
Cool project, have you considered the various performance implications of custom byte code, some of these or most are pass through optimizations. But check this out "Loops that have fewer than 300 instructions are eligible for JIT-compilation. Loops larger than that are too costly to compile. When the loop has executed 16 times, the script is JIT-compiled in the background. When the JIT-compilation completes, execution is transferred to the compiled code."
Quote:
I like the logo too BTW. |
![]() |
| Tags |
| obfuscation, obfuscator, powershell, virtualization |
|
|