How does server defender scan scripts?

I want to make a simple antivirus plugin. In a script, server defender makes a windows that you can click to scan the script. Does it just read the script name or does it check its contents? How does it know when you’re selecting a script? How does it read its contents (if it does at all).
Could anyone explain?

I think it just looks at script source and searches for require

I have a anti-virus plugin and it works by searching for any blacklisted-tokens such as, getfenv, loadstring, setfenv

Neutron.rbxmx (118.2 KB)

local function ScanScript(container: LuaSourceContainer): {}
	local src = container.Source -- get the script's source
	local threats = {} -- store all of the threats found here
	
	local blacklistedTokensFound = {}

	local lines = src:split('\n') -- get all the lines

	for _, token in BlacklistedTokens do -- loop over all the blacklisted tokens
		if src:find(token) then
			table.insert(blacklistedTokensFound, token) -- insert the token to blacklistedTokenFound
		end
	end
	
	for _, token in blacklistedTokensFound do
		table.insert(threats, {
			threat = Enums.Threats.ForbiddenToken;
			details = '(' .. token .. ')';
		}) -- insert a ForbiddenToken threat to threats table
	end
	
	if (#lines == 1 and #src > 30) then -- if theres only 1 line and more than thirty-characters
		table.insert(threats, {
			threat = Enums.Threats.Obfuscation;
			details = '';
		}) -- insert a Obfuscation threat to the threats table
	end

	return threats -- return all the threats found in the script
end
1 Like

first off I’d recommend checking out roblox creator documents on how to use and make plugin’s. Second when you’re used to and understand the basics of plugin’s you can use selected.Source to check a scripts source code

2 Likes

Doesn’t that just change the script’s content?

You can use myScript.Source to view or change the contents of a script

1 Like

It will return a string that is both readable and editable

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.