live · scanning repos
Scanrepo
github.com
github.com / adybag14-cyber

adybag14-cyber/hermes-agent

Python·16696 files·commit 385ce2f·scanned 4d ago·cached ✓
41/100
SUSPICIOUS
Obfuscation or dynamic code paths detected. Intent unclear — review before running anything.
verdict accurate?
1% file coverage
Desktop app detected
threat-state: suspiciouslive

FINDINGS ░▒▓

criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.apps/bootstrap-installer/src-tauri/src/bootstrap.rs

    let output = std::process::Command::new("git")
        .args(["rev-parse", "HEAD"])
        .current_dir(install_root)
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.apps/bootstrap-installer/src-tauri/src/paths.rs
    // executable before the update handoff reaches LaunchServices/Gatekeeper.
    let _ = Command::new("/usr/bin/xattr")
        .args(["-cr"])
        .arg(path)
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.apps/bootstrap-installer/src-tauri/src/powershell.rs
    // see `windows_powershell_exe`.
    let mut cmd = Command::new(windows_powershell_exe());
    cmd.arg("-NoProfile");
    cmd.arg("-ExecutionPolicy").arg("Bypass");
+8
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.apps/bootstrap-installer/src-tauri/src/update.rs

    unsafe {
        let handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0, pid);
        if handle.is_null() {
+3
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.apps/desktop/scripts/perf/lib/cdp.mjs
  /** Evaluate an expression in the page and return its value (awaits promises). */
  async eval(expression) {
    const r = await this.send('Runtime.evaluate', { expression, returnByValue: true, awai...
+8
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
infoSuspicious file in repoExecutable file (gradlew.bat) in repositoryandroid/gradlew.bat+2
infoSuspicious file in repoVery large source file (595KB) — could contain obfuscated payloadandroid/release-evidence/v0.13.147/performance/phone-compact.host.raw.json+2
infoSuspicious file in repoVery large source file (608KB) — could contain obfuscated payloadandroid/release-evidence/v0.13.147/performance/tablet.host.raw.json+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.

120 files scanned @ 385ce2f | 10/25/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration0
file system access0
obfuscation0
supply chain15
owasp / injection0
telemetry
files 120/16696rules hit 9engine v7commit 385ce2f

github

adybag14-cyber/hermes-agent

The agent that grows with you

Python
231
20
222d
16696 files
120 scanned(1%)
385ce2f

architecture░▒▓

entry (3) flagged (5) pkg (224)
323 nodes · 360 edgesscroll to zoom · click node to jump to finding
SUSPICIOUS (41/100) — adybag14-cyber/hermes-agent — ScanRepo