Hook Library Emulation Script Universal Script, Keyless & Hook Functions 7 No Key

Hook Library Emulation Script Universal Script, Keyless & Hook Functions

Universal • 1 week ago • 7 views

Description

Hook Library Emulation is a keyless universal Roblox script by depso (depthso) designed to emulate hook-library functionality. It provides tools for working with function hooks, including a HookFunction method and an Unpack utility for handling arguments. The listing recommends Delta and includes usage examples in the script.

Key Features

  • Universal Roblox Script
  • Hook Library Emulation
  • Keyless Script
  • No Key Required
  • Direct Execute
  • Verified Creator Badge (as marked on the listing)
  • Function Hook Emulation
  • HookFunction Method
  • Unpack Utility for Function Arguments
  • Example Usage Included
  • Delta Recommended by the Creator

Important Notes

  • The creator states that the script does not protect against checks such as stack-overflow detection.
  • Compatibility may depend on the executor and its supported functions.

Supported Platform

  • Universal Script (Roblox)

Script Information

  • Script Name: Hook library emulation
  • Posted By: depso (depthso)
  • Key System: Keyless
  • Execution: Direct Execute

 

Universal
Game Page
Universal
Roblox
Views 7+
Likes 0
Dislikes 0
Posted 1 week ago
Updated 1 week ago
Key System No
Mobile Supported

Script Preview

307 lines • 7.1 KB
--[[
	@author depso (depthso)
	@description Hook library emulation, used for having middle hooks

	@Examples:
    	local Old; Old = Emulation:HookFunction(true, MyFunction, function(...) 
    		const Args = {...}
    		-- Stuff here
    
            return Emulation:Unpack(Args)
        end)
    
        local Old; Old = Emulation:HookFunction(true, MyFunction, function(Type, ...) 
            if Type == "GetItemData" then
                return { Amount = 67 }
            end
            
            return ...
        end)
    
    	--// Hooks both __namecall and __index call methods
    	local Old; Old = Emulation:HookMetaFunc(game.HttpService, "JSONEncode", true, function(IsNameCall: boolean, ...) 
    		return Old(...)
    	end)
]]

const Module = { -- exposed to gc 🫣
	HookedFunctions = {},
	UnhookedSpoof = {},
	ExeClosureSpoof = {},
	MetaHooks = {},
	UserHooks = {}
}

--// Protected functions (yes this is messy)
const CloneFunc = clonefunction(clonefunction)
const Hookfunc = clonefunction(hookfunction)
const MakeCFunc = clonefunction(newcclosure)
const IsCClosure = clonefunction(iscclosure)
const Unpack = clonefunction(unpack)
const IsHooked = clonefunction(isfunctionhooked)
const RestoreFunc = clonefunction(restorefunction)
const IsExeClosure = clonefunction(isexecutorclosure)
const GetRawMetatable = clonefunction(getrawmetatable)
const GetNameCallMethod = clonefunction(getnamecallmethod)
const Clear = clonefunction(table.clear)
const Maxn = clonefunction(table.maxn)

--// Globals
const GlobalENV = getgenv()

--// types
type self = typeof(Module) -- and do i gaf to complete this type? no... fuk u
type closure = (...any) -> ...any

@native function Module.Unpack(self: self, Args, Length: number?)
	return Unpack(Args, 1, Length or Maxn(Args))
end

function Module.CallReal(self: self, Func: closure)
	const HookedFunctions = self.HookedFunctions

	--// Call unhooked
	const Unhooked = HookedFunctions[Func]
	if Unhooked then 
		return Unhooked()
	end

	--// Call normally if there's no hook
	return Func()


    -- get baited this function is never used 🤡
end

function Module.HookFunction(self: self, HardArgs: boolean?, Func: closure, NewFunc: closure?)
	if not Func then return end

	const UserHooks = self.UserHooks
	const HookedFunctions = self.HookedFunctions
	const Cloned = CloneFunc(Func)
	
	const Callback = function(...)
		const Userhook = UserHooks[Func]

		--// Check for an intercept
		if NewFunc then
			if HardArgs then
				return NewFunc(...)
			else -- Unpacking has a limit
				const Responce = {NewFunc(...)}
				if #Responce > 0 then
					return self:Unpack(Responce)
				end
			end
		end

		--// Pass to the hook made by the user
		if Userhook then
			return Userhook(...)
		end

		--// Unaffected
		return Cloned(...)
	end

	--// Hook function
	const Old = Hookfunc(Func, MakeCFunc(Callback))
	HookedFunctions[Func] = Old

	return Old
end

function Module.HookMetaMethod(self: self, Method: string, Callback: closure): closure
	const Func = GetRawMetatable(game)[Method]
	return self:HookFunction(false, Func, Callback)
end

function Module.HookMetaFunc(self: self, Object: Instance, Method: string, HardArgs: boolean, Callback: closure)
	local Methods = self.MetaHooks[Object]
	const Success, Function = pcall(function()
		return Object[Method]
	end)

	--// Check if the method exists
	if not Success then
		return
	end

	--// Check if the object has a methods dict
	if not Methods then
		Methods = {}
		self.MetaHooks[Object] = Methods
	end

	const Wrapped = MakeCFunc(Callback)
	
	--// Asign function to method call
	Methods[Method] = MakeCFunc(function(...)
		return Wrapped(true, ...)
	end)

	--// Hook __index method aka function
	return self:HookFunction(HardArgs, Function, MakeCFunc(function(...)
		return Wrapped(false, ...)
	end))
end

function Module.ProtectFunction(self: self, Func: closure)
	self:HookFunction(false, Func)
end

function Module.IsProtectedFunction(self: self, Func: closure): boolean
	return self.HookedFunctions[Func] ~= nil
end

function Module.SpoofUnhooked(self: self, Func: closure)
	self.UnhookedSpoof[Func] = true
end
function Module.SpoofExeClosure(self: self, Func: closure)
	self.ExeClosureSpoof[Func] = true
end

function Module.Export(self: self, Names: { string }, Func: closure)
	for _, Name in Names do
		--// Check if the executor has that function
		const OriginalFunc = GlobalENV[Name]
		if not OriginalFunc then continue end

		--// Prevent hooking
		self:ProtectFunction(OriginalFunc)
		
		--// Clone function
		const Closure = MakeCFunc(CloneFunc(Func))

		--// Patch closure type
		if IsExeClosure(OriginalFunc) then
			self:SpoofExeClosure(Closure)
		end

		--// Set new function
		GlobalENV[Name] = Closure
	end

	--// Offload to gc
	Clear(Names)
end

--// clonefunction patch
do
	Module:Export({"clonefunction", "clonefunc", "replaceclosure"}, function(Func: closure)
		--// Allow passthrough if the function is not protected
		const HookProtected = Module:IsProtectedFunction(Func)
		if not HookProtected then 
			return CloneFunc(Func)
		end

		--// New function
		const New = @native function(...)
			return Func(...)
		end

		--// Convert closure type accordingly

		--// C closure
		if IsCClosure(Func) then
			return MakeCFunc(New)

		--// Lua closure
		else
			return New
		end
	end)
end

--// hookfunction patch
do
	Module:Export({"hookfunction", "hookfunc"}, function(Func: closure, Hook)
		--// Allow passthrough if the function is not protected
		local HookProtected = Module:IsProtectedFunction(Func)
		if not HookProtected then 
			return Hookfunc(Func, Hook)
		end

		--// Set hook
		Module.UserHooks[Func] = Hook

		--// Pretend to return unhooked
		local FakeUnhooked = CloneFunc(Func)
		Module:SpoofUnhooked(FakeUnhooked)

		return FakeUnhooked
	end)
end

--// isfunctionhooked patch
do
	Module:Export({"isfunctionhooked"}, function(Func: closure)
		--// Check for user hook
		if Module.UserHooks[Func] then return true end

		--// Check for spoof
		if Module.UnhookedSpoof[Func] then return false end

		--// Check for protected
		const HookProtected = Module:IsProtectedFunction(Func)
		if HookProtected then return false end

		return IsHooked(Func)
	end)
end

--// restorefunction patch
do
	Module:Export({"restorefunction", "restorefunc"}, function(Func: closure)
		--// Check for user hook
		const UserHook = Module.UserHooks[Func]
		if UserHook then
			Clear(UserHook)
			Module.UserHooks[Func] = nil
			return
		end

		--// Check for protected
		const HookProtected = Module:IsProtectedFunction(Func)
		if HookProtected then 
			return 
		end

		--// Pass
		return RestoreFunc(Func)
	end)
end

--// isexecutorclosure patch
do 
	Module:Export({"isexecutorclosure"}, function(Func: closure)
		--// Check for user hook
		const Spoof = Module.ExeClosureSpoof[Func]
		if Spoof then 
			return false
		end

		--// Pass
		return IsExeClosure(Func)
	end)
end

--// __namecall patch
do 
	Module:HookMetaMethod("__namecall", function(self: game, ...)
		const Method = GetNameCallMethod()
		const Methods = Module.MetaHooks[self]
		const Func = Methods and Methods[Method]

		--// Intercept
		if Func then
			return Func(self, ...)
		end
		return
	end)
end

-- but saar this is detected by using getgc(true)
-- > stfu go exclude it from results nerd 🖕

return Module

How to Use This Script

1

Open Your Executor

Launch a supported executor and attach it to a running Roblox session.

2

Copy the Script

Click the Copy button above. The full loadstring is placed on your clipboard instantly.

3

Paste & Execute

Paste it into the executor and hit Execute. The hub window opens inside the game.

Compatible Executors

Comments

0
Join the discussion about this script.

No comments yet. Be the first to comment!