-- Product Purchase Vulnerability Demonstrator -- Exploits improper purchase validation in vulnerable games local Players = game:GetService("Players") local MarketplaceService = game:GetService("MarketplaceService") local CoreGui = game:GetService("CoreGui") local UserInputService = game:GetService("UserInputService") local HttpService = game:GetService("HttpService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local mouse = player:GetMouse() -- Create ScreenGui local gui = Instance.new("ScreenGui") gui.Name = "ProductExploit" gui.ResetOnSpawn = false gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling -- Try to parent to CoreGui for protection, fallback to PlayerGui pcall(function() gui.Parent = CoreGui end) if not gui.Parent then gui.Parent = player:WaitForChild("PlayerGui") end -- Main Frame local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 400, 0, 350) mainFrame.Position = UDim2.new(0.5, -200, 0.5, -175) mainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 40) mainFrame.BorderSizePixel = 0 mainFrame.Parent = gui -- Top Bar local topBar = Instance.new("Frame") topBar.Size = UDim2.new(1, 0, 0, 30) topBar.BackgroundColor3 = Color3.fromRGB(25, 25, 30) topBar.BorderSizePixel = 0 topBar.Parent = mainFrame -- Title local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -60, 1, 0) title.Position = UDim2.new(0, 5, 0, 0) title.BackgroundTransparency = 1 title.Text = "Product Exploit | Vulnerable Games Only" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextScaled = true title.Font = Enum.Font.SourceSansBold title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = topBar -- Minimize Button local minimizeBtn = Instance.new("TextButton") minimizeBtn.Size = UDim2.new(0, 25, 0, 25) minimizeBtn.Position = UDim2.new(1, -55, 0, 2.5) minimizeBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 50) minimizeBtn.Text = "-" minimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) minimizeBtn.TextScaled = true minimizeBtn.Font = Enum.Font.SourceSansBold minimizeBtn.Parent = topBar -- Close Button local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 25, 0, 25) closeBtn.Position = UDim2.new(1, -27, 0, 2.5) closeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.TextScaled = true closeBtn.Font = Enum.Font.SourceSansBold closeBtn.Parent = topBar -- Content Frame (shown/hidden for minimize) local contentFrame = Instance.new("Frame") contentFrame.Size = UDim2.new(1, 0, 1, -30) contentFrame.Position = UDim2.new(0, 0, 0, 30) contentFrame.BackgroundTransparency = 1 contentFrame.Parent = mainFrame -- Product ID Input local idLabel = Instance.new("TextLabel") idLabel.Size = UDim2.new(0, 100, 0, 30) idLabel.Position = UDim2.new(0, 10, 0, 10) idLabel.BackgroundTransparency = 1 idLabel.Text = "Product ID:" idLabel.TextColor3 = Color3.fromRGB(200, 200, 200) idLabel.TextScaled = true idLabel.Font = Enum.Font.SourceSans idLabel.TextXAlignment = Enum.TextXAlignment.Left idLabel.Parent = contentFrame local idTextBox = Instance.new("TextBox") idTextBox.Size = UDim2.new(0, 270, 0, 30) idTextBox.Position = UDim2.new(0, 110, 0, 10) idTextBox.BackgroundColor3 = Color3.fromRGB(45, 45, 50) idTextBox.BorderSizePixel = 0 idTextBox.Text = "" idTextBox.PlaceholderText = "Enter Product ID or click item below" idTextBox.TextColor3 = Color3.fromRGB(255, 255, 255) idTextBox.TextScaled = true idTextBox.Font = Enum.Font.SourceSans idTextBox.ClearTextOnFocus = false idTextBox.Parent = contentFrame -- Buy Button local buyBtn = Instance.new("TextButton") buyBtn.Size = UDim2.new(0, 180, 0, 35) buyBtn.Position = UDim2.new(0.5, -90, 0, 55) buyBtn.BackgroundColor3 = Color3.fromRGB(60, 180, 60) buyBtn.Text = "EXPLOIT PURCHASE" buyBtn.TextColor3 = Color3.fromRGB(255, 255, 255) buyBtn.TextScaled = true buyBtn.Font = Enum.Font.SourceSansBold buyBtn.Parent = contentFrame -- Products List Frame local listFrame = Instance.new("ScrollingFrame") listFrame.Size = UDim2.new(1, -20, 0, 200) listFrame.Position = UDim2.new(0, 10, 0, 100) listFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 45) listFrame.BorderSizePixel = 0 listFrame.ScrollBarThickness = 4 listFrame.CanvasSize = UDim2.new(0, 0, 0, 0) listFrame.Parent = contentFrame -- Status Label local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(1, -20, 0, 20) statusLabel.Position = UDim2.new(0, 10, 1, -25) statusLabel.BackgroundTransparency = 1 statusLabel.Text = "Ready | Only works on vulnerable games" statusLabel.TextColor3 = Color3.fromRGB(100, 200, 100) statusLabel.TextScaled = true statusLabel.Font = Enum.Font.SourceSans statusLabel.Parent = contentFrame -- Dragging functionality local dragging = false local dragStart = nil local startPos = nil topBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = mainFrame.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart mainFrame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) -- Load developer products local function loadProducts() statusLabel.Text = "Loading products..." statusLabel.TextColor3 = Color3.fromRGB(200, 200, 100) local success, products = pcall(function() return MarketplaceService:GetDeveloperProductsAsync():GetCurrentPage() end) if success and products then local yPos = 5 for _, product in ipairs(products) do local productBtn = Instance.new("TextButton") productBtn.Size = UDim2.new(1, -10, 0, 40) productBtn.Position = UDim2.new(0, 5, 0, yPos) productBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 55) productBtn.BorderSizePixel = 0 productBtn.Text = string.format("%s | ID: %d | %d R$", product.Name or "Unknown", product.ProductId, product.PriceInRobux or 0) productBtn.TextColor3 = Color3.fromRGB(255, 255, 255) productBtn.TextScaled = true productBtn.Font = Enum.Font.SourceSans productBtn.Parent = listFrame productBtn.MouseButton1Click:Connect(function() idTextBox.Text = tostring(product.ProductId) statusLabel.Text = "Selected: " .. (product.Name or "Unknown") statusLabel.TextColor3 = Color3.fromRGB(100, 200, 100) end) yPos = yPos + 45 end listFrame.CanvasSize = UDim2.new(0, 0, 0, yPos) statusLabel.Text = "Products loaded | Select one" statusLabel.TextColor3 = Color3.fromRGB(100, 200, 100) else statusLabel.Text = "No products found in this game" statusLabel.TextColor3 = Color3.fromRGB(200, 100, 100) end end -- Exploit purchase function local function exploitPurchase() local productId = tonumber(idTextBox.Text) if not productId then statusLabel.Text = "Invalid Product ID" statusLabel.TextColor3 = Color3.fromRGB(200, 100, 100) return end statusLabel.Text = "Attempting exploit..." statusLabel.TextColor3 = Color3.fromRGB(200, 200, 100) -- Primary exploit method - SignalPromptProductPurchaseFinished local success1 = pcall(function() MarketplaceService:SignalPromptProductPurchaseFinished( player.UserId, productId, true ) end) -- Secondary method - Fire the signal directly local success2 = pcall(function() for _, connection in pairs(getconnections(MarketplaceService.PromptProductPurchaseFinished)) do connection:Fire(player.UserId, productId, true) end end) -- Tertiary method - Simulate receipt processing local success3 = pcall(function() local receipt = { PlayerId = player.UserId, ProductId = productId, PurchaseId = HttpService:GenerateGUID(false), CurrencyType = Enum.CurrencyType.Robux, CurrencySpent = 0, PlaceIdWherePurchased = game.PlaceId } -- Try to trigger any client-side handlers for _, v in pairs(getgc()) do if type(v) == "function" then local info = debug.getinfo(v) if info.name and string.find(info.name:lower(), "receipt") then pcall(v, receipt) end end end end) if success1 or success2 or success3 then statusLabel.Text = "Exploit sent! Check inventory" statusLabel.TextColor3 = Color3.fromRGB(100, 200, 100) else statusLabel.Text = "Game not vulnerable - uses ProcessReceipt" statusLabel.TextColor3 = Color3.fromRGB(200, 100, 100) end end -- Button connections buyBtn.MouseButton1Click:Connect(exploitPurchase) closeBtn.MouseButton1Click:Connect(function() gui:Destroy() end) local minimized = false minimizeBtn.MouseButton1Click:Connect(function() minimized = not minimized if minimized then contentFrame.Visible = false mainFrame.Size = UDim2.new(0, 400, 0, 30) minimizeBtn.Text = "+" else contentFrame.Visible = true mainFrame.Size = UDim2.new(0, 400, 0, 350) minimizeBtn.Text = "-" end end) -- Load products on start spawn(loadProducts) -- Notification game.StarterGui:SetCore("SendNotification", { Title = "Product Exploit Loaded", Text = "Only works on games with improper purchase handling", Duration = 5 })