SlopScore
10 crowdincl. 1 critic

vid-linux

linux port of vid
Open repo on GitHub Open the demogithub.com/dest4590/vid-linux
Rust · ★ 1 · 0 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 1 day ago by dest4590 · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-09-25: linux port of vid; its own README says "vid-linux !NOTE The Linux side of this project was entirely AI-generated". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as dest4590. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
linux port of vid
website
https://github.com/colby57/vid
created
2026-08-21 · pushed 1 month ago · 2 commits · 1 contributor
languages
Rust 100%CMake 0%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 1 day ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
cmakerust
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: linux port of vid; its own README says "vid-linux !NOTE The Linux side of this project was entirely AI-generated". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

vid-linux

Note

The Linux side of this project was entirely AI-generated. It was built to get a single working executable out the door, so think of it more like a proof-of-concept than a polished tool. There may be rough edges, untested edge cases, or unexpected behavior. If you run into something off, feel free to open an issue or drop in a fix!

vid-linux reconstructs VMProtect-obfuscated PE imports from a live Windows process running under Wine on Linux, and writes a readable, loadable PE image with a new import table.

This is a Linux port of vid (originally VMP-Imports-Deobfuscator). Instead of using Win32 APIs, it reads process memory directly through /proc/pid/mem and enumerates modules via /proc/pid/maps, making it useful where Wine's internal ReadProcessMemory fails with ACCESS_DENIED.

The tool is intentionally narrow: it repairs imports and the instructions that reference them. It is not a generic unpacker and does not devirtualize protected application logic.

Build

From the repository root:

rustup show
cargo build --release
./target/release/vid-linux --help

The resulting executable is written to target/release/vid-linux.

Cross-compilation from Linux to Windows

rustup target add x86_64-pc-windows-msvc
cargo build --release --target x86_64-pc-windows-msvc

Quick start

Start or attach to the protected program under Wine and let VMProtect finish initializing its protected imports. Then inspect the available sections:

./target/release/vid-linux --pid 10856 --list-sections

If one to three executable sections have entropy above 7.0, vid-linux can select them automatically:

./target/release/vid-linux --pid 10856 --new-entry-rva 0x1000

For sample.exe, the default output name is sample.vid-linux.exe. --new-entry-rva changes AddressOfEntryPoint in the rebuilt file only; it does not resume or otherwise change the live process.

Command-line reference

vid-linux --pid <PID> [OPTIONS]
Option Description
--pid <PID> Required non-zero target process ID.
--module <NAME> Inspect a loaded module instead of the main executable. Matching is case-insensitive and accepts a file name, extensionless name, or path.
--vm-sections <SECTION>... Select one to three executable VM sections using either 1-based numbers or names. Names and numbers cannot be mixed.
--list-sections Print section numbers, names, RVAs, sizes, permissions, characteristics, and entropy, then exit.
--section-name <NAME> Name of the rebuilt import section. Default: .vid. Must be 1–8 printable ASCII bytes.
--output <PATH> Explicit output path. Missing parent directories are created automatically. The inspected module cannot be overwritten.
--new-entry-rva <RVA> New output entry RVA in decimal or 0x-prefixed hexadecimal. It must point into an executable section.
-h, --help Show command help.
-V, --version Show the version.

--list-sections can be combined with --module, but conflicts with options that modify the output.

Examples

Select VM sections by number

./target/release/vid-linux \
    --pid 10856 \
    --vm-sections 4 6 \
    --new-entry-rva 0x1000 \
    --output ./dump/sample.rebuilt.exe

Select VM sections by name

Quote names that contain shell metacharacters:

./target/release/vid-linux \
    --pid 10856 \
    --vm-sections '._*f' '.]zF' \
    --section-name .vidiat \
    --new-entry-rva 4096

Rebuild a DLL loaded in another process

./target/release/vid-linux \
    --pid 10856 \
    --module protected-plugin.dll \
    --vm-sections .vmp0 .vmp1 \
    --output ./dump/protected-plugin.rebuilt.dll

What gets repaired

Protected behavior Rebuilt form
VM stub ultimately calls an import and returns call [IAT]
VM stub removes the caller return and transfers permanently jmp [IAT]
VM stub returns an imported address in a register mov reg, [IAT]
Existing x86 absolute IAT operand Same instruction with the rebuilt absolute IAT address
Existing x64 RIP-relative IAT operand Same instruction with a new RIP-relative displacement
Random protected bytes after a rewritten transfer Explicit jump to the proven continuation; unreachable residue is left untouched

Before and after

This screenshot was captured from IDA Pro 9.3 using a real x64 MASM executable with PDB information. The executable was processed by VMProtect Ultimate 3.9.4 build 2285 with Import Protection enabled, recovered from its running process by vid, and launched successfully after rebuilding.

Absolute image bases differ because the protected process was captured after ASLR. In both halves, the functions remain at the same RVAs beginning at 0x1017.

The upper half shows the protected calls, including generated stack operations and residue. The lower half shows the corresponding direct RIP-relative IAT calls while preserving each function's continuation:

x64 VMProtect imports before and after vid recovery

Architecture

graph LR
    A[Process Memory
/proc/pid/mem] --> B[Module Discovery
/proc/pid/maps]
    B --> C[PE Parsing
Sections & Imports]
    C --> D[Transfer Detection
VM stub analysis]
    D --> E[Unicorn Emulation
Import resolution]
    E --> F[Import Reconstruction
IAT rebuild]
    F --> G[Output PE
Rebuilt binary]
Loading

The Linux-specific implementation in process.rs replaces Win32 APIs (OpenProcess, ReadProcessMemory, CreateToolhelp32Snapshot) with:

  • /proc/pid/mem for direct process memory reads
  • /proc/pid/maps for module enumeration and architecture detection

Troubleshooting

VM recovery is partial

[warn] Partial VM recovery | rewritten 2233 of 2332 | left unchanged 99 | unresolved destinations 1
[warn] Direct VM rewrites | applied 2232 of 2233 | left unchanged 1
[warn] Conventional rewrites | applied 133 of 134 | covered by protected rewrites 1

The first warning means emulation could not prove the import or continuation for every protected transfer. The second means an import was identified, but its direct IAT instruction could not fit safely at the original location or reproduce the observed stack effect. The third reports conventional references that occupied bytes replaced by a proven protected rewrite; those bytes are patched only once. All applicable transfers are rebuilt and unresolved instructions remain unchanged in the output image. Common causes are capturing the process before VMProtect initializes its imports, selecting the wrong VM section, or encountering an unsupported stub form. Let the process reach stable original code and verify the selected sections if the remaining protected transfers matter for execution. --new-entry-rva changes only the rebuilt file and cannot advance the live target.

If no import can be recovered at all, there is no import table to build and vid-linux stops without writing an output file.

No automatic VM section is selected

Run:

./target/release/vid-linux --pid 10856 --list-sections

Then pass one to three executable section numbers or names with --vm-sections.

Permission denied

On Linux, reading another process's memory requires ptrace access or appropriate capabilities. Run vid-linux as the same user as the target process, or use:

sudo setcap cap_sys_ptrace+ep ./target/release/vid-linux

Alternatively, run both the target and vid-linux under the same user.

Limitations

  • The target must remain alive and its protected import state must be initialized and stable while the snapshot is read.
  • Only x86 and x64 PE images are supported.
  • At most three VM sections can be selected in one run.
  • A protected transfer is patched only when a direct rewrite is proven. Unresolved transfers remain unchanged while the rest of the image is rebuilt.
  • vid-linux does not bypass anti-debugging, suspend the target, repair arbitrary packer damage, preserve overlays, or devirtualize protected program code.

License

MIT License. See LICENSE.

Read the rest on GitHub

Scan report · 2026-09-25
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review

From the balcony · 1 of 4 clapped

  1. Cap'm Slopclapped
    README plainly states what it does, how to build it, how it was made (AI-generated Linux port), acknowledges limitations, and provides working build instructions.

Princess, Crusoe and Schnitzel read it and passed. Their reasons are on the balcony, with every other verdict.

Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

0 comments

log in to comment.

report this listing — log in to report