Backdoor Scanner
Downloaded a free, cracked or leaked resource? Drop it here before it touches your server. Every Lua file is scanned
for the patterns real backdoors use — code downloaded and run at startup, obfuscated \x and
string.char strings, injected blobs, admin escalation, txAdmin tampering and known malware-panel
hosts. It also spots decompiled and escrow-stripped copies, and lists every outbound address the
resource contacts so you can check them yourself. Nothing is uploaded — the scan runs in your browser.
How server backdoors hide — and what to do
Short, plain explanations of the patterns above. Written by Dispersia; the community reference we learned the most from is credited under each item.
Obfuscated \x / hex strings
Malware rarely writes PerformHttpRequest in plain text — it hides it as
"\x50\x65\x72\x66...", which Lua turns back into the real word at runtime. A normal script has no
reason to spell its own function names in hex. A block of these escapes is the single strongest signal that code
is trying not to be read.
What to do: decode it (this scanner does) and see what it builds. If it rebuilds load,
assert, an event name or a URL, delete the resource.
Reference: JG / Yorick security notes on FiveM backdoors — docs.yorick.gg/Security/Backdoors.
load() / assert(load(...)) runtime loaders
These run code that is assembled while the script starts, so the dangerous part never appears in the file you
read. assert(load(decode(...)))() is the classic backdoor shape: decode a blob, compile it, run it,
all on one line. Legitimate resources almost never build and execute code from a string.
What to do: treat any load/loadstring fed by concatenation, a decoder or a
downloaded string as hostile until proven otherwise.
Reference: docs.yorick.gg/Security/Backdoors.
Hidden HTTP calls (data exfiltration)
PerformHttpRequest to an address that is not the script's own update or license server is how a
backdoor sends your server data — tokens, player counts, connection strings — to its owner. The Cipher
panel, for example, phones home to cipher-panel.me.
No tool can tell a good address from a bad one by its name — the author's licence server and an attacker's
collector look identical. So this scanner does not try. It flags the shape of the attack (a web response
compiled with load(), a URL assembled in hex, known panel hosts) and then simply lists every other
outbound address under the OUTBOUND tab. You are the only one who knows which of them belong.
What to do: read that list. An address you recognise as the author's is fine. One you do not recognise is a reason to ask them — or to remove the resource.
Signatures for the Cipher panel were shared within the MenanAk47 / server-owner community.
os.execute, io.open, io.popen
A FiveM resource has no legitimate need to run shell commands or read and write arbitrary files on the host. These calls let a backdoor install a persistent loader, edit other resources, or run a program on your machine.
What to do: any of these in a gameplay resource is a red flag — verify the exact use or remove it.
Reference: docs.yorick.gg/Security/Backdoors.
Decompiled and “cracked” resources
Most paid FiveM scripts ship under Cfx escrow (a .fxap file). Escrow itself is completely
normal — it is what a resource you bought looks like. A cracked copy is the opposite: somebody ran the
protected code through a decompiler to make it readable again and give it away. The result is unmistakable, because
a decompiler renames every variable to L0_1, A1_2 and so on. No person writes code that way.
A cracked resource does not have to contain a backdoor to be dangerous. It usually arrives with no updates and no support, and it passed through the hands of somebody who could change any line in it before handing it to you. That is why leaked packs are the most common way servers get infected — not because the original script was bad, but because of what was added on the way.
What to do: buy it from the author, or do not run it. If you already did, treat the server as exposed.
Detection thresholds were measured against a real leaked resource and its bought original.
Events that trust the client
A server RegisterNetEvent that hands out money, items or admin rights without checking who fired it
is not a hidden backdoor but an open door: any player can trigger it. This is the most common way servers get
drained. It is a design flaw, not obfuscation, so read the handler, not just the name.
What to do: every money/item/permission event must verify the source server-side. Never trust values the client sends.
Reference: docs.yorick.gg security notes.
This scanner matches known patterns; it cannot prove a resource is safe, only flag the signs of the common ones. Deep obfuscation can still hide. When in doubt, do not run untrusted code on a live server.