Yuari
Documentation
Docs/GC & memory scanning

GC & memory scanning

These functions read the game's own Luau garbage collector structures from outside the process — a powerful way to find tables, values and scripts that normal APIs can't see. They work whether or not the game has an exploitable state.

With no argument, returns GC statistics (same shape as getgc_info). With true, returns a generic-for iterator over every live table in the game's VM (up to 120,000 entries).

for _, tbl in getgc(true) do
    local v = rawget(tbl, "Money")
    if type(v) == "number" then
        print("found:", v)
    end
end

Snapshot of the game's GC state: kb, gcstate, isrunning, pause, stepmul, pages, gray, grayagain, weak, total, by_type, samples, plus the addresses L and G as hex strings.

local info = getgc_info()
print(info.kb, info.isrunning, info.L)

Controls the game's collector directly: "stop" (freeze), "restart" (resume), "count" (total KB), "isrunning", "pause" / "setpause" (get/set, 0–1000), "stepmul" / "setstepmul" (get/set, 0–10000).

setgc("stop")      -- freeze the game's GC
print(setgc("count"))
setgc("restart")   -- resume

Scans all game VMs for tables containing the given string key (or a list of keys), optionally matching a specific string value. Returns table proxies you can index directly. Returns nil, "no game lua state" when no state is found.

local hits = findgc("Leaderstats", "Cash")
for _, tbl in ipairs(hits) do
    print(tbl)
end

Dumps the raw string keys of a game table proxy (read from the hash nodes in memory), paired with their values.

local hits = findgc("Leaderstats")
if hits and hits[1] then
    for key, value in pairs(getrawkeys(hits[1])) do
        print(key, value)
    end
end

Overridden to work on game table proxies as well as normal tables.

local hits = findgc("Leaderstats")
print(hits and rawget(hits[1], "Cash"))

Advanced diagnostics: number of game VMs (vm_count), per-VM stats (G/L addresses, table counts, string-key samples) and ammo_vm — the index of the VM holding the tracked data. Mostly a debugging tool.

local probe = gcprobe()
print(probe.vm_count, probe.ammo_vm)