Replace patchelf crack with Freeloader LD_PRELOAD approach

- Multi-stage Dockerfile: discover patterns from PMS binary (capstone),
  compile .so with zig (musl), layer onto lscr.io/linuxserver/plex
- Uses LD_PRELOAD instead of patchelf (which corrupts Plex's musl loader)
- Auto-discovery: broad structural patterns with string-anchored fallback
  (//feature) and relationship-based fallback (BITSET_REF within BS_INIT)
- hook.cpp uses __has_include for generated patterns with hardcoded fallbacks
- Custom wrapper.sh (no traffic_logger preload)
- Vendored Freeloader source (github.com/authrequest/Freeloader, AGPL-3.0)
- Removed stale plexmediaserver_crack.so binary
- Supports Plex 1.43.3+ (verified against 1.43.2 and 1.43.3)
This commit is contained in:
benjamin committed 2026-08-19 22:33:42 +02:00
1 parent 4399a8288d
commit 72f4661bdc
72 files changed
+77927 -17

No files matched your search

+76
View File
@@ -0,0 +1,76 @@
# .dockerignore — keep the Docker build context small.
#
# Both docker/Dockerfile.* only need: build.sh, src/, third_party/.
# Everything else is excluded so the daemon doesn't ship big/unrelated
# files into the buildkit context.
# VCS / secrets
.git
.gitattributes
.mcp.json
.env
.env.*
# Build outputs and toolchain
build/
Build/
build-*/
dist/
toolchain/
compile_commands.json
# Compiled artifacts
*.o
*.obj
*.lo
*.a
*.so
*.so.*
*.dll
*.dylib
*.exe
*.out
# Plex binaries / IDA DBs
libsoci_core.so
Plex_Media_Server
*.i64
*.idb
*.id0
*.id1
*.id2
*.nam
*.til
# Subprojects not part of the build
windows/
plex_relay/
experimental/
scripts/
docs/
# Docs and meta
AGENTS.md
README.md
LICENSE
.gitattributes
# Python cruft
__pycache__/
*.py[cod]
.pytest_cache/
.mypy_cache/
.ruff_cache/
.venv/
venv/
# OS / editor
.DS_Store
Thumbs.db
.idea/
.vscode/
.cache/
*.tmp
*.log
*.bak
*.swp