Challenge of implementing Pengu Core in Rust 🦀
The choice of programming language for a core library is a matter of preference and practicality. The key is to leverage the language's strengths to create a robust, efficient, and maintainable library that seamlessly integrates into the application's ecosystem.
- UTF-8 strings
- Filesystem support
- C++ FFI & bindgen
- Mono codebase for cross-platform
- Bootstrapper
- IFEO mode
- Symlink mode
- Handmade hooks
- Plugin assets
- Custom imports
- Preload scripts
- Basic user plugins
- Cross-platform
- Windows
- macOS
Your pull-requests are welcome!
Refer to Pengu Loader source code.
Rust Bindgen is a good thing to generate bindings from C++ headers, see the build.rs
.
A new Pengu docs will release soon to help you to understand the architecture and how it works.
cargo build
To build in production mode, just add --release
to the command above.
After your successful build, you will see the core.dll
in the folder target/debug
or target/release
according to your build mode above.
This DLL is compatible with the current Pengu Loader app, so you just replace it in the app folder.
If you prefer to manual install using IFEO method, run this command in elevated cmd
.
set "dval=rundll32 \"path\to\core.dll\", #6000"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LeagueClientUx.exe" /v Debugger /t REG_SZ "%dval%"
Use lldb
or VSCode extension to attach to the running LeagueClientUx.exe
or LeagueClientUxRenderer.exe
.