Release 1.3.18
What's New in 1.3.18
Now massively better tested.
🆕 New Feature
- Autodetect more Libraries - Many more libraries such as glimmer and even TK are automatically detected and included into the .exe
- IRB as
.exe— IRB can now be shipped as a standalone.exefile - Ruby 4.0 support — Full compatibility with Ruby 4.0
- Ruby 3.2+ support — Ruby 3.2 and above now fully supported; Ruby 3.0 and 3.1 are no longer supported
- Windows Authenticode signing — The stub now detects and skips PE security directory entries when searching for the OCRAN signature, enabling correct unpacking of signed executables. Build time also clears invalid security directory entries to allow subsequent signing
- Bundled
cacert.pem— Included in the.exeto prevent SSL certificate verification failures - Full UTF-16 Win32 API usage —
system_utils.cnow uses wide (W) variants throughout (CreateFileW,CreateDirectoryW,DeleteFileW,FindFirstFileW/FindNextFileW,RemoveDirectoryW,GetFileAttributesW,MoveFileExW,GetTempPathW,CreateProcessW) for correct handling of multibyte (UTF-8) paths
🐛 Bug Fixes
- SxS error 14001 — Fixed crash when loading native extensions (e.g.
openssl.so,date_core.so). Companion*.so-assembly.manifestfiles inarchdirare now included alongside their.sofiles; all files inruby_builtin_dlls/(DLLs and manifests) are now included GetModuleFileNameWbuffer size — Fixed incorrect byte size being passed instead of character count inLibraryDetector- Pointer underflow in stub unpacker — Fixed subtraction underflow when a tampered offset places
headpasttail - Icon bounds checking — Added bounds checking for icon file entries in
ediconto prevent out-of-bounds reads from malformed.icofiles - Duplicate
MessageBoxdialogs — Fixed issue where two dialogs appeared in GUI mode when a signature was not found
🔧 Stub Improvements
- Suppress user notifications during cleanup; errors are now logged to
DEBUGoutput only - No longer creates a marker file when the stub fails to delete the installation directory
- During cleanup, switches to a safer working directory before removing the extraction directory
- Error messages from the stub are now truncated to a fixed maximum length
- Extraction directory name now follows
mkdtempstyle, generated using secure random numbers - Disabled path expansion of template characters for additional options passed to the script
- Working directory switch now uses Ruby's
-Coption