Protection

Resource Scanner

Upload a resource's Lua files and get a report of the exploits a cheat menu would be sold to abuse in it, before it goes on your server. Nothing you upload is stored.

What it looks for

The scanner reads each file the way an attacker does: it finds every handler a client can reach — net events, callbacks, commands, NUI callbacks — and follows what the client's arguments touch. Money, items, weapons, admin actions, SQL, code execution and entity control reached by a value the client chose are the findings. Code that merely mentions money is not.

FindingSeverityWhat it means
rce_from_eventcriticalClient input reaches load() or loadstring(). Anyone can run code on your server.
money_from_clientcriticalAn amount the client sent is added to a player. The classic bank exploit.
item_from_clientcriticalAn item name or count the client sent is granted.
weapon_from_clientcriticalA weapon the client named is given.
sql_concatcriticalA client value is concatenated into a query instead of parameterised.
admin_no_permissioncriticalA kick, ban or similar action with no permission check at all.
shell_execcriticalos.execute or io.popen anywhere in the file.
admin_target_from_clienthighThe permission is checked, but the client still chooses who the action lands on.
entity_from_clienthighAn entity chosen by the client is deleted, moved or modified.
outbound_httphighThe script talks to a third-party URL. Backdoors phone home; so do some licence checks.
obfuscated_string / encoded_blob / char_assemblyhighPayloads hidden in escaped decimals, base64 blobs or string.char() — how backdoors hide from a grep.
hardcoded_secretmediumA token, key or password in the source.
broadcast_sensitivemediumSensitive data sent to every client with -1.
no_validationmediumA handler that uses its arguments without checking their type.
nui_passthroughlowA NUI callback forwards its payload to the server unchecked. Only matters if the server trusts it.

Reading the score

The score starts at 100 and each finding takes points by severity, but it is also capped by the worst thing found: a single remote-code-execution finding cannot score above 20 whatever else is clean, because one of those is enough. The verdict bands run from clean through review-worthy to dangerous.

Using it

Open Scanner in the panel, drop the resource's .lua files in — up to 60 files, 512 KB each, 3 MB in total — and read the report. Each finding names the file, the line, the handler it lives in and the argument the attacker controls:

text
server/main.lua:14  money_from_client  critical
  event "bank:deposit" — amount reaches Player.Functions.AddMoney unchecked

The fix is nearly always the same: decide the value on the server. A payout the server computes cannot be chosen by the client, whatever the menu sends.

Argus dogfoods this on its own resource on every release; the anti-cheat scores 100 with zero findings across its own handlers.